コード例 #1
0
ファイル: HGameObject.py プロジェクト: PlumpMath/HPanda
class HNewGameObject(NodePath):
    def __init__(self, name, scene, visualMesh, physicsMesh=None, physicsType="character", shapeMargin=0.02, stepHeight=0.5, x=0, y=0, z=0, mass=0, convex=True,
                 directRender=True, parent=None):
        global physicsTypes
        self.name = name
        self.scene = scene
        NodePath.__init__(self, self.scene.loadEgg(visualMesh))
        if physicsMesh != None:
            if physicsType == "rigid":
                self.body = BulletRigidBodyNode(self.name + "_RigidBody")
                self.attachNewNode(self.body)
                m = self.scene.Base.loader.loadModel(physicsMesh)
                if convex:
                    sTuple = modelToConvex(m)
                else:
                    sTuple = modelToShape(m)
                sTuple[0].setMargin(shapeMargin)
                self.body.addShape(sTuple[0], sTuple[1])
                self.body.setMass(mass)
                self.body.setPythonTag("name", self.name + "_RigidBody")
                self.scene.world.attachRigidBody(self.body)
            elif physicsType=="character":
                m = self.scene.Base.loader.loadModel(physicsMesh)
                sTuple = modelToConvex(m)
                sTuple[0].setMargin(shapeMargin)
                self.body = BulletCharacterControllerNode(sTuple[0], stepHeight, self.name + "_Character")
                self.attachNewNode(self.body)
                self.body.setPythonTag("name", self.name + "_Character")
                self.scene.world.attachCharacter(self.body)

        self.setPos(x, y, z)
        if directRender:
            self.reparentTo(self.scene.Base.render)
        elif parent != None:
            self.reparentTo(parent)