From ba8c1f032533259ddd68c68dd8e3b93ab841a17b Mon Sep 17 00:00:00 2001 From: rdb Date: Wed, 31 Aug 2022 13:50:10 +0200 Subject: [PATCH 01/14] dist: Fix finding sysconfigdata module in Python 3.6 and 3.7 Also fix fatal error when sysconfigdata module isn't found (may be use of older wheels), just report it as a missing module Fixes #1326 for Python 3.6 and 3.7 --- direct/src/dist/FreezeTool.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/direct/src/dist/FreezeTool.py b/direct/src/dist/FreezeTool.py index 6c9d382a5d..f50b0cd927 100644 --- a/direct/src/dist/FreezeTool.py +++ b/direct/src/dist/FreezeTool.py @@ -1217,22 +1217,31 @@ class Freezer: # Special case for sysconfig, which depends on a platform-specific # sysconfigdata module on POSIX systems. - if 'sysconfig' in self.mf.modules: + missing = [] + if 'sysconfig' in self.mf.modules and \ + ('linux' in self.platform or 'mac' in self.platform): + modname = '_sysconfigdata' if sys.version_info >= (3, 6): + modname += '_' + if sys.version_info < (3, 8): + modname += 'm' + if 'linux' in self.platform: arch = self.platform.split('_', 1)[1] - self.__loadModule(self.ModuleDef('_sysconfigdata__linux_' + arch + '-linux-gnu', implicit=True)) + modname += '_linux_' + arch + '-linux-gnu' elif 'mac' in self.platform: - self.__loadModule(self.ModuleDef('_sysconfigdata__darwin_darwin', implicit=True)) - elif 'linux' in self.platform or 'mac' in self.platform: - self.__loadModule(self.ModuleDef('_sysconfigdata', implicit=True)) + modname += '_darwin_darwin' + + try: + self.__loadModule(self.ModuleDef(modname, implicit=True)) + except: + missing.append(modname) # Now, any new modules we found get added to the export list. for origName in list(self.mf.modules.keys()): if origName not in origToNewName: self.modules[origName] = self.ModuleDef(origName, implicit = True) - missing = [] for origName in self.mf.any_missing_maybe()[0]: if origName in startupModules: continue From 88ba7badd4e2b7fec012c0df1997230ecfacab2e Mon Sep 17 00:00:00 2001 From: rdb Date: Wed, 31 Aug 2022 16:17:18 +0200 Subject: [PATCH 02/14] collide: Fix false negative when sphere is fully inside box Fixes #1335 --- panda/src/collide/collisionBox.cxx | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/panda/src/collide/collisionBox.cxx b/panda/src/collide/collisionBox.cxx index 168844f37a..3e80650d6b 100644 --- a/panda/src/collide/collisionBox.cxx +++ b/panda/src/collide/collisionBox.cxx @@ -230,10 +230,12 @@ test_intersection_from_sphere(const CollisionEntry &entry) const { bool intersect; LPlane plane; LVector3 normal; + bool fully_inside = true; for(ip = 0, intersect = false; ip < 6 && !intersect; ip++) { plane = get_plane( ip ); if (_points[ip].size() < 3) { + fully_inside = false; continue; } if (wrt_prev_space != wrt_space) { @@ -248,6 +250,7 @@ test_intersection_from_sphere(const CollisionEntry &entry) const { // moving in the same direction as the plane's normal. PN_stdfloat dot = delta.dot(plane.get_normal()); if (dot > 0.1f) { + fully_inside = false; continue; // no intersection } @@ -304,13 +307,19 @@ test_intersection_from_sphere(const CollisionEntry &entry) const { if (!plane.intersects_line(dist, from_center, -(plane.get_normal()))) { // No intersection with plane? This means the plane's effective normal // was within the plane itself. A useless polygon. + fully_inside = false; continue; } - if (dist > from_radius || dist < -from_radius) { - // No intersection with the plane. + if (dist > from_radius) { + // Fully outside this plane, there can not be an intersection. + return nullptr; + } + if (dist < -from_radius) { + // Fully inside this plane. continue; } + fully_inside = false; LPoint2 p = to_2d(from_center - dist * plane.get_normal(), ip); PN_stdfloat edge_dist = 0.0f; @@ -366,8 +375,9 @@ test_intersection_from_sphere(const CollisionEntry &entry) const { } intersect = true; } - if( !intersect ) + if (!fully_inside && !intersect) { return nullptr; + } if (collide_cat.is_debug()) { collide_cat.debug() From 105f9abbfae7993a0c05ff7e0a676127d181bab2 Mon Sep 17 00:00:00 2001 From: LD Date: Sun, 6 Mar 2022 20:27:56 +0100 Subject: [PATCH 03/14] cocoadisplay: Trigger handle_move_event() when a resize event is received to also update the origin of the window if needed --- panda/src/cocoadisplay/cocoaPandaWindowDelegate.mm | 1 + 1 file changed, 1 insertion(+) diff --git a/panda/src/cocoadisplay/cocoaPandaWindowDelegate.mm b/panda/src/cocoadisplay/cocoaPandaWindowDelegate.mm index 7e39748bd1..17fae241f3 100644 --- a/panda/src/cocoadisplay/cocoaPandaWindowDelegate.mm +++ b/panda/src/cocoadisplay/cocoaPandaWindowDelegate.mm @@ -30,6 +30,7 @@ - (void) windowDidResize:(NSNotification *)notification { // Forcing a move event is unfortunately necessary because Cocoa does not // call windowDidMove in case of window zooms. + _graphicsWindow->handle_move_event(); _graphicsWindow->handle_resize_event(); } From 69bf5fa626fda0b10dd552f776fb2364184d1bd4 Mon Sep 17 00:00:00 2001 From: LD Date: Mon, 30 May 2022 21:52:51 +0200 Subject: [PATCH 04/14] cocoadisplay: Remove overzealous coordinates transform performed on mouse position --- panda/src/cocoadisplay/cocoaGraphicsWindow.mm | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/panda/src/cocoadisplay/cocoaGraphicsWindow.mm b/panda/src/cocoadisplay/cocoaGraphicsWindow.mm index 0b973a0317..747951108f 100644 --- a/panda/src/cocoadisplay/cocoaGraphicsWindow.mm +++ b/panda/src/cocoadisplay/cocoaGraphicsWindow.mm @@ -139,10 +139,10 @@ move_pointer(int device, int x, int y) { if (device == 0) { CGPoint point; if (_properties.get_fullscreen()) { - point = CGPointMake(x, y + 1); + point = CGPointMake(x, y); } else { point = CGPointMake(x + _properties.get_x_origin(), - y + _properties.get_y_origin() + 1); + y + _properties.get_y_origin()); } // I don't know what the difference between these two methods is. if @@ -1966,9 +1966,8 @@ handle_mouse_moved_event(bool in_window, double x, double y, bool absolute) { } } - // Strangely enough, in Cocoa, mouse Y coordinates are 1-based. nx = x; - ny = y - 1; + ny = y; } else { // We received deltas, so add it to the current mouse position. @@ -1985,10 +1984,10 @@ handle_mouse_moved_event(bool in_window, double x, double y, bool absolute) { ny = std::max(0., std::min((double) get_y_size() - 1, ny)); if (_properties.get_fullscreen()) { - point = CGPointMake(nx, ny + 1); + point = CGPointMake(nx, ny); } else { point = CGPointMake(nx + _properties.get_x_origin(), - ny + _properties.get_y_origin() + 1); + ny + _properties.get_y_origin()); } if (CGWarpMouseCursorPosition(point) == kCGErrorSuccess) { From 102da5bc35b2e1bc5a9c27e19d3120dff32b484d Mon Sep 17 00:00:00 2001 From: LD Date: Tue, 31 May 2022 21:13:50 +0200 Subject: [PATCH 05/14] cocoadisplay: Don't use position delta for confined mouse mode as it lead to invalid estimation of the pointer position --- panda/src/cocoadisplay/cocoaPandaView.mm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/panda/src/cocoadisplay/cocoaPandaView.mm b/panda/src/cocoadisplay/cocoaPandaView.mm index 6a3f48b39a..963b1905ff 100644 --- a/panda/src/cocoadisplay/cocoaPandaView.mm +++ b/panda/src/cocoadisplay/cocoaPandaView.mm @@ -121,9 +121,7 @@ NSPoint loc = [self convertPoint:[event locationInWindow] fromView:nil]; BOOL inside = [self mouse:loc inRect:[self bounds]]; - // the correlation between mouse deltas and location are "debounced" - // apparently, so send deltas for both relative and confined modes - if (_graphicsWindow->get_properties().get_mouse_mode() != WindowProperties::M_absolute) { + if (_graphicsWindow->get_properties().get_mouse_mode() == WindowProperties::M_relative) { _graphicsWindow->handle_mouse_moved_event(inside, [event deltaX], [event deltaY], false); } else { _graphicsWindow->handle_mouse_moved_event(inside, loc.x, loc.y, true); From 12ae2973ae876b54c03ac966244f64c0ea7eb358 Mon Sep 17 00:00:00 2001 From: LD Date: Tue, 31 May 2022 21:17:11 +0200 Subject: [PATCH 06/14] cocoadisplay: Disable the event suppression interval when moving the position of the mouse pointer --- panda/src/cocoadisplay/cocoaGraphicsWindow.mm | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/panda/src/cocoadisplay/cocoaGraphicsWindow.mm b/panda/src/cocoadisplay/cocoaGraphicsWindow.mm index 747951108f..90699ef26d 100644 --- a/panda/src/cocoadisplay/cocoaGraphicsWindow.mm +++ b/panda/src/cocoadisplay/cocoaGraphicsWindow.mm @@ -145,9 +145,11 @@ move_pointer(int device, int x, int y) { y + _properties.get_y_origin()); } - // I don't know what the difference between these two methods is. if - // (CGWarpMouseCursorPosition(point) == kCGErrorSuccess) { - if (CGDisplayMoveCursorToPoint(_display, point) == kCGErrorSuccess) { + if (CGWarpMouseCursorPosition(point) == kCGErrorSuccess) { + //After moving (or warping) the mouse position, CG starts an event + // suppression interval during which no more mouse events can occur + // This interval can be interupted by the following call : + CGAssociateMouseAndMouseCursorPosition(YES); // Generate a mouse event. NSPoint pos = [_window mouseLocationOutsideOfEventStream]; NSPoint loc = [_view convertPoint:pos fromView:nil]; @@ -1991,6 +1993,10 @@ handle_mouse_moved_event(bool in_window, double x, double y, bool absolute) { } if (CGWarpMouseCursorPosition(point) == kCGErrorSuccess) { + //After moving (or warping) the mouse position, CG starts an event + // suppression interval during which no more mouse events can occur + // This interval can be interupted by the following call : + CGAssociateMouseAndMouseCursorPosition(YES); in_window = true; } else { cocoadisplay_cat.warning() << "Failed to return mouse pointer to window\n"; From 5443377d8b1020145f36a560e36efa52c7993b19 Mon Sep 17 00:00:00 2001 From: rdb Date: Thu, 1 Sep 2022 18:11:59 +0200 Subject: [PATCH 07/14] doc: Update release notes for 1.10.12 [skip ci] --- doc/ReleaseNotes | 54 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/doc/ReleaseNotes b/doc/ReleaseNotes index a2499ce00d..1314ad901f 100644 --- a/doc/ReleaseNotes +++ b/doc/ReleaseNotes @@ -1,3 +1,57 @@ +----------------------- RELEASE 1.10.12 ----------------------- + +Recommended maintenance release containing primarily bug fixes. + +Windowing +* Windows: Fix origin not respected when switching to windowed mode +* macOS: Fix origin not being updated when resizing window +* macOS: Fix off-by-one errors with mouse cursor position +* macOS: Fix issues with confined mouse mode +* macOS: Fix events being suppressed when moving the mouse pointer +* macOS: Invert horizontal scroll, set `cocoa-invert-wheel-x true` to revert + +Rendering +* Add `shadow-cube-map-filter` setting to enable cube map shadow filtering +* Support floating-point FBOs in OpenGL ES 2+ +* Fix texture format selection in OpenGL with T_half_float component type +* Added `egl-device-index` config var to select EGL device +* Offscreen windows in tinydisplay renderer are now resizeable +* CommonFilters now supports alternative coordinate systems +* Fix BufferViewer frame when using a different coordinate system + +Deployment +* Fix _bootlocale error in deployed application on Windows with Python 3.10 +* Include _sysconfigdata module properly when using sysconfig module +* Fix building deploy-stub on platforms that use DT_RUNPATH instead of DT_RPATH +* `sys.flags.optimize` is now set to 2 in Python 3.2 and above + +Miscellaneous +* `Texture::get_ram_image_as()` fixed for 3D textures +* Fix PStats GPU timing not working with newer NVIDIA drivers +* Fix false negative in collision test when sphere is fully inside box +* Resolve segmentation fault when statically linking ffmpeg module +* Fix issue with failed mmap when using WebcamVideo on Linux +* macOS: Keyboard/mouse devices are no longer enumerated by default +* Fix repr of LPlane class +* Remove dependency on ShowBase in FilterManager +* Many new functions added to interrogatedb module to query additional info +* Interrogate no longer writes wrappers with rvalue references to interrogatedb +* PStats on Linux: Fix mouse motion detected outside strip chart graph area +* Fix assertion when reading bam file with Bullet convex hull shape +* Fix memory leak when specifying owner of a task +* Add additional helpful debug/spam prints to display code + +Build +* Support building with OpenSSL 1.1.1 on Windows +* Support building with OpenEXR 3.0 or 3.1 on Windows +* Fix errors when compiling Panda headers with MinGW +* Allow compiling Panda headers on Windows without NOMINMAX set +* Fix wheel platform tag on manylinux aarch64 +* Experimentally allow building with mimalloc on Windows +* Makepanda records cache timestamps as integers instead of floats +* Makepanda can now also build tinydisplay on Linux without X11 +* Fix naming of built wheels when building for macOS 12 + ----------------------- RELEASE 1.10.11 ----------------------- Maintenance release containing assorted bug fixes and minor improvements. From 1f6545c8852e1abeba5de95728c840899a1fd359 Mon Sep 17 00:00:00 2001 From: rdb Date: Thu, 1 Sep 2022 18:16:55 +0200 Subject: [PATCH 08/14] readme: Update version number to 1.10.12 [skip ci] --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f1ac3a0931..fd73771869 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Installing Panda3D ================== The latest Panda3D SDK can be downloaded from -[this page](https://www.panda3d.org/download/sdk-1-10-11/). +[this page](https://www.panda3d.org/download/sdk-1-10-12/). If you are familiar with installing Python packages, you can use the following command: @@ -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.11/panda3d-1.10.11-tools-win64.zip -- https://www.panda3d.org/download/panda3d-1.10.11/panda3d-1.10.11-tools-win32.zip +- https://www.panda3d.org/download/panda3d-1.10.12/panda3d-1.10.12-tools-win64.zip +- https://www.panda3d.org/download/panda3d-1.10.12/panda3d-1.10.12-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 @@ -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.11/panda3d-1.10.11-tools-mac.tar.gz). +compile Panda3D, which can be acquired from [here](https://www.panda3d.org/download/panda3d-1.10.12/panda3d-1.10.12-tools-mac.tar.gz). After placing the thirdparty directory inside the panda3d source directory, you may build Panda3D using a command like the following: From 590531a0b2d3e5b3f02712041d4c03c1dd40a2be Mon Sep 17 00:00:00 2001 From: "Paul m. p. P" Date: Mon, 7 Feb 2022 19:33:19 +0100 Subject: [PATCH 09/14] py_panda: Fix compilation issue with Python 3.11 (Cherry-picked from 833ad89ebad58395d0af0b7ec08538e5e4308265) --- dtool/src/interrogatedb/py_panda.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dtool/src/interrogatedb/py_panda.cxx b/dtool/src/interrogatedb/py_panda.cxx index 11c86ae251..6190b6e642 100644 --- a/dtool/src/interrogatedb/py_panda.cxx +++ b/dtool/src/interrogatedb/py_panda.cxx @@ -754,7 +754,7 @@ PyObject *copy_from_make_copy(PyObject *self, PyObject *noargs) { if (callable == nullptr) { return nullptr; } - PyObject *result = _PyObject_CallNoArg(callable); + PyObject *result = PyObject_CallNoArgs(callable); Py_DECREF(callable); return result; } @@ -778,7 +778,7 @@ PyObject *map_deepcopy_to_copy(PyObject *self, PyObject *args) { if (callable == nullptr) { return nullptr; } - PyObject *result = _PyObject_CallNoArg(callable); + PyObject *result = PyObject_CallNoArgs(callable); Py_DECREF(callable); return result; } From 48b0819cdad1a9cba2aae0718ec2c8ed06f1e9d8 Mon Sep 17 00:00:00 2001 From: rdb Date: Thu, 1 Sep 2022 19:41:37 +0200 Subject: [PATCH 10/14] rocket: Don't try to build Boost binding code for Python 3 libRocket doesn't support Python 3 anyway, and it has an error compiling with Python 3.11 [skip ci] --- doc/ReleaseNotes | 1 + panda/src/rocket/rocketRegion_ext.cxx | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/ReleaseNotes b/doc/ReleaseNotes index 1314ad901f..fa0afb6e20 100644 --- a/doc/ReleaseNotes +++ b/doc/ReleaseNotes @@ -42,6 +42,7 @@ Miscellaneous * Add additional helpful debug/spam prints to display code Build +* Support building with Python 3.11 * Support building with OpenSSL 1.1.1 on Windows * Support building with OpenEXR 3.0 or 3.1 on Windows * Fix errors when compiling Panda headers with MinGW diff --git a/panda/src/rocket/rocketRegion_ext.cxx b/panda/src/rocket/rocketRegion_ext.cxx index 84acb44aa0..f7ff0e6519 100644 --- a/panda/src/rocket/rocketRegion_ext.cxx +++ b/panda/src/rocket/rocketRegion_ext.cxx @@ -16,7 +16,7 @@ #ifdef HAVE_PYTHON -#ifndef CPPPARSER +#if !defined(CPPPARSER) && PY_MAJOR_VERSION < 3 #define HAVE_LONG_LONG 1 #include #include @@ -30,6 +30,7 @@ */ PyObject* Extension:: get_context() const { +#if PY_MAJOR_VERSION < 3 try { Rocket::Core::Context* context = _this->get_context(); python::object py_context = Rocket::Core::Python::Utilities::MakeObject(context); @@ -44,6 +45,7 @@ get_context() const { (void)e; // Return NULL, which will trigger the exception in Python } +#endif return nullptr; } From 2bd34a806d57a8b80fc5f66dd6c8089c8f3b9f7b Mon Sep 17 00:00:00 2001 From: rdb Date: Fri, 2 Sep 2022 07:52:42 +0200 Subject: [PATCH 11/14] dist: Add hidden imports for scipy --- direct/src/dist/FreezeTool.py | 6 ++++++ doc/ReleaseNotes | 1 + 2 files changed, 7 insertions(+) diff --git a/direct/src/dist/FreezeTool.py b/direct/src/dist/FreezeTool.py index f50b0cd927..db7ac1092c 100644 --- a/direct/src/dist/FreezeTool.py +++ b/direct/src/dist/FreezeTool.py @@ -84,6 +84,12 @@ hiddenImports = { ], 'pandas.compat': ['lzma', 'cmath'], 'pandas._libs.tslibs.conversion': ['pandas._libs.tslibs.base'], + 'scipy.linalg': ['scipy.linalg.cython_blas', 'scipy.linalg.cython_lapack'], + 'scipy.sparse.csgraph': ['scipy.sparse.csgraph._validation'], + 'scipy.spatial._qhull': ['scipy._lib.messagestream'], + 'scipy.spatial.transform._rotation': ['scipy.spatial.transform._rotation_groups'], + 'scipy.special._ufuncs': ['scipy.special._ufuncs_cxx'], + 'scipy.stats._stats': ['scipy.special.cython_special'], } if sys.version_info >= (3,): diff --git a/doc/ReleaseNotes b/doc/ReleaseNotes index fa0afb6e20..53aa89a4bb 100644 --- a/doc/ReleaseNotes +++ b/doc/ReleaseNotes @@ -24,6 +24,7 @@ Deployment * Include _sysconfigdata module properly when using sysconfig module * Fix building deploy-stub on platforms that use DT_RUNPATH instead of DT_RPATH * `sys.flags.optimize` is now set to 2 in Python 3.2 and above +* Fix import errors when using scipy Miscellaneous * `Texture::get_ram_image_as()` fixed for 3D textures From 50a34900c3d2cca150361e4e43393c1dce08a192 Mon Sep 17 00:00:00 2001 From: rdb Date: Fri, 2 Sep 2022 07:56:10 +0200 Subject: [PATCH 12/14] Add Python 3.11 to setup.cfg [skip ci] --- setup.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.cfg b/setup.cfg index 5d70295f57..b15a37a0f1 100644 --- a/setup.cfg +++ b/setup.cfg @@ -23,6 +23,7 @@ classifiers = Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 + Programming Language :: Python :: 3.11 Programming Language :: Python :: Implementation :: CPython Topic :: Games/Entertainment Topic :: Multimedia From e30d88d9dbb74da923f660a76e8d34e8ac732e3d Mon Sep 17 00:00:00 2001 From: LD Date: Sat, 21 May 2022 21:23:53 +0200 Subject: [PATCH 13/14] showbase: Fix regression with BufferViewer in double prec build Regression was introduced in 98314da00ff9d1d0ef567f1a82796862462f6540 Use explicitly Vec3F in calls to addData3f to avoid crash on double precision builds Closes #1365 --- direct/src/showbase/BufferViewer.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/direct/src/showbase/BufferViewer.py b/direct/src/showbase/BufferViewer.py index ed2fc87733..4af8b164b9 100644 --- a/direct/src/showbase/BufferViewer.py +++ b/direct/src/showbase/BufferViewer.py @@ -240,10 +240,10 @@ class BufferViewer(DirectObject): offsetx = (ringoffset[ring]*2.0) / float(sizex) offsety = (ringoffset[ring]*2.0) / float(sizey) bright = ringbright[ring] - vwriter.addData3f(Vec3.rfu(-1 - offsetx, 0, -1 - offsety)) - vwriter.addData3f(Vec3.rfu( 1 + offsetx, 0, -1 - offsety)) - vwriter.addData3f(Vec3.rfu( 1 + offsetx, 0, 1 + offsety)) - vwriter.addData3f(Vec3.rfu(-1 - offsetx, 0, 1 + offsety)) + vwriter.addData3f(Vec3F.rfu(-1 - offsetx, 0, -1 - offsety)) + vwriter.addData3f(Vec3F.rfu( 1 + offsetx, 0, -1 - offsety)) + vwriter.addData3f(Vec3F.rfu( 1 + offsetx, 0, 1 + offsety)) + vwriter.addData3f(Vec3F.rfu(-1 - offsetx, 0, 1 + offsety)) cwriter.addData3f(bright, bright, bright) cwriter.addData3f(bright, bright, bright) cwriter.addData3f(bright, bright, bright) From 67110156d8e7fa71980cf813455193f8b3494204 Mon Sep 17 00:00:00 2001 From: rdb Date: Fri, 2 Sep 2022 23:09:11 +0200 Subject: [PATCH 14/14] Bump version number on release/1.10.x branch to 1.10.13 --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index b15a37a0f1..b77a116c14 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = Panda3D -version = 1.10.12 +version = 1.10.13 url = https://www.panda3d.org/ description = Panda3D is a framework for 3D rendering and game development for Python and C++ programs. license = Modified BSD License