mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-29 00:06:44 -04:00
Merge branch 'release/1.10.x'
This commit is contained in:
commit
5d63c7e898
@ -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:
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
2
direct/src/dist/FreezeTool.py
vendored
2
direct/src/dist/FreezeTool.py
vendored
@ -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'],
|
||||||
|
2
direct/src/dist/commands.py
vendored
2
direct/src/dist/commands.py
vendored
@ -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)
|
||||||
|
|
||||||
|
3
direct/src/dist/icon.py
vendored
3
direct/src/dist/icon.py
vendored
@ -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:
|
||||||
|
@ -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())
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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:
|
||||||
|
@ -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,),
|
||||||
|
114
tests/gobj/test_geom_vertex_format.py
Normal file
114
tests/gobj/test_geom_vertex_format.py
Normal 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)
|
Loading…
x
Reference in New Issue
Block a user