Skip to content
Permalink
Browse files

Merge branch 'release/1.10.x'

  • Loading branch information
rdb committed Mar 19, 2020
2 parents 244c880 + c9f14a1 commit c185de301822086eab1f00aa323de2620402aecd
@@ -24,9 +24,9 @@ Installing Panda3D
==================

The latest Panda3D SDK can be downloaded from
[this page](https://www.panda3d.org/download/sdk-1-10-5/).
[this page](https://www.panda3d.org/download/sdk-1-10-6/).
If you are familiar with installing Python packages, you can use
the following comand:
the following command:

```bash
pip install panda3d
@@ -64,8 +64,8 @@ depending on whether you are on a 32-bit or 64-bit system, or you can
[click here](https://github.com/rdb/panda3d-thirdparty) for instructions on
building them from source.

- https://www.panda3d.org/download/panda3d-1.10.5/panda3d-1.10.5-tools-win64.zip
- https://www.panda3d.org/download/panda3d-1.10.5/panda3d-1.10.5-tools-win32.zip
- https://www.panda3d.org/download/panda3d-1.10.6/panda3d-1.10.6-tools-win64.zip
- https://www.panda3d.org/download/panda3d-1.10.6/panda3d-1.10.6-tools-win32.zip

After acquiring these dependencies, you can build Panda3D from the command
prompt using the following command. Change the `--msvc-version` option based
@@ -117,7 +117,7 @@ sudo apt-get install build-essential pkg-config fakeroot python-dev libpng-dev l
```

Once Panda3D has built, you can either install the .deb or .rpm package that
it produced, depending on which Linux distribution you are using. For example,
is produced, depending on which Linux distribution you are using. For example,
to install the package on Debian or Ubuntu, use this:

```bash
@@ -136,7 +136,7 @@ macOS
-----

On macOS, you will need to download a set of precompiled thirdparty packages in order to
compile Panda3D, which can be acquired from [here](https://www.panda3d.org/download/panda3d-1.10.5/panda3d-1.10.5-tools-mac.tar.gz).
compile Panda3D, which can be acquired from [here](https://www.panda3d.org/download/panda3d-1.10.6/panda3d-1.10.6-tools-mac.tar.gz).

After placing the thirdparty directory inside the panda3d source directory,
you may build Panda3D using a command like the following:
@@ -212,7 +212,7 @@ Running Tests

Install [PyTest](https://docs.pytest.org/en/latest/getting-started.html#installation)
and run the `pytest` command. If you have not installed Panda3D, you will
need to configure your enviroment by pointing the `PYTHONPATH` variable at
need to configure your environment by pointing the `PYTHONPATH` variable at
the `built` directory. On Linux, you will also need to point the
`LD_LIBRARY_PATH` variable at the `built/lib` directory.

@@ -1,3 +1,57 @@
------------------------ RELEASE 1.10.6 -----------------------

This is a recommended bugfix release that adds additional stability fixes.

Stability
* Fix deployment system to work properly with pip 20
* Fix multithreading crash when garbage collecting render states (#499)
* Fix crashes when hotplugging USB device on macOS Catalina (#847)
* Fix crash when using Python OpenSSL module with wheel build of Panda3D (#851)
* Fix a memory leak in task system in Python 3 (#873)
* Fix detection for convex angles in visible geometry in collision system (#879)
* Fix regression in 1.10.4 when overriding verticalScroll_frameSize (#864)
* Fix DirectScrolledList scrollTo error in Python 3 (#880)

Shaders
* Fix OpenGL shaders not being properly applied across multiple buffers
* Proper handling of texture rotations applied to normal maps (#808)
* "//Cg profile" no longer affects subsequent shader loads (#863)
* Add support for custom vertex columns when munging points to quads (#870)
* Workaround for GLSL p3d_TextureMatrix[] input giving GL error on macOS (#846)
* Fix ShaderTerrainMesh disappearing when enabling compressed-textures

Input
* Fix MouseWatcherRegion leave event sometimes being fired twice (#858)
* Fix odd behavior when pressing multiple mouse buttons during capture (#843)
* Fix support for dead key input on some X11 servers
* Fix raw key events being sent down repeatedly when holding key on X11 (#874)
* Numpad keys are no longer included in get_keyboard_map() on X11
* Add labels to some keys in get_keyboard_map() on X11
* Properly use cursor hotspot when loading custom cursor on macOS (#845)
* Loading custom cursor on macOS now properly resolves against model-path

Animation
* unloadAnims no longer removes all control effects, only for given anims (#853)
* AnimChannelScalarTable (for morph animations) is now exposed to Python
* It's now possible to create a CharacterSlider with default value

Pipeline
* Fix assertion errors when model-cache-dir cannot be created (#790)
* Textures with clear colors are no longer stripped from bam files (#844)
* Support texture clear colors in bam files (requires "bam-version 6 45" in PRC)
* Fix bam2egg skinning bug for models with default poses on joints
* bam2egg supports multitexturing and multiple UV sets

Build system
* Add missing --cggl-incdir and --cggl-libdir options in makepanda
* Reduce library size by not exporting symbols of linked static libraries
* Wheels no longer unnecessarily include libpythonX.Y.a (#839)
* makepanda now auto-disables plug-ins in Config.prc that were not compiled in
* Fix refcounting of returned ReferenceCount-like objects in interrogate
* Fix inability to build a .whl on Ubuntu
* Fix erratic build failure in dcParser code
* Fix compilation using Windows 8.1 SDK

------------------------ RELEASE 1.10.5 -----------------------

This is a recommended bugfix release, especially for macOS users.
@@ -442,10 +442,12 @@ test_intersection_from_sphere(const CollisionEntry &entry) const {
LVector3 normal = (has_effective_normal() && sphere->get_respect_effective_normal()) ? get_effective_normal() : get_normal();
#ifndef NDEBUG
if (!IS_THRESHOLD_EQUAL(normal.length_squared(), 1.0f, 0.001)) {
collide_cat.info()
<< "polygon within " << entry.get_into_node_path()
<< " has normal " << normal << " of length " << normal.length()
<< "\n";
if (collide_cat.is_info()) {
collide_cat.info()
<< "polygon within " << entry.get_into_node_path()
<< " has normal " << normal << " of length " << normal.length()
<< "\n";
}
normal.normalize();
}
#endif
@@ -9951,9 +9951,11 @@ do_write_datagram_header(CData *cdata, BamWriter *manager, Datagram &me, bool &h
<< "Unsupported bam-texture-mode: " << (int)file_texture_mode << "\n";
}

if (filename.empty() && do_has_bam_rawdata(cdata)) {
// If we don't have a filename, we have to store rawdata anyway.
has_rawdata = true;
if (filename.empty()) {
if (do_has_bam_rawdata(cdata) || cdata->_has_clear_color) {
// If we don't have a filename, we have to store rawdata anyway.
has_rawdata = true;
}
}

me.add_string(get_name());
@@ -10023,6 +10025,13 @@ do_write_datagram_body(CData *cdata, BamWriter *manager, Datagram &me) {
me.add_uint32(cdata->_simple_ram_image._image.size());
me.append_data(cdata->_simple_ram_image._image, cdata->_simple_ram_image._image.size());
}

if (manager->get_file_minor_ver() >= 45) {
me.add_bool(cdata->_has_clear_color);
if (cdata->_has_clear_color) {
cdata->_clear_color.write_datagram(me);
}
}
}

/**
@@ -10046,11 +10055,31 @@ do_write_datagram_rawdata(CData *cdata, BamWriter *manager, Datagram &me) {
me.add_uint8(cdata->_component_type);
me.add_uint8(cdata->_component_width);
me.add_uint8(cdata->_ram_image_compression);
me.add_uint8(cdata->_ram_images.size());
for (size_t n = 0; n < cdata->_ram_images.size(); ++n) {
me.add_uint32(cdata->_ram_images[n]._page_size);
me.add_uint32(cdata->_ram_images[n]._image.size());
me.append_data(cdata->_ram_images[n]._image, cdata->_ram_images[n]._image.size());

if (cdata->_ram_images.empty() && cdata->_has_clear_color &&
manager->get_file_minor_ver() < 45) {
// For older .bam versions that don't support clear colors, make up a RAM
// image.
int image_size = do_get_expected_ram_image_size(cdata);
me.add_uint8(1);
me.add_uint32(do_get_expected_ram_page_size(cdata));
me.add_uint32(image_size);

// Fill the image with the clear color.
unsigned char pixel[16];
const int pixel_size = do_get_clear_data(cdata, pixel);
nassertv(pixel_size > 0);

for (int i = 0; i < image_size; i += pixel_size) {
me.append_data(pixel, pixel_size);
}
} else {
me.add_uint8(cdata->_ram_images.size());
for (size_t n = 0; n < cdata->_ram_images.size(); ++n) {
me.add_uint32(cdata->_ram_images[n]._page_size);
me.add_uint32(cdata->_ram_images[n]._image.size());
me.append_data(cdata->_ram_images[n]._image, cdata->_ram_images[n]._image.size());
}
}
}

@@ -10268,6 +10297,13 @@ do_fillin_body(CData *cdata, DatagramIterator &scan, BamReader *manager) {
cdata->_simple_ram_image._page_size = u_size;
cdata->inc_simple_image_modified();
}

if (manager->get_file_minor_ver() >= 45) {
cdata->_has_clear_color = scan.get_bool();
if (cdata->_has_clear_color) {
cdata->_clear_color.read_datagram(scan);
}
}
}

/**
@@ -206,6 +206,7 @@ bool ShaderTerrainMesh::do_check_heightfield() {
void ShaderTerrainMesh::do_init_data_texture() {
_data_texture = new Texture("TerrainDataTexture");
_data_texture->setup_2d_texture(stm_max_chunk_count, stm_max_views, Texture::T_float, Texture::F_rgba32);
_data_texture->set_compression(Texture::CM_off);
_data_texture->set_clear_color(LVector4(0));
_data_texture->clear_image();
}
@@ -32,6 +32,7 @@ static const unsigned short _bam_major_ver = 6;
// Bumped to major version 6 on 2006-02-11 to factor out PandaNode::CData.

static const unsigned short _bam_first_minor_ver = 14;
static const unsigned short _bam_last_minor_ver = 45;
static const unsigned short _bam_minor_ver = 44;
// Bumped to minor version 14 on 2007-12-19 to change default ColorAttrib.
// Bumped to minor version 15 on 2008-04-09 to add TextureAttrib::_implicit_sort.
@@ -64,5 +65,6 @@ static const unsigned short _bam_minor_ver = 44;
// Bumped to minor version 42 on 2016-04-08 to expand ColorBlendAttrib.
// Bumped to minor version 43 on 2018-12-06 to expand BillboardEffect and CompassEffect.
// Bumped to minor version 44 on 2018-12-23 to rename CollisionTube to CollisionCapsule.
// Bumped to minor version 45 on 2020-03-18 to add Texture::_clear_color.

#endif
@@ -107,7 +107,7 @@ init() {
// can't safely load the file.
if (_file_major != _bam_major_ver ||
_file_minor < _bam_first_minor_ver ||
_file_minor > _bam_minor_ver) {
_file_minor > _bam_last_minor_ver) {
bam_cat.error()
<< "Bam file is version " << _file_major << "." << _file_minor
<< ".\n";
@@ -120,7 +120,7 @@ init() {
bam_cat.error()
<< "This program can only load version "
<< _bam_major_ver << "." << _bam_first_minor_ver << " through "
<< _bam_major_ver << "." << _bam_minor_ver << " bams.\n";
<< _bam_major_ver << "." << _bam_last_minor_ver << " bams.\n";
}

return false;
@@ -80,18 +80,18 @@ BamWriter(DatagramSink *target) :
_file_minor = 21;
bam_version.set_string_value("6 21");

} else if (_file_major > _bam_major_ver || _file_minor > _bam_minor_ver) {
} else if (_file_major > _bam_major_ver || _file_minor > _bam_last_minor_ver) {
util_cat.error()
<< "bam-version is set to " << bam_version << ", but this version of "
"Panda3D cannot produce .bam files newer than " << _bam_major_ver
<< "." << _bam_minor_ver << ". Set bam-version to a supported "
<< "." << _bam_last_minor_ver << ". Set bam-version to a supported "
"version or leave it blank to write version " << _bam_major_ver
<< "." << _bam_minor_ver << " files.\n";
<< "." << _bam_last_minor_ver << " files.\n";

_file_major = _bam_major_ver;
_file_minor = _bam_minor_ver;
_file_minor = _bam_last_minor_ver;
bam_version.set_word(0, _bam_major_ver);
bam_version.set_word(1, _bam_minor_ver);
bam_version.set_word(1, _bam_last_minor_ver);
}
} else {
_file_major = _bam_major_ver;
@@ -157,7 +157,7 @@ init() {
_long_pta_id = false;

nassertr_always(_file_major == _bam_major_ver, false);
nassertr_always(_file_minor <= _bam_minor_ver && _file_minor >= 21, false);
nassertr_always(_file_minor <= _bam_last_minor_ver && _file_minor >= 21, false);

_file_endian = bam_endian;
_file_texture_mode = bam_texture_mode;
@@ -990,18 +990,29 @@ release(ButtonHandle button) {
// Button up. Send the up event associated with the region(s) we were
// over when the button went down.

// There is some danger of losing button-up events here. If more than one
// button goes down together, we won't detect both of the button-up events
// properly.
if (_preferred_button_down_region != nullptr) {
param.set_outside(_preferred_button_down_region != _preferred_region);
_preferred_button_down_region->release(param);
throw_event_pattern(_button_up_pattern,
_preferred_button_down_region, button);
}

_button_down = false;
_preferred_button_down_region = nullptr;
// Do not stop capturing until the last mouse button has gone up. This is
// needed to prevent stopping the capture until the capturing region has
// finished processing all the releases.
bool has_button = false;
for (size_t i = 0; i < MouseButton::num_mouse_buttons; ++i) {
if (MouseButton::_buttons[i] != button &&
_current_buttons_down.get_bit(MouseButton::_buttons[i].get_index())) {
has_button = true;
}
}

if (!has_button) {
// The last mouse button went up.
_button_down = false;
_preferred_button_down_region = nullptr;
}

} else {
// It's a keyboard button; therefore, send the event to every region that

0 comments on commit c185de3

Please sign in to comment.
You can’t perform that action at this time.