Again, all this does is affect the 4-years-disused OTP system, leaving
the CMU system entirely untouched.
This changes the packet formatting in several of distributed's helper
classes.
I imagine very few Panda3D users depend on the message numbers having
particular values. The ones removed belonged to Disney's OTP system,
which hasn't been used by anybody in over 4 years.
At any rate, old code should continue to work, just at the cost of
compatibility between clients and servers running different P3D versions.
This prevents exposed joints from not being affected by a transform directly on the Character node. See panda3d/panda3d#221 for more details.
Fixes#221
Allows accessing `base` object and several other builtins from the ShowBaseGlobal module.
It doesn't bother with builtins that are available as members of the base object such as `render` and `loader`.
Fixes#182
The actual bundling is currently commented out in the bottom of
build_apps.build_runtimes(). Generating the .app was tested from a Linux
host and looks mostly correct upon a visual inspection of the contents.
However, no testing was done for actually running the .app on macOS,
which is why it is commented out. This was also not tested on Python 2.
There are also some TODO comments that need to be addressed.
- Do not take into accound SBS if it is not enabled
- Always return value for getSize()
- Properly handle SBS for window-events
- Redo positioning of aspect2d(p) markers exactly as
they are created when adjusting aspect ratio
Signed-off-by: deflected <deflected@users.noreply.github.com>
This introduces AsyncFuture as a new base class of AsyncTask. It's modelled after asyncio's Future class, except that it is thread-safe and you can use result() to block the current thread waiting for the future to finish (of course this is not necessary for use with coroutines).
AsyncFuture should be used for any operation that finishes in the future, to get the benefit of awaitability within coroutines as well as a standard interface for querying status and results of the operation as well as cancelling it. As such, it's been implemented in various places, including texture.prepare() and win.trigger_copy().
Note that AsyncFuture is intended to be used *once*; it cannot be used more than once. As an example of how this works, tex.prepare() will return the same future as long as the prepare isn't complete, but when it is done, subsequent calls to tex.prepare() will return a new future.