mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-02 18:03:56 -04:00
Deprecate many extension methods, make extension methods imported via modules instead of dumped into core.py, move _core.pyd and _direct.pyd back to core.pyd, direct.pyd respectively, move MAIN_DIR set-up code to module init time
This commit is contained in:
parent
db3ab953e4
commit
31dbcae262
@ -525,9 +525,8 @@ class Actor(DirectObject, NodePath):
|
||||
self.__LODNode = None
|
||||
|
||||
# remove all its children
|
||||
if(self.__geomNode):
|
||||
self.__geomNode.removeChildren()
|
||||
|
||||
if self.__geomNode:
|
||||
self.__geomNode.getChildren().detach()
|
||||
|
||||
self.__hasLOD = 0
|
||||
|
||||
|
@ -13,13 +13,13 @@ from direct.directnotify import DirectNotifyGlobal
|
||||
#if __debug__:
|
||||
# import DevWalker
|
||||
from direct.task import Task
|
||||
from panda3d.core import ConfigVariableBool
|
||||
|
||||
CollisionHandlerRayStart = 4000.0 # This is a hack, it may be better to use a line instead of a ray.
|
||||
|
||||
class ControlManager:
|
||||
notify = DirectNotifyGlobal.directNotify.newCategory("ControlManager")
|
||||
wantAvatarPhysicsIndicator = config.GetBool('want-avatar-physics-indicator', 0)
|
||||
wantAvatarPhysicsDebug = config.GetBool('want-avatar-physics-debug', 0)
|
||||
wantWASD = config.GetBool('want-WASD', 0)
|
||||
wantWASD = ConfigVariableBool('want-WASD', True)
|
||||
|
||||
def __init__(self, enable=True, passMessagesThrough = False):
|
||||
assert self.notify.debug("init control manager %s" % (passMessagesThrough))
|
||||
|
@ -18,15 +18,17 @@ from direct.showbase import DirectObject
|
||||
from direct.controls.ControlManager import CollisionHandlerRayStart
|
||||
from direct.showbase.InputStateGlobal import inputState
|
||||
from direct.task.Task import Task
|
||||
from pandac.PandaModules import *
|
||||
from panda3d.core import *
|
||||
from direct.extensions_native import VBase3_extensions
|
||||
from direct.extensions_native import VBase4_extensions
|
||||
import math
|
||||
|
||||
|
||||
class GravityWalker(DirectObject.DirectObject):
|
||||
notify = directNotify.newCategory("GravityWalker")
|
||||
wantDebugIndicator = base.config.GetBool('want-avatar-physics-indicator', 0)
|
||||
wantFloorSphere = base.config.GetBool('want-floor-sphere', 0)
|
||||
earlyEventSphere = base.config.GetBool('early-event-sphere', 0)
|
||||
wantDebugIndicator = ConfigVariableBool('want-avatar-physics-indicator', False)
|
||||
wantFloorSphere = ConfigVariableBool('want-floor-sphere', False)
|
||||
earlyEventSphere = ConfigVariableBool('early-event-sphere', False)
|
||||
|
||||
DiagonalFactor = math.sqrt(2.) / 2.
|
||||
|
||||
|
@ -19,7 +19,11 @@ from direct.showbase import DirectObject
|
||||
from direct.controls.ControlManager import CollisionHandlerRayStart
|
||||
from direct.showbase.InputStateGlobal import inputState
|
||||
from direct.task.Task import Task
|
||||
from pandac.PandaModules import *
|
||||
from panda3d.core import *
|
||||
from panda3d.physics import *
|
||||
from direct.extensions_native import Mat3_extensions
|
||||
from direct.extensions_native import VBase3_extensions
|
||||
from direct.extensions_native import VBase4_extensions
|
||||
import math
|
||||
|
||||
#import LineStream
|
||||
@ -27,8 +31,7 @@ import math
|
||||
class PhysicsWalker(DirectObject.DirectObject):
|
||||
|
||||
notify = DirectNotifyGlobal.directNotify.newCategory("PhysicsWalker")
|
||||
wantDebugIndicator = base.config.GetBool('want-avatar-physics-indicator', 0)
|
||||
wantAvatarPhysicsIndicator = base.config.GetBool('want-avatar-physics-indicator', 0)
|
||||
wantDebugIndicator = ConfigVariableBool('want-avatar-physics-indicator', False)
|
||||
|
||||
useLifter = 0
|
||||
useHeightRay = 0
|
||||
|
@ -227,16 +227,27 @@ class SelectedNodePaths(DirectObject):
|
||||
selected = self.last
|
||||
# Toggle visibility of selected node paths
|
||||
if selected:
|
||||
selected.toggleVis()
|
||||
if selected.isHidden():
|
||||
selected.show()
|
||||
else:
|
||||
selected.hide()
|
||||
|
||||
def toggleVisAll(self):
|
||||
# Toggle viz for all selected node paths
|
||||
self.forEachSelectedNodePathDo(NodePath.toggleVis)
|
||||
selectedNodePaths = self.getSelectedAsList()
|
||||
for nodePath in selectedNodePaths:
|
||||
if nodePath.isHidden():
|
||||
nodePath.show()
|
||||
else:
|
||||
nodePath.hide()
|
||||
|
||||
def isolateSelected(self):
|
||||
selected = self.last
|
||||
if selected:
|
||||
selected.isolate()
|
||||
selected.showAllDescendents()
|
||||
for sib in selected.getParent().getChildren():
|
||||
if sib.node() != selected.node():
|
||||
sib.hide()
|
||||
|
||||
def getDirectNodePath(self, nodePath):
|
||||
# Get this pointer
|
||||
|
@ -879,7 +879,9 @@ class DirectSession(DirectObject):
|
||||
# Yes, show everything in level
|
||||
self.showAllDescendants(nodePath.getParent())
|
||||
# Now hide all of this node path's siblings
|
||||
nodePath.hideSiblings()
|
||||
for sib in nodePath.getParent().getChildren():
|
||||
if sib.node() != nodePath.node():
|
||||
sib.hide()
|
||||
|
||||
def toggleVis(self, nodePath = 'None Given'):
|
||||
""" Toggle visibility of node path """
|
||||
@ -890,7 +892,10 @@ class DirectSession(DirectObject):
|
||||
nodePath = self.selected.last
|
||||
if nodePath:
|
||||
# Now toggle node path's visibility state
|
||||
nodePath.toggleVis()
|
||||
if nodePath.isHidden():
|
||||
nodePath.show()
|
||||
else:
|
||||
nodePath.hide()
|
||||
|
||||
def removeNodePath(self, nodePath = 'None Given'):
|
||||
if nodePath == 'None Given':
|
||||
@ -904,8 +909,11 @@ class DirectSession(DirectObject):
|
||||
|
||||
def showAllDescendants(self, nodePath = render):
|
||||
""" Show the level and its descendants """
|
||||
nodePath.showAllDescendants()
|
||||
nodePath.hideCS()
|
||||
if not isinstance(nodePath, CollisionNode):
|
||||
nodePath.show()
|
||||
|
||||
for child in nodePath.getChildren():
|
||||
self.showAllDescendants(child)
|
||||
|
||||
def upAncestry(self):
|
||||
if self.ancestry:
|
||||
|
@ -1,4 +1,5 @@
|
||||
from .core import Dtool_funcToMethod
|
||||
from panda3d.direct import CInterval
|
||||
from .extension_native_helpers import Dtool_funcToMethod
|
||||
from direct.directnotify.DirectNotifyGlobal import directNotify
|
||||
|
||||
CInterval.DtoolClassDict["notify"] = directNotify.newCategory("Interval")
|
||||
|
@ -3,6 +3,9 @@
|
||||
#del func
|
||||
#####################################################################
|
||||
|
||||
from panda3d.core import HTTPChannel
|
||||
from .extension_native_helpers import Dtool_funcToMethod
|
||||
|
||||
"""
|
||||
HTTPChannel-extensions module: contains methods to extend functionality
|
||||
of the HTTPChannel class
|
||||
|
2
direct/src/extensions_native/Mat3_extensions.py
Executable file → Normal file
2
direct/src/extensions_native/Mat3_extensions.py
Executable file → Normal file
@ -8,6 +8,8 @@ Mat3-extensions module: contains methods to extend functionality
|
||||
of the LMatrix3f class.
|
||||
"""
|
||||
|
||||
from panda3d.core import Mat3
|
||||
from .extension_native_helpers import Dtool_funcToMethod
|
||||
|
||||
def pPrintValues(self):
|
||||
"""
|
||||
|
@ -8,6 +8,9 @@ NodePath-extensions module: contains methods to extend functionality
|
||||
of the NodePath class
|
||||
"""
|
||||
|
||||
from panda3d.core import NodePath
|
||||
from .extension_native_helpers import Dtool_funcToMethod
|
||||
|
||||
####################################################################
|
||||
def id(self):
|
||||
"""Deprecated. Returns a unique id identifying the NodePath instance"""
|
||||
@ -27,7 +30,8 @@ del getChildrenAsList
|
||||
#####################################################################
|
||||
|
||||
def printChildren(self):
|
||||
"""Prints out the children of the bottom node of a node path"""
|
||||
"""Deprecated. Prints out the children of the bottom node of a node path"""
|
||||
print("Warning: NodePath.printChildren() is deprecated.")
|
||||
for child in self.getChildren():
|
||||
print(child.getName())
|
||||
Dtool_funcToMethod(printChildren, NodePath)
|
||||
@ -35,14 +39,16 @@ del printChildren
|
||||
#####################################################################
|
||||
|
||||
def removeChildren(self):
|
||||
"""Deletes the children of the bottom node of a node path"""
|
||||
"""Deprecated. Deletes the children of the bottom node of a node path"""
|
||||
print("Warning: NodePath.removeChildren() is deprecated. Use get_children().detach() instead.")
|
||||
self.getChildren().detach()
|
||||
Dtool_funcToMethod(removeChildren, NodePath)
|
||||
del removeChildren
|
||||
#####################################################################
|
||||
|
||||
def toggleVis(self):
|
||||
"""Toggles visibility of a nodePath"""
|
||||
"""Deprecated. Toggles visibility of a nodePath"""
|
||||
print("Warning: NodePath.toggleVis() is deprecated. Use is_hidden(), show() and hide() instead.")
|
||||
if self.isHidden():
|
||||
self.show()
|
||||
return 1
|
||||
@ -54,7 +60,8 @@ del toggleVis
|
||||
#####################################################################
|
||||
|
||||
def showSiblings(self):
|
||||
"""Show all the siblings of a node path"""
|
||||
"""Deprecated. Show all the siblings of a node path"""
|
||||
print("Warning: NodePath.showSiblings() is deprecated.")
|
||||
for sib in self.getParent().getChildren():
|
||||
if sib.node() != self.node():
|
||||
sib.show()
|
||||
@ -63,7 +70,8 @@ del showSiblings
|
||||
#####################################################################
|
||||
|
||||
def hideSiblings(self):
|
||||
"""Hide all the siblings of a node path"""
|
||||
"""Deprecated. Hide all the siblings of a node path"""
|
||||
print("Warning: NodePath.hideSiblings() is deprecated.")
|
||||
for sib in self.getParent().getChildren():
|
||||
if sib.node() != self.node():
|
||||
sib.hide()
|
||||
@ -72,7 +80,8 @@ del hideSiblings
|
||||
#####################################################################
|
||||
|
||||
def showAllDescendants(self):
|
||||
"""Show the node path and all its children"""
|
||||
"""Deprecated. Show the node path and all its children"""
|
||||
print("Warning: NodePath.showAllDescendants() is deprecated.")
|
||||
self.show()
|
||||
for child in self.getChildren():
|
||||
child.showAllDescendants()
|
||||
@ -81,9 +90,12 @@ del showAllDescendants
|
||||
#####################################################################
|
||||
|
||||
def isolate(self):
|
||||
"""Show the node path and hide its siblings"""
|
||||
"""Deprecated. Show the node path and hide its siblings"""
|
||||
print("Warning: NodePath.isolate() is deprecated.")
|
||||
self.showAllDescendants()
|
||||
self.hideSiblings()
|
||||
for sib in self.getParent().getChildren():
|
||||
if sib.node() != self.node():
|
||||
sib.hide()
|
||||
Dtool_funcToMethod(isolate, NodePath)
|
||||
del isolate
|
||||
#####################################################################
|
||||
@ -101,7 +113,8 @@ del remove
|
||||
#####################################################################
|
||||
|
||||
def lsNames(self):
|
||||
"""Walk down a tree and print out the path"""
|
||||
"""Deprecated. Walk down a tree and print out the path"""
|
||||
print("Warning: NodePath.lsNames() is deprecated.")
|
||||
if self.isEmpty():
|
||||
print("(empty)")
|
||||
else:
|
||||
@ -114,7 +127,8 @@ Dtool_funcToMethod(lsNames, NodePath)
|
||||
del lsNames
|
||||
#####################################################################
|
||||
def lsNamesRecurse(self, indentString=' '):
|
||||
"""Walk down a tree and print out the path"""
|
||||
"""Deprecated. Walk down a tree and print out the path"""
|
||||
print("Warning: NodePath.lsNamesRecurse() is deprecated.")
|
||||
for nodePath in self.getChildren():
|
||||
type = nodePath.node().getType().getName()
|
||||
name = nodePath.getName()
|
||||
@ -125,7 +139,8 @@ Dtool_funcToMethod(lsNamesRecurse, NodePath)
|
||||
del lsNamesRecurse
|
||||
#####################################################################
|
||||
def reverseLsNames(self):
|
||||
"""Walk up a tree and print out the path to the root"""
|
||||
"""Deprecated. Walk up a tree and print out the path to the root"""
|
||||
print("Warning: NodePath.reverseLsNames() is deprecated.")
|
||||
ancestors = list(self.getAncestors())
|
||||
ancestry = ancestors.reverse()
|
||||
indentString = ""
|
||||
@ -139,8 +154,8 @@ Dtool_funcToMethod(reverseLsNames, NodePath)
|
||||
del reverseLsNames
|
||||
#####################################################################
|
||||
def getAncestry(self):
|
||||
"""Get a list of a node path's ancestors"""
|
||||
print("NodePath.getAncestry() is deprecated. Use get_ancestors() instead.""")
|
||||
"""Deprecated. Get a list of a node path's ancestors"""
|
||||
print("NodePath.getAncestry() is deprecated. Use get_ancestors() instead.")
|
||||
ancestors = list(self.getAncestors())
|
||||
ancestors.reverse()
|
||||
return ancestors
|
||||
@ -151,8 +166,9 @@ del getAncestry
|
||||
|
||||
def pPrintString(self, other = None):
|
||||
"""
|
||||
pretty print
|
||||
Deprecated. pretty print
|
||||
"""
|
||||
print("NodePath.pPrintString() is deprecated.")
|
||||
if __debug__:
|
||||
# Normally I would have put the if __debug__ around
|
||||
# the entire funciton, the that doesn't seem to work
|
||||
@ -183,7 +199,8 @@ del pPrintString
|
||||
#####################################################################
|
||||
|
||||
def printPos(self, other = None, sd = 2):
|
||||
""" Pretty print a node path's pos """
|
||||
""" Deprecated. Pretty print a node path's pos """
|
||||
print("NodePath.printPos() is deprecated.")
|
||||
formatString = '%0.' + '%d' % sd + 'f'
|
||||
if other:
|
||||
pos = self.getPos(other)
|
||||
@ -201,7 +218,8 @@ del printPos
|
||||
#####################################################################
|
||||
|
||||
def printHpr(self, other = None, sd = 2):
|
||||
""" Pretty print a node path's hpr """
|
||||
""" Deprecated. Pretty print a node path's hpr """
|
||||
print("NodePath.printHpr() is deprecated.")
|
||||
formatString = '%0.' + '%d' % sd + 'f'
|
||||
if other:
|
||||
hpr = self.getHpr(other)
|
||||
@ -219,7 +237,8 @@ del printHpr
|
||||
#####################################################################
|
||||
|
||||
def printScale(self, other = None, sd = 2):
|
||||
""" Pretty print a node path's scale """
|
||||
""" Deprecated. Pretty print a node path's scale """
|
||||
print("NodePath.printScale() is deprecated.")
|
||||
formatString = '%0.' + '%d' % sd + 'f'
|
||||
if other:
|
||||
scale = self.getScale(other)
|
||||
@ -237,7 +256,8 @@ Dtool_funcToMethod(printScale, NodePath)
|
||||
del printScale
|
||||
#####################################################################
|
||||
def printPosHpr(self, other = None, sd = 2):
|
||||
""" Pretty print a node path's pos and, hpr """
|
||||
""" Deprecated. Pretty print a node path's pos and, hpr """
|
||||
print("NodePath.printPosHpr() is deprecated.")
|
||||
formatString = '%0.' + '%d' % sd + 'f'
|
||||
if other:
|
||||
pos = self.getPos(other)
|
||||
@ -260,7 +280,8 @@ Dtool_funcToMethod(printPosHpr, NodePath)
|
||||
del printPosHpr
|
||||
#####################################################################
|
||||
def printPosHprScale(self, other = None, sd = 2):
|
||||
""" Pretty print a node path's pos, hpr, and scale """
|
||||
""" Deprecated. Pretty print a node path's pos, hpr, and scale """
|
||||
print("NodePath.printPosHprScale() is deprecated.")
|
||||
formatString = '%0.' + '%d' % sd + 'f'
|
||||
if other:
|
||||
pos = self.getPos(other)
|
||||
@ -289,6 +310,8 @@ del printPosHprScale
|
||||
#####################################################################
|
||||
|
||||
def printTransform(self, other = None, sd = 2, fRecursive = 0):
|
||||
"Deprecated."
|
||||
print("NodePath.printTransform() is deprecated.")
|
||||
from panda3d.core import Vec3
|
||||
fmtStr = '%%0.%df' % sd
|
||||
name = self.getName()
|
||||
@ -327,7 +350,8 @@ del printTransform
|
||||
|
||||
|
||||
def iPos(self, other = None):
|
||||
""" Set node path's pos to 0, 0, 0 """
|
||||
""" Deprecated. Set node path's pos to 0, 0, 0 """
|
||||
print("NodePath.iPos() is deprecated.")
|
||||
if other:
|
||||
self.setPos(other, 0, 0, 0)
|
||||
else:
|
||||
@ -337,7 +361,8 @@ del iPos
|
||||
#####################################################################
|
||||
|
||||
def iHpr(self, other = None):
|
||||
""" Set node path's hpr to 0, 0, 0 """
|
||||
""" Deprecated. Set node path's hpr to 0, 0, 0 """
|
||||
print("NodePath.iHpr() is deprecated.")
|
||||
if other:
|
||||
self.setHpr(other, 0, 0, 0)
|
||||
else:
|
||||
@ -347,7 +372,8 @@ Dtool_funcToMethod(iHpr, NodePath)
|
||||
del iHpr
|
||||
#####################################################################
|
||||
def iScale(self, other = None):
|
||||
""" SEt node path's scale to 1, 1, 1 """
|
||||
""" Deprecated. Set node path's scale to 1, 1, 1 """
|
||||
print("NodePath.iScale() is deprecated.")
|
||||
if other:
|
||||
self.setScale(other, 1, 1, 1)
|
||||
else:
|
||||
@ -357,7 +383,8 @@ Dtool_funcToMethod(iScale, NodePath)
|
||||
del iScale
|
||||
#####################################################################
|
||||
def iPosHpr(self, other = None):
|
||||
""" Set node path's pos and hpr to 0, 0, 0 """
|
||||
""" Deprecated. Set node path's pos and hpr to 0, 0, 0 """
|
||||
print("NodePath.iPosHpr() is deprecated.")
|
||||
if other:
|
||||
self.setPosHpr(other, 0, 0, 0, 0, 0, 0)
|
||||
else:
|
||||
@ -367,7 +394,8 @@ Dtool_funcToMethod(iPosHpr, NodePath)
|
||||
del iPosHpr
|
||||
#####################################################################
|
||||
def iPosHprScale(self, other = None):
|
||||
""" Set node path's pos and hpr to 0, 0, 0 and scale to 1, 1, 1 """
|
||||
""" Deprecated. Set node path's pos and hpr to 0, 0, 0 and scale to 1, 1, 1 """
|
||||
print("NodePath.iPosHprScale() is deprecated.")
|
||||
if other:
|
||||
self.setPosHprScale(other, 0, 0, 0, 0, 0, 0, 1, 1, 1)
|
||||
else:
|
||||
@ -417,11 +445,13 @@ del deselect
|
||||
#####################################################################
|
||||
def showCS(self, mask = None):
|
||||
"""
|
||||
Deprecated.
|
||||
Shows the collision solids at or below this node. If mask is
|
||||
not None, it is a BitMask32 object (e.g. WallBitmask,
|
||||
CameraBitmask) that indicates which particular collision
|
||||
solids should be made visible; otherwise, all of them will be.
|
||||
"""
|
||||
print("NodePath.showCS() is deprecated. Use findAllMatches('**/+CollisionNode').show() instead.")
|
||||
npc = self.findAllMatches('**/+CollisionNode')
|
||||
for p in range(0, npc.getNumPaths()):
|
||||
np = npc[p]
|
||||
@ -433,11 +463,13 @@ del showCS
|
||||
#####################################################################
|
||||
def hideCS(self, mask = None):
|
||||
"""
|
||||
Deprecated.
|
||||
Hides the collision solids at or below this node. If mask is
|
||||
not None, it is a BitMask32 object (e.g. WallBitmask,
|
||||
CameraBitmask) that indicates which particular collision
|
||||
solids should be hidden; otherwise, all of them will be.
|
||||
"""
|
||||
print("NodePath.hideCS() is deprecated. Use findAllMatches('**/+CollisionNode').hide() instead.")
|
||||
npc = self.findAllMatches('**/+CollisionNode')
|
||||
for p in range(0, npc.getNumPaths()):
|
||||
np = npc[p]
|
||||
@ -621,6 +653,7 @@ del getNumDescendants
|
||||
#####################################################################
|
||||
def removeNonCollisions(self):
|
||||
# remove anything that is not collision-related
|
||||
print("NodePath.removeNonCollisions() is deprecated")
|
||||
stack = [self]
|
||||
while len(stack):
|
||||
np = stack.pop()
|
||||
|
3
direct/src/extensions_native/VBase3_extensions.py
Executable file → Normal file
3
direct/src/extensions_native/VBase3_extensions.py
Executable file → Normal file
@ -2,6 +2,9 @@
|
||||
Methods to extend functionality of the VBase3 class
|
||||
"""
|
||||
|
||||
from panda3d.core import VBase3
|
||||
from .extension_native_helpers import Dtool_funcToMethod
|
||||
|
||||
def pPrintValues(self):
|
||||
"""
|
||||
Pretty print
|
||||
|
4
direct/src/extensions_native/VBase4_extensions.py
Executable file → Normal file
4
direct/src/extensions_native/VBase4_extensions.py
Executable file → Normal file
@ -2,6 +2,9 @@
|
||||
Methods to extend functionality of the VBase4 class
|
||||
"""
|
||||
|
||||
from panda3d.core import VBase4
|
||||
from .extension_native_helpers import Dtool_funcToMethod
|
||||
|
||||
def pPrintValues(self):
|
||||
"""
|
||||
Pretty print
|
||||
@ -16,6 +19,5 @@ def asTuple(self):
|
||||
"""
|
||||
print("Warning: VBase4.asTuple() is no longer needed and deprecated. Use the vector directly instead.")
|
||||
return tuple(self)
|
||||
|
||||
Dtool_funcToMethod(asTuple, VBase4)
|
||||
del asTuple
|
||||
|
@ -1,28 +0,0 @@
|
||||
import sys
|
||||
|
||||
main_dir = Filename()
|
||||
|
||||
if sys.argv and sys.argv[0]:
|
||||
main_dir = Filename.from_os_specific(sys.argv[0])
|
||||
|
||||
if main_dir.empty():
|
||||
# We must be running in the Python interpreter directly, so return the CWD.
|
||||
main_dir = ExecutionEnvironment.get_cwd()
|
||||
else:
|
||||
main_dir.make_absolute()
|
||||
main_dir = Filename(main_dir.get_dirname())
|
||||
ExecutionEnvironment.shadow_environment_variable('MAIN_DIR', main_dir.to_os_specific())
|
||||
del sys, main_dir
|
||||
|
||||
|
||||
def Dtool_funcToMethod(func, cls, method_name=None):
|
||||
"""Adds func to class so it is an accessible method; use method_name to specify the name to be used for calling the method.
|
||||
The new method is accessible to any instance immediately."""
|
||||
#if sys.version_info < (3, 0):
|
||||
# func.im_class = cls
|
||||
func.im_func = func
|
||||
func.im_self = None
|
||||
if not method_name:
|
||||
method_name = func.__name__
|
||||
cls.DtoolClassDict[method_name] = func;
|
||||
|
@ -7,6 +7,8 @@ from direct.showbase.DirectObject import DirectObject
|
||||
from direct.task.Task import Task, TaskManager
|
||||
from panda3d.core import *
|
||||
from panda3d.direct import *
|
||||
from direct.extensions_native import CInterval_extensions
|
||||
from direct.extensions_native import NodePath_extensions
|
||||
import math
|
||||
|
||||
class Interval(DirectObject):
|
||||
|
@ -11,6 +11,8 @@ from panda3d.core import *
|
||||
from panda3d.direct import get_config_showbase, throw_new_frame, init_app_for_gui
|
||||
from panda3d.direct import storeAccessibilityShortcutKeys, allowAccessibilityShortcutKeys
|
||||
|
||||
# Register the extension methods for NodePath.
|
||||
from direct.extensions_native import NodePath_extensions
|
||||
|
||||
# This needs to be available early for DirectGUI imports
|
||||
import __builtin__ as builtins
|
||||
|
@ -19,6 +19,7 @@ except ImportError:
|
||||
signal = None
|
||||
|
||||
from panda3d.core import *
|
||||
from direct.extensions_native import HTTPChannel_extensions
|
||||
|
||||
def print_exc_plus():
|
||||
"""
|
||||
|
@ -14,6 +14,7 @@
|
||||
|
||||
#include "py_panda.h"
|
||||
#include "config_interrogatedb.h"
|
||||
#include "executionEnvironment.h"
|
||||
|
||||
#ifdef HAVE_PYTHON
|
||||
|
||||
@ -626,6 +627,50 @@ PyObject *Dtool_PyModuleInitHelper(LibraryDef *defs[], const char *modulename) {
|
||||
#endif
|
||||
}
|
||||
|
||||
// MAIN_DIR needs to be set very early; this seems like a convenient place
|
||||
// to do that. Perhaps we'll find a better place for this in the future.
|
||||
static bool initialized_main_dir = false;
|
||||
if (!initialized_main_dir) {
|
||||
// Grab the __main__ module.
|
||||
PyObject *main_module = PyImport_ImportModule("__main__");
|
||||
if (main_module == NULL) {
|
||||
interrogatedb_cat.warning() << "Unable to import __main__\n";
|
||||
}
|
||||
|
||||
// Extract the __file__ attribute, if present.
|
||||
Filename main_dir;
|
||||
PyObject *file_attr = PyObject_GetAttrString(main_module, "__file__");
|
||||
if (file_attr == NULL) {
|
||||
// Must be running in the interactive interpreter. Use the CWD.
|
||||
main_dir = ExecutionEnvironment::get_cwd();
|
||||
} else {
|
||||
#if PY_MAJOR_VERSION >= 3
|
||||
Py_ssize_t length;
|
||||
wchar_t *buffer = PyUnicode_AsWideCharString(file_attr, &length);
|
||||
if (buffer != NULL) {
|
||||
main_dir = Filename::from_os_specific_w(std::wstring(buffer, length));
|
||||
main_dir.make_absolute();
|
||||
main_dir = main_dir.get_dirname();
|
||||
PyMem_Free(buffer);
|
||||
}
|
||||
#else
|
||||
char *buffer;
|
||||
Py_ssize_t length;
|
||||
if (PyString_AsStringAndSize(file_attr, &buffer, &length) != -1) {
|
||||
main_dir = Filename::from_os_specific(std::string(buffer, length));
|
||||
main_dir.make_absolute();
|
||||
main_dir = main_dir.get_dirname();
|
||||
}
|
||||
#endif
|
||||
else {
|
||||
interrogatedb_cat.warning() << "Invalid string for __main__.__file__\n";
|
||||
}
|
||||
}
|
||||
ExecutionEnvironment::shadow_environment_variable("MAIN_DIR", main_dir.to_os_specific());
|
||||
PyErr_Clear();
|
||||
initialized_main_dir = true;
|
||||
}
|
||||
|
||||
PyModule_AddIntConstant(module, "Dtool_PyNativeInterface", 1);
|
||||
return module;
|
||||
}
|
||||
|
@ -1789,29 +1789,6 @@ def CompileRsrc(target, src, opts):
|
||||
cmd += " " + BracketNameWithQuotes(src)
|
||||
oscmd(cmd)
|
||||
|
||||
##########################################################################################
|
||||
#
|
||||
# GenPyExtensions
|
||||
#
|
||||
##########################################################################################
|
||||
|
||||
def GenPyExtensions(target, inputs, opts):
|
||||
# Hopefully the need for this will soon go away as we migrate everything to
|
||||
# C extensions.
|
||||
|
||||
code = "# This file is automatically generated by makepanda.py. Do not modify.\n"
|
||||
code += "from __future__ import absolute_import\n"
|
||||
|
||||
for i in inputs:
|
||||
if GetOrigExt(i) == ".pyd":
|
||||
code += "from .%s import *\n" % (os.path.splitext(os.path.basename(i))[0])
|
||||
elif GetOrigExt(i) == ".py":
|
||||
code += "### BEGIN %s\n" % i
|
||||
code += ReadFile(i)
|
||||
code += "### END %s\n" % i
|
||||
|
||||
WriteFile(target, code)
|
||||
|
||||
##########################################################################################
|
||||
#
|
||||
# FreezePy
|
||||
@ -1968,10 +1945,6 @@ def CompileAnything(target, inputs, opts, progress = None):
|
||||
os.system("chmod +x \"%s\"" % target)
|
||||
return
|
||||
|
||||
elif (target.endswith(".py")):
|
||||
ProgressOutput(progress, "Generating", target)
|
||||
return GenPyExtensions(target, inputs, opts)
|
||||
|
||||
elif (infile.endswith(".py")):
|
||||
if origsuffix == ".obj":
|
||||
source = os.path.splitext(target)[0] + ".c"
|
||||
@ -2622,28 +2595,22 @@ if (PkgSkip("DIRECT")==0):
|
||||
if os.path.isfile(GetOutputDir() + '/lib/panda3d.py'):
|
||||
os.remove(GetOutputDir() + '/lib/panda3d.py')
|
||||
|
||||
# Don't copy this file, which would cause conflict with our 'panda3d' module.
|
||||
if os.path.isfile(GetOutputDir() + '/direct/ffi/panda3d.py'):
|
||||
os.remove(GetOutputDir() + '/direct/ffi/panda3d.py')
|
||||
if os.path.isfile(GetOutputDir() + '/direct/ffi/panda3d.pyc'):
|
||||
os.remove(GetOutputDir() + '/direct/ffi/panda3d.pyc')
|
||||
# This directory doesn't exist at all any more.
|
||||
if os.path.isdir(os.path.join(GetOutputDir(), 'direct', 'ffi')):
|
||||
shutil.rmtree(os.path.join(GetOutputDir(), 'direct', 'ffi'))
|
||||
|
||||
# This used to exist; no longer.
|
||||
if GetTarget() == 'windows':
|
||||
core_so = GetOutputDir() + '/panda3d/core.pyd'
|
||||
direct_so = GetOutputDir() + '/panda3d/direct.pyd'
|
||||
dtoolconfig_so = GetOutputDir() + '/panda3d/dtoolconfig.pyd'
|
||||
else:
|
||||
core_so = GetOutputDir() + '/panda3d/core.so'
|
||||
direct_so = GetOutputDir() + '/panda3d/direct.so'
|
||||
dtoolconfig_so = GetOutputDir() + '/panda3d/dtoolconfig.so'
|
||||
# These files used to exist; remove them to avoid conflicts.
|
||||
del_files = ['core.py', 'core.pyc', 'core.pyo',
|
||||
'_core.pyd', '_core.so',
|
||||
'direct.py', 'direct.pyc', 'direct.pyo',
|
||||
'_direct.pyd', '_direct.so',
|
||||
'dtoolconfig.pyd', 'dtoolconfig.so']
|
||||
|
||||
if os.path.isfile(core_so):
|
||||
os.remove(core_so)
|
||||
if os.path.isfile(direct_so):
|
||||
os.remove(direct_so)
|
||||
if os.path.isfile(dtoolconfig_so):
|
||||
os.remove(dtoolconfig_so)
|
||||
for basename in del_files:
|
||||
path = os.path.join(GetOutputDir(), 'panda3d', basename)
|
||||
if os.path.isfile(path):
|
||||
print("Removing %s" % (path))
|
||||
os.remove(path)
|
||||
|
||||
# Write an appropriate panda3d/__init__.py
|
||||
p3d_init = """"Python bindings for the Panda3D libraries"
|
||||
@ -2663,7 +2630,14 @@ if os.path.isfile(os.path.join(bindir, 'libpanda.dll')):
|
||||
del os, bindir
|
||||
"""
|
||||
|
||||
ConditionalWriteFile(GetOutputDir() + '/panda3d/__init__.py', p3d_init)
|
||||
if not PkgSkip("PYTHON"):
|
||||
ConditionalWriteFile(GetOutputDir() + '/panda3d/__init__.py', p3d_init)
|
||||
|
||||
# Also add this file, for backward compatibility.
|
||||
ConditionalWriteFile(GetOutputDir() + '/panda3d/dtoolconfig.py', """
|
||||
print("Warning: panda3d.dtoolconfig is deprecated, use panda3d.interrogatedb instead.")
|
||||
from .interrogatedb import *
|
||||
""")
|
||||
|
||||
# PandaModules is now deprecated; generate a shim for backward compatibility.
|
||||
for fn in glob.glob(GetOutputDir() + '/pandac/*.py') + glob.glob(GetOutputDir() + '/pandac/*.py[co]'):
|
||||
@ -2703,8 +2677,9 @@ except ImportError as err:
|
||||
if "No module named %s" not in str(err):
|
||||
raise""" % (module, module)
|
||||
|
||||
ConditionalWriteFile(GetOutputDir() + '/pandac/PandaModules.py', panda_modules_code)
|
||||
ConditionalWriteFile(GetOutputDir() + '/pandac/__init__.py', '')
|
||||
if not PkgSkip("PYTHON"):
|
||||
ConditionalWriteFile(GetOutputDir() + '/pandac/PandaModules.py', panda_modules_code)
|
||||
ConditionalWriteFile(GetOutputDir() + '/pandac/__init__.py', '')
|
||||
|
||||
##########################################################################################
|
||||
#
|
||||
@ -3197,9 +3172,6 @@ if not PkgSkip("PYTHON"):
|
||||
TargetAdd('interrogatedb.pyd', input='libp3interrogatedb.dll')
|
||||
TargetAdd('interrogatedb.pyd', opts=['PYTHON'])
|
||||
|
||||
# Make a stub file importing the new one for backward compatibility.
|
||||
TargetAdd('panda3d/dtoolconfig.py', input='interrogatedb.pyd')
|
||||
|
||||
#
|
||||
# DIRECTORY: dtool/src/pystub/
|
||||
#
|
||||
@ -3930,69 +3902,60 @@ if (not RUNTIME):
|
||||
if PkgSkip("FREETYPE")==0:
|
||||
TargetAdd('core_module.obj', input='libp3pnmtext.in')
|
||||
|
||||
TargetAdd('core_module.obj', opts=['IMOD:panda3d._core', 'ILIB:_core'])
|
||||
TargetAdd('core_module.obj', opts=['IMOD:panda3d.core', 'ILIB:core'])
|
||||
|
||||
TargetAdd('_core.pyd', input='libp3downloader_igate.obj')
|
||||
TargetAdd('_core.pyd', input='p3downloader_stringStream_ext.obj')
|
||||
TargetAdd('_core.pyd', input='p3express_ext_composite.obj')
|
||||
TargetAdd('_core.pyd', input='libp3express_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3downloader_igate.obj')
|
||||
TargetAdd('core.pyd', input='p3downloader_stringStream_ext.obj')
|
||||
TargetAdd('core.pyd', input='p3express_ext_composite.obj')
|
||||
TargetAdd('core.pyd', input='libp3express_igate.obj')
|
||||
|
||||
TargetAdd('_core.pyd', input='libp3recorder_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3pgraphnodes_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3pgraph_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3movies_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3grutil_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3chan_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3pstatclient_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3char_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3collide_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3device_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3dgraph_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3display_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3pipeline_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3event_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3gobj_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3gsgbase_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3linmath_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3mathutil_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3parametrics_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3pnmimage_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3text_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3tform_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3putil_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3audio_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3pgui_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3net_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3nativenet_igate.obj')
|
||||
TargetAdd('_core.pyd', input='libp3dxml_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3recorder_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3pgraphnodes_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3pgraph_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3movies_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3grutil_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3chan_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3pstatclient_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3char_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3collide_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3device_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3dgraph_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3display_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3pipeline_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3event_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3gobj_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3gsgbase_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3linmath_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3mathutil_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3parametrics_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3pnmimage_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3text_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3tform_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3putil_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3audio_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3pgui_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3net_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3nativenet_igate.obj')
|
||||
TargetAdd('core.pyd', input='libp3dxml_igate.obj')
|
||||
|
||||
if PkgSkip("FREETYPE")==0:
|
||||
TargetAdd('_core.pyd', input="libp3pnmtext_igate.obj")
|
||||
TargetAdd('core.pyd', input="libp3pnmtext_igate.obj")
|
||||
|
||||
TargetAdd('_core.pyd', input='p3putil_typedWritable_ext.obj')
|
||||
TargetAdd('_core.pyd', input='p3putil_pythonCallbackObject.obj')
|
||||
TargetAdd('_core.pyd', input='p3pnmimage_pfmFile_ext.obj')
|
||||
TargetAdd('_core.pyd', input='p3event_pythonTask.obj')
|
||||
TargetAdd('_core.pyd', input='p3gobj_ext_composite.obj')
|
||||
TargetAdd('_core.pyd', input='p3pgraph_ext_composite.obj')
|
||||
TargetAdd('_core.pyd', input='p3display_graphicsStateGuardian_ext.obj')
|
||||
TargetAdd('_core.pyd', input='p3display_graphicsWindow_ext.obj')
|
||||
TargetAdd('_core.pyd', input='p3display_pythonGraphicsWindowProc.obj')
|
||||
TargetAdd('core.pyd', input='p3putil_typedWritable_ext.obj')
|
||||
TargetAdd('core.pyd', input='p3putil_pythonCallbackObject.obj')
|
||||
TargetAdd('core.pyd', input='p3pnmimage_pfmFile_ext.obj')
|
||||
TargetAdd('core.pyd', input='p3event_pythonTask.obj')
|
||||
TargetAdd('core.pyd', input='p3gobj_ext_composite.obj')
|
||||
TargetAdd('core.pyd', input='p3pgraph_ext_composite.obj')
|
||||
TargetAdd('core.pyd', input='p3display_graphicsStateGuardian_ext.obj')
|
||||
TargetAdd('core.pyd', input='p3display_graphicsWindow_ext.obj')
|
||||
TargetAdd('core.pyd', input='p3display_pythonGraphicsWindowProc.obj')
|
||||
|
||||
TargetAdd('_core.pyd', input='core_module.obj')
|
||||
TargetAdd('_core.pyd', input='libp3tinyxml.ilb')
|
||||
TargetAdd('_core.pyd', input='libp3interrogatedb.dll')
|
||||
TargetAdd('_core.pyd', input=COMMON_PANDA_LIBS)
|
||||
TargetAdd('_core.pyd', opts=['PYTHON', 'WINSOCK2'])
|
||||
|
||||
OPTS=['DIR:direct/src/extensions_native']
|
||||
TargetAdd('panda3d/core.py', input='_core.pyd')
|
||||
TargetAdd('panda3d/core.py', opts=OPTS, input='core_extensions.py')
|
||||
TargetAdd('panda3d/core.py', opts=OPTS, input='NodePath_extensions.py')
|
||||
TargetAdd('panda3d/core.py', opts=OPTS, input='Mat3_extensions.py')
|
||||
TargetAdd('panda3d/core.py', opts=OPTS, input='VBase3_extensions.py')
|
||||
TargetAdd('panda3d/core.py', opts=OPTS, input='VBase4_extensions.py')
|
||||
TargetAdd('panda3d/core.py', opts=OPTS, input='HTTPChannel_extensions.py')
|
||||
TargetAdd('core.pyd', input='core_module.obj')
|
||||
TargetAdd('core.pyd', input='libp3tinyxml.ilb')
|
||||
TargetAdd('core.pyd', input='libp3interrogatedb.dll')
|
||||
TargetAdd('core.pyd', input=COMMON_PANDA_LIBS)
|
||||
TargetAdd('core.pyd', opts=['PYTHON', 'WINSOCK2'])
|
||||
|
||||
#
|
||||
# DIRECTORY: panda/src/vision/
|
||||
@ -4014,7 +3977,7 @@ if (PkgSkip("VISION") == 0) and (not RUNTIME):
|
||||
|
||||
TargetAdd('vision_module.obj', input='libp3vision.in')
|
||||
TargetAdd('vision_module.obj', opts=OPTS)
|
||||
TargetAdd('vision_module.obj', opts=['IMOD:panda3d.vision', 'ILIB:vision', 'IMPORT:panda3d._core'])
|
||||
TargetAdd('vision_module.obj', opts=['IMOD:panda3d.vision', 'ILIB:vision', 'IMPORT:panda3d.core'])
|
||||
|
||||
TargetAdd('vision.pyd', input='vision_module.obj')
|
||||
TargetAdd('vision.pyd', input='libp3vision_igate.obj')
|
||||
@ -4045,7 +4008,7 @@ if (PkgSkip("ROCKET") == 0) and (not RUNTIME):
|
||||
|
||||
TargetAdd('rocket_module.obj', input='libp3rocket.in')
|
||||
TargetAdd('rocket_module.obj', opts=OPTS)
|
||||
TargetAdd('rocket_module.obj', opts=['IMOD:panda3d.rocket', 'ILIB:rocket', 'IMPORT:panda3d._core'])
|
||||
TargetAdd('rocket_module.obj', opts=['IMOD:panda3d.rocket', 'ILIB:rocket', 'IMPORT:panda3d.core'])
|
||||
|
||||
TargetAdd('rocket.pyd', input='rocket_module.obj')
|
||||
TargetAdd('rocket.pyd', input='libp3rocket_igate.obj')
|
||||
@ -4073,7 +4036,7 @@ if PkgSkip("AWESOMIUM") == 0 and not RUNTIME:
|
||||
|
||||
TargetAdd('awesomium_module.obj', input='libp3awesomium.in')
|
||||
TargetAdd('awesomium_module.obj', opts=OPTS)
|
||||
TargetAdd('awesomium_module.obj', opts=['IMOD:panda3d.awesomium', 'ILIB:awesomium', 'IMPORT:panda3d._core'])
|
||||
TargetAdd('awesomium_module.obj', opts=['IMOD:panda3d.awesomium', 'ILIB:awesomium', 'IMPORT:panda3d.core'])
|
||||
|
||||
TargetAdd('awesomium.pyd', input='awesomium_module.obj')
|
||||
TargetAdd('awesomium.pyd', input='libp3awesomium_igate.obj')
|
||||
@ -4107,7 +4070,7 @@ if (PkgSkip('SKEL')==0) and (not RUNTIME):
|
||||
TargetAdd('libpandaskel.dll', opts=OPTS)
|
||||
|
||||
TargetAdd('skel_module.obj', input='libp3skel.in')
|
||||
TargetAdd('skel_module.obj', opts=['IMOD:panda3d.skel', 'ILIB:skel', 'IMPORT:panda3d._core'])
|
||||
TargetAdd('skel_module.obj', opts=['IMOD:panda3d.skel', 'ILIB:skel', 'IMPORT:panda3d.core'])
|
||||
|
||||
TargetAdd('skel.pyd', input='skel_module.obj')
|
||||
TargetAdd('skel.pyd', input='libp3skel_igate.obj')
|
||||
@ -4146,7 +4109,7 @@ if (PkgSkip('PANDAFX')==0) and (not RUNTIME):
|
||||
OPTS=['DIR:panda/metalibs/pandafx', 'DIR:panda/src/distort', 'NVIDIACG']
|
||||
TargetAdd('fx_module.obj', input='libp3distort.in')
|
||||
TargetAdd('fx_module.obj', opts=OPTS)
|
||||
TargetAdd('fx_module.obj', opts=['IMOD:panda3d.fx', 'ILIB:fx', 'IMPORT:panda3d._core'])
|
||||
TargetAdd('fx_module.obj', opts=['IMOD:panda3d.fx', 'ILIB:fx', 'IMPORT:panda3d.core'])
|
||||
|
||||
TargetAdd('fx.pyd', input='fx_module.obj')
|
||||
TargetAdd('fx.pyd', input='libp3distort_igate.obj')
|
||||
@ -4174,7 +4137,7 @@ if (PkgSkip("VRPN")==0 and not RUNTIME):
|
||||
|
||||
TargetAdd('vrpn_module.obj', input='libp3vrpn.in')
|
||||
TargetAdd('vrpn_module.obj', opts=OPTS)
|
||||
TargetAdd('vrpn_module.obj', opts=['IMOD:panda3d.vrpn', 'ILIB:vrpn', 'IMPORT:panda3d._core'])
|
||||
TargetAdd('vrpn_module.obj', opts=['IMOD:panda3d.vrpn', 'ILIB:vrpn', 'IMPORT:panda3d.core'])
|
||||
|
||||
TargetAdd('vrpn.pyd', input='vrpn_module.obj')
|
||||
TargetAdd('vrpn.pyd', input='libp3vrpn_igate.obj')
|
||||
@ -4407,7 +4370,7 @@ if (not RUNTIME):
|
||||
TargetAdd('egg_module.obj', input='libp3egg2pg.in')
|
||||
TargetAdd('egg_module.obj', input='libp3egg.in')
|
||||
TargetAdd('egg_module.obj', opts=OPTS)
|
||||
TargetAdd('egg_module.obj', opts=['IMOD:panda3d.egg', 'ILIB:egg', 'IMPORT:panda3d._core'])
|
||||
TargetAdd('egg_module.obj', opts=['IMOD:panda3d.egg', 'ILIB:egg', 'IMPORT:panda3d.core'])
|
||||
|
||||
TargetAdd('egg.pyd', input='egg_module.obj')
|
||||
TargetAdd('egg.pyd', input='p3egg_eggGroupNode_ext.obj')
|
||||
@ -4574,7 +4537,7 @@ if (PkgSkip("ODE")==0 and not RUNTIME):
|
||||
OPTS=['DIR:panda/metalibs/pandaode', 'ODE']
|
||||
TargetAdd('ode_module.obj', input='libpandaode.in')
|
||||
TargetAdd('ode_module.obj', opts=OPTS)
|
||||
TargetAdd('ode_module.obj', opts=['IMOD:panda3d.ode', 'ILIB:ode', 'IMPORT:panda3d._core'])
|
||||
TargetAdd('ode_module.obj', opts=['IMOD:panda3d.ode', 'ILIB:ode', 'IMPORT:panda3d.core'])
|
||||
|
||||
TargetAdd('ode.pyd', input='ode_module.obj')
|
||||
TargetAdd('ode.pyd', input='libpandaode_igate.obj')
|
||||
@ -4612,7 +4575,7 @@ if (PkgSkip("BULLET")==0 and not RUNTIME):
|
||||
OPTS=['DIR:panda/metalibs/pandabullet', 'BULLET']
|
||||
TargetAdd('bullet_module.obj', input='libpandabullet.in')
|
||||
TargetAdd('bullet_module.obj', opts=OPTS)
|
||||
TargetAdd('bullet_module.obj', opts=['IMOD:panda3d.bullet', 'ILIB:bullet', 'IMPORT:panda3d._core'])
|
||||
TargetAdd('bullet_module.obj', opts=['IMOD:panda3d.bullet', 'ILIB:bullet', 'IMPORT:panda3d.core'])
|
||||
|
||||
TargetAdd('bullet.pyd', input='bullet_module.obj')
|
||||
TargetAdd('bullet.pyd', input='libpandabullet_igate.obj')
|
||||
@ -4651,7 +4614,7 @@ if (PkgSkip("PHYSX")==0):
|
||||
OPTS=['DIR:panda/metalibs/pandaphysx', 'PHYSX', 'NOARCH:PPC']
|
||||
TargetAdd('physx_module.obj', input='libpandaphysx.in')
|
||||
TargetAdd('physx_module.obj', opts=OPTS)
|
||||
TargetAdd('physx_module.obj', opts=['IMOD:panda3d.physx', 'ILIB:physx', 'IMPORT:panda3d._core'])
|
||||
TargetAdd('physx_module.obj', opts=['IMOD:panda3d.physx', 'ILIB:physx', 'IMPORT:panda3d.core'])
|
||||
|
||||
TargetAdd('physx.pyd', input='physx_module.obj')
|
||||
TargetAdd('physx.pyd', input='libpandaphysx_igate.obj')
|
||||
@ -4717,7 +4680,7 @@ if (PkgSkip("PANDAPHYSICS")==0) and (not RUNTIME):
|
||||
if (PkgSkip("PANDAPARTICLESYSTEM")==0):
|
||||
TargetAdd('physics_module.obj', input='libp3particlesystem.in')
|
||||
TargetAdd('physics_module.obj', opts=OPTS)
|
||||
TargetAdd('physics_module.obj', opts=['IMOD:panda3d.physics', 'ILIB:physics', 'IMPORT:panda3d._core'])
|
||||
TargetAdd('physics_module.obj', opts=['IMOD:panda3d.physics', 'ILIB:physics', 'IMPORT:panda3d.core'])
|
||||
|
||||
TargetAdd('physics.pyd', input='physics_module.obj')
|
||||
TargetAdd('physics.pyd', input='libp3physics_igate.obj')
|
||||
@ -4974,23 +4937,19 @@ if (PkgSkip("DIRECT")==0):
|
||||
TargetAdd('direct_module.obj', input='libp3interval.in')
|
||||
TargetAdd('direct_module.obj', input='libp3distributed.in')
|
||||
TargetAdd('direct_module.obj', opts=OPTS)
|
||||
TargetAdd('direct_module.obj', opts=['IMOD:panda3d._direct', 'ILIB:_direct', 'IMPORT:panda3d._core'])
|
||||
TargetAdd('direct_module.obj', opts=['IMOD:panda3d.direct', 'ILIB:direct', 'IMPORT:panda3d.core'])
|
||||
|
||||
TargetAdd('_direct.pyd', input='libp3dcparser_igate.obj')
|
||||
TargetAdd('_direct.pyd', input='libp3showbase_igate.obj')
|
||||
TargetAdd('_direct.pyd', input='libp3deadrec_igate.obj')
|
||||
TargetAdd('_direct.pyd', input='libp3interval_igate.obj')
|
||||
TargetAdd('_direct.pyd', input='libp3distributed_igate.obj')
|
||||
TargetAdd('direct.pyd', input='libp3dcparser_igate.obj')
|
||||
TargetAdd('direct.pyd', input='libp3showbase_igate.obj')
|
||||
TargetAdd('direct.pyd', input='libp3deadrec_igate.obj')
|
||||
TargetAdd('direct.pyd', input='libp3interval_igate.obj')
|
||||
TargetAdd('direct.pyd', input='libp3distributed_igate.obj')
|
||||
|
||||
TargetAdd('_direct.pyd', input='direct_module.obj')
|
||||
TargetAdd('_direct.pyd', input='libp3direct.dll')
|
||||
TargetAdd('_direct.pyd', input='libp3interrogatedb.dll')
|
||||
TargetAdd('_direct.pyd', input=COMMON_PANDA_LIBS)
|
||||
TargetAdd('_direct.pyd', opts=['PYTHON', 'OPENSSL', 'WINUSER', 'WINGDI'])
|
||||
|
||||
OPTS=['DIR:direct/src/extensions_native']
|
||||
TargetAdd('panda3d/direct.py', input='_direct.pyd')
|
||||
TargetAdd('panda3d/direct.py', opts=OPTS, input='CInterval_extensions.py')
|
||||
TargetAdd('direct.pyd', input='direct_module.obj')
|
||||
TargetAdd('direct.pyd', input='libp3direct.dll')
|
||||
TargetAdd('direct.pyd', input='libp3interrogatedb.dll')
|
||||
TargetAdd('direct.pyd', input=COMMON_PANDA_LIBS)
|
||||
TargetAdd('direct.pyd', opts=['PYTHON', 'OPENSSL', 'WINUSER', 'WINGDI'])
|
||||
|
||||
#
|
||||
# DIRECTORY: direct/src/dcparse/
|
||||
@ -5052,7 +5011,7 @@ if (RTDIST or RUNTIME):
|
||||
# Freeze VFSImporter and its dependency modules into p3dpython.
|
||||
# Mark panda3d.core as a dependency to make sure to build that first.
|
||||
TargetAdd('p3dpython_frozen.obj', input='VFSImporter.py', opts=['DIR:direct/src/showbase', 'FREEZE_STARTUP'])
|
||||
TargetAdd('p3dpython_frozen.obj', dep='panda3d/core.py')
|
||||
TargetAdd('p3dpython_frozen.obj', dep='core.pyd')
|
||||
|
||||
TargetAdd('p3dpython_p3dpython_composite1.obj', opts=OPTS, input='p3dpython_composite1.cxx')
|
||||
TargetAdd('p3dpython_p3dPythonMain.obj', opts=OPTS, input='p3dPythonMain.cxx')
|
||||
@ -6201,7 +6160,7 @@ if (PkgSkip("CONTRIB")==0 and not RUNTIME):
|
||||
|
||||
TargetAdd('ai_module.obj', input='libpandaai.in')
|
||||
TargetAdd('ai_module.obj', opts=OPTS)
|
||||
TargetAdd('ai_module.obj', opts=['IMOD:panda3d.ai', 'ILIB:ai', 'IMPORT:panda3d._core'])
|
||||
TargetAdd('ai_module.obj', opts=['IMOD:panda3d.ai', 'ILIB:ai', 'IMPORT:panda3d.core'])
|
||||
|
||||
TargetAdd('ai.pyd', input='ai_module.obj')
|
||||
TargetAdd('ai.pyd', input='libpandaai_igate.obj')
|
||||
|
Loading…
x
Reference in New Issue
Block a user