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)