def initGlass(self, world, space, width, height): engine.deleteModel(self.node, "models/fragment/GlassFragment") maker = CardMaker("glassNode") maker.setFrame(-width / 2.0, width / 2.0, -height / 2.0, height / 2.0) maker.setUvRange(Point2(0.0, 0.0), Point2(width, height) * 0.04) self.node = hidden.attachNewNode(maker.generate()) self.node.setTexture(loader.loadTexture("models/fragment/glass.png")) self.node.setTwoSided(True) self.node.setTransparency(TransparencyAttrib.MAlpha) self.node.setName(str(int(self.id))) self.node.hide(BitMask32.bit(4)) # Don't cast shadows self.radius = width / 2.0 self.vradius = height / 2.0 self.collisionNode = CollisionNode("cnode") point1 = Point3(-width / 2.0, 0, -height / 2.0) point2 = Point3(-width / 2.0, 0, height / 2.0) point3 = Point3(width / 2.0, 0, height / 2.0) point4 = Point3(width / 2.0, 0, -height / 2.0) self.collisionNode.addSolid( CollisionPolygon(point4, point3, point2, point1)) self.collisionNode.addSolid( CollisionPolygon(point1, point2, point3, point4)) self.collisionNodePath = self.node.attachNewNode(self.collisionNode) self.geometry = OdeBoxGeom(space, width, 0.5, height) self.geometry.setCollideBits(BitMask32(0x00000001)) self.geometry.setCategoryBits(BitMask32(0x00000001)) space.setSurfaceType(self.geometry, 1) self.shattered = False self.glassWidth = width self.glassHeight = height
def initGlass(self, world, space, width, height): engine.deleteModel(self.node, "models/fragment/GlassFragment") maker = CardMaker("glassNode") maker.setFrame(-width / 2.0, width / 2.0, -height / 2.0, height / 2.0) maker.setUvRange(Point2(0.0, 0.0), Point2(width, height) * 0.04) self.node = hidden.attachNewNode(maker.generate()) self.node.setTexture(loader.loadTexture("models/fragment/glass.png")) self.node.setTwoSided(True) self.node.setTransparency(TransparencyAttrib.MAlpha) self.node.setName(str(int(self.id))) self.node.hide(BitMask32.bit(4)) # Don't cast shadows self.radius = width / 2.0 self.vradius = height / 2.0 self.collisionNode = CollisionNode("cnode") point1 = Point3(-width / 2.0, 0, -height / 2.0) point2 = Point3(-width / 2.0, 0, height / 2.0) point3 = Point3(width / 2.0, 0, height / 2.0) point4 = Point3(width / 2.0, 0, -height / 2.0) self.collisionNode.addSolid(CollisionPolygon(point4, point3, point2, point1)) self.collisionNode.addSolid(CollisionPolygon(point1, point2, point3, point4)) self.collisionNodePath = self.node.attachNewNode(self.collisionNode) self.geometry = OdeBoxGeom(space, width, 0.5, height) self.geometry.setCollideBits(BitMask32(0x00000001)) self.geometry.setCategoryBits(BitMask32(0x00000001)) space.setSurfaceType(self.geometry, 1) self.shattered = False self.glassWidth = width self.glassHeight = height
def clear(self, entityGroup): """Clears all resources associated with this ObjectEntity.""" Entity.clear(self, entityGroup) try: self.geometry.destroy() self.body.destroy() except: pass engine.deleteModel(self.node, self.filename)
def clear(self, entityGroup): Actor.clear(self, entityGroup) engine.deleteModel(self.shieldNode, "models/shield/shield")