Merge branch 'release/1.10.x'

This commit is contained in:
rdb 2023-02-20 19:27:58 +01:00
commit 5d63c7e898
11 changed files with 126 additions and 15 deletions

View File

@ -158,7 +158,7 @@ class ClusterServer(DirectObject.DirectObject):
self.controlPriorities[objectName] = priority self.controlPriorities[objectName] = priority
self.redoSortedPriorities() self.redoSortedPriorities()
else: else:
self.notify.debug('attempt to add duplicate controlled object: '+name) self.notify.debug('attempt to add duplicate controlled object: ' + objectName)
def setControlMappingOffset(self, objectName, offset): def setControlMappingOffset(self, objectName, offset):
if objectName in self.controlMappings: if objectName in self.controlMappings:

View File

@ -176,7 +176,7 @@ class DirectAnalogs(AnalogNode, DirectObject):
def normalizeChannel(self, chan, minVal = -1, maxVal = 1, sf = 1.0): def normalizeChannel(self, chan, minVal = -1, maxVal = 1, sf = 1.0):
try: try:
return self.normalize(self[chan], minVal, maxVal, sfx) return self.normalize(self[chan], minVal, maxVal, sf)
except IndexError: except IndexError:
return 0.0 return 0.0

View File

@ -83,7 +83,9 @@ defaultHiddenImports = {
'plyer': ['plyer.platforms'], 'plyer': ['plyer.platforms'],
'scipy.linalg': ['scipy.linalg.cython_blas', 'scipy.linalg.cython_lapack'], 'scipy.linalg': ['scipy.linalg.cython_blas', 'scipy.linalg.cython_lapack'],
'scipy.sparse.csgraph': ['scipy.sparse.csgraph._validation'], 'scipy.sparse.csgraph': ['scipy.sparse.csgraph._validation'],
'scipy.spatial.qhull': ['scipy._lib.messagestream'],
'scipy.spatial._qhull': ['scipy._lib.messagestream'], 'scipy.spatial._qhull': ['scipy._lib.messagestream'],
'scipy.spatial.transform.rotation': ['scipy.spatial.transform._rotation_groups'],
'scipy.spatial.transform._rotation': ['scipy.spatial.transform._rotation_groups'], 'scipy.spatial.transform._rotation': ['scipy.spatial.transform._rotation_groups'],
'scipy.special._ufuncs': ['scipy.special._ufuncs_cxx'], 'scipy.special._ufuncs': ['scipy.special._ufuncs_cxx'],
'scipy.stats._stats': ['scipy.special.cython_special'], 'scipy.stats._stats': ['scipy.special.cython_special'],

View File

@ -1121,7 +1121,7 @@ class build_apps(setuptools.Command):
# Remove python version string # Remove python version string
parts = basename.split('.') parts = basename.split('.')
if len(parts) >= 3 and '-' in parts[-2]: if len(parts) >= 3 and ('-' in parts[-2] or parts[-2] == 'abi' + str(sys.version_info[0])):
parts = parts[:-2] + parts[-1:] parts = parts[:-2] + parts[-1:]
basename = '.'.join(parts) basename = '.'.join(parts)

View File

@ -114,9 +114,6 @@ class Icon:
for x in range(size): for x in range(size):
pixel = image2.get_pixel(x, size - y - 1) pixel = image2.get_pixel(x, size - y - 1)
index = colors.index(pixel) index = colors.index(pixel)
if index >= 256:
# Find closest pixel instead.
index = closest_indices[index - 256]
fp.write(struct.pack('<B', index)) fp.write(struct.pack('<B', index))
fp.write(rowalign) fp.write(rowalign)
else: else:

View File

@ -64,11 +64,11 @@ class ObjectPaletteUI(wx.Panel):
data1 = self.tree.GetItemText(item1) data1 = self.tree.GetItemText(item1)
data2 = self.tree.GetItemText(item2) data2 = self.tree.GetItemText(item2)
if self.opSort == self.opSortAlpha: if self.opSort == self.opSortAlpha:
return cmp(data1, data2) return (data1 > data2) - (data1 < data2)
else: else:
index1 = self.palette.dataKeys.index(data1) index1 = self.palette.dataKeys.index(data1)
index2 = self.palette.dataKeys.index(data2) index2 = self.palette.dataKeys.index(data2)
return cmp(index1, index2) return (index1 > index2) - (index1 < index2)
def getSelected(self): def getSelected(self):
return self.tree.GetItemData(self.tree.GetSelection()) return self.tree.GetItemData(self.tree.GetSelection())

View File

@ -200,9 +200,9 @@ class ProtoPaletteUI(wx.Panel):
data1 = self.tree.GetItemText(item1) data1 = self.tree.GetItemText(item1)
data2 = self.tree.GetItemText(item2) data2 = self.tree.GetItemText(item2)
if self.opSort == self.opSortAlpha: if self.opSort == self.opSortAlpha:
return cmp(data1, data2) return (data1 > data2) - (data1 < data2)
else: else:
items = list(self.palette.data.keys()) items = list(self.palette.data.keys())
index1 = items.index(data1) index1 = items.index(data1)
index2 = items.index(data2) index2 = items.index(data2)
return cmp(index1, index2) return (index1 > index2) - (index1 < index2)

View File

@ -1,5 +1,5 @@
from panda3d.core import NodePath from panda3d.core import NodePath, Vec3
from panda3d.physics import LinearVectorForce from panda3d.physics import LinearVectorForce
from direct.particles import ParticleEffect from direct.particles import ParticleEffect
from direct.particles import Particles from direct.particles import Particles

View File

@ -28,7 +28,7 @@ class PercentStats(pstats.Stats):
print() print()
indent = ' ' * 8 indent = ' ' * 8
for func in self.top_level: for func in self.top_level:
print(indent, func_get_function_name(func)) print(indent, pstats.func_get_function_name(func))
print(indent, self.total_calls, "function calls", end=' ') print(indent, self.total_calls, "function calls", end=' ')
if self.total_calls != self.prim_calls: if self.total_calls != self.prim_calls:

View File

@ -458,10 +458,8 @@ class ActorControl(Pmw.MegaWidget):
playRateList = ['1/24.0', '0.1', '0.5', '1.0', '2.0', '5.0', '10.0'] playRateList = ['1/24.0', '0.1', '0.5', '1.0', '2.0', '5.0', '10.0']
playRate = '%0.1f' % self['actor'].getPlayRate(self['active']) playRate = '%0.1f' % self['actor'].getPlayRate(self['active'])
if playRate not in playRateList: if playRate not in playRateList:
def strCmp(a, b):
return cmp(eval(a), eval(b))
playRateList.append(playRate) playRateList.append(playRate)
playRateList.sort(strCmp) playRateList.sort(key=lambda s:eval(s))
playRateMenu = self.createcomponent( playRateMenu = self.createcomponent(
'playRateMenu', (), None, 'playRateMenu', (), None,
Pmw.ComboBox, (interior,), Pmw.ComboBox, (interior,),

View File

@ -0,0 +1,114 @@
from panda3d.core import GeomVertexArrayFormat, GeomVertexFormat, Geom
def test_format_arrays():
array1 = GeomVertexArrayFormat("vertex", 3, Geom.NT_float32, Geom.C_point)
array2 = GeomVertexArrayFormat("normal", 3, Geom.NT_float32, Geom.C_normal)
array3 = GeomVertexArrayFormat("color", 4, Geom.NT_float32, Geom.C_color)
array4 = GeomVertexArrayFormat("texcoord", 2, Geom.NT_float32, Geom.C_texcoord)
# Verify initial refcounts
assert array1.get_ref_count() == 1
assert array2.get_ref_count() == 1
assert array3.get_ref_count() == 1
assert array4.get_ref_count() == 1
format = GeomVertexFormat()
def expect_arrays(*args):
assert format.get_num_arrays() == len(args)
assert len(format.arrays) == len(args)
assert tuple(format.arrays) == args
arrays = format.get_arrays()
assert tuple(arrays) == args
assert array1.get_ref_count() == 1 + arrays.count(array1) * 2
assert array2.get_ref_count() == 1 + arrays.count(array2) * 2
assert array3.get_ref_count() == 1 + arrays.count(array3) * 2
assert array4.get_ref_count() == 1 + arrays.count(array4) * 2
# Verify empty state
expect_arrays()
# Append to end
format.add_array(array1)
expect_arrays(array1,)
format.add_array(array2)
expect_arrays(array1, array2)
format.add_array(array3)
expect_arrays(array1, array2, array3)
format.add_array(array4)
expect_arrays(array1, array2, array3, array4)
# Verify other accessors
assert format.get_num_arrays() == 4
assert len(format.arrays) == 4
assert tuple(format.get_arrays()) == (array1, array2, array3, array4)
# Remove from beginning
format.remove_array(0)
expect_arrays(array2, array3, array4)
format.remove_array(0)
expect_arrays(array3, array4)
format.remove_array(0)
expect_arrays(array4,)
format.remove_array(0)
expect_arrays()
# Insert at end
format.insert_array(0, array1)
expect_arrays(array1,)
format.insert_array(1, array2)
expect_arrays(array1, array2)
format.insert_array(2, array3)
expect_arrays(array1, array2, array3)
format.insert_array(3, array4)
expect_arrays(array1, array2, array3, array4)
# Remove from end
format.remove_array(3)
expect_arrays(array1, array2, array3)
format.remove_array(2)
expect_arrays(array1, array2)
format.remove_array(1)
expect_arrays(array1,)
format.remove_array(0)
expect_arrays()
# Insert at beginning
format.insert_array(0, array4)
expect_arrays(array4,)
format.insert_array(0, array3)
expect_arrays(array3, array4)
format.insert_array(0, array2)
expect_arrays(array2, array3, array4)
format.insert_array(0, array1)
expect_arrays(array1, array2, array3, array4)
# Remove from middle and insert back in middle
format.remove_array(2)
expect_arrays(array1, array2, array4)
format.insert_array(2, array3)
expect_arrays(array1, array2, array3, array4)
format.remove_array(1)
expect_arrays(array1, array3, array4)
format.remove_array(1)
expect_arrays(array1, array4)
format.insert_array(1, array2)
expect_arrays(array1, array2, array4)
format.insert_array(2, array3)
expect_arrays(array1, array2, array3, array4)
# Clear
format.clear_arrays()
expect_arrays()
# Add to end but with very high index
format.insert_array(0xffffffff, array1)
expect_arrays(array1,)
format.insert_array(0xffffffff, array2)
expect_arrays(array1, array2)
format.insert_array(0xffffffff, array3)
expect_arrays(array1, array2, array3)
format.insert_array(0xffffffff, array4)
expect_arrays(array1, array2, array3, array4)