def __init__(self, game, color, value = 1, drain = 20): self.game = game self.VALUE = value self.DRAIN = drain #self.idnumber = id self.visualNode = NodePath('Visual node') self.visualNode.reparentTo(render) model = loader.loadModel('Ball2.egg') model.setScale(2.5) model.reparentTo(self.visualNode) plight = PointLight('plight') plight.setPoint( Point3(0, 0, 3) ) plight.setColor( color ) plight.setAttenuation( Vec3(0.05, 0.01, 0.01) ) self.plightNodePath = model.attachNewNode(plight) model.setLight(self.plightNodePath) self.body = OdeBody(game.physicsWorld) self.mass = OdeMass() self.mass.setBox(10,1,1,1) self.body.setMass(self.mass) self.body.setGravityMode(True) #self.body.setGravityMode(False) #self.juttu = OdeUtil() self.collGeom = OdeSphereGeom( self.game.physicsSpace, 3.5) self.collGeom.setBody(self.body) self.collGeom.setCategoryBits( BitMask32(0xffffffff) ) self.collGeom.setCollideBits( BitMask32(0xffffffff) )
def __init__(self, game, color): #self.POWER = 100 self.game = game self.thrust = False self.thrustLeft = False self.thrustRight = False self.thrustBack = False self.rotation = 0 self.body = OdeBody(game.physicsWorld) self.mass = OdeMass() self.mass.setBox(10,1,1,1) self.body.setMass(self.mass) #odespheregeom(... , size of hitbox sphere) self.collGeom = OdeSphereGeom( self.game.physicsSpace, 5) self.collGeom.setBody(self.body) self.collGeom.setCategoryBits( BitMask32(0xffffffff) ) self.collGeom.setCollideBits( BitMask32(0xffffffff) ) self.visualNode = NodePath('Visual node') self.visualNode.reparentTo(render) model = loader.loadModel('lautanen2.egg') model.reparentTo(self.visualNode) plight = PointLight('plight') plight.setPoint( Point3(0.6, 0, 5) ) plight.setColor( color ) plight.setAttenuation( Vec3(0.5, 0.01, 0.01) ) plightNodePath = model.attachNewNode(plight) model.setLight(plightNodePath)
def __init__(self, game, color): self.game = game self.visualNode = NodePath('Visual node') self.visualNode.reparentTo(render) model = loader.loadModel('testipalikka.egg') model.reparentTo(self.visualNode) plight = PointLight('plight') plight.setPoint( Point3(0.6, 0, 5) ) plight.setColor( color ) plight.setAttenuation( Vec3(0.5, 0.01, 0.01) ) plightNodePath = model.attachNewNode(plight) model.setLight(plightNodePath) self.body = OdeBody(game.physicsWorld) self.mass = OdeMass() self.mass.setBox(10,1,1,1) self.body.setMass(self.mass) self.body.setGravityMode(False) #self.juttu = OdeUtil() self.collGeom = OdeSphereGeom( self.game.physicsSpace, 2) self.collGeom.setBody(self.body) self.collGeom.setCategoryBits( BitMask32(0xffffffff) ) self.collGeom.setCollideBits( BitMask32(0xffffffff) )
def setColor(self, color): plight = PointLight('plight') plight.setPoint( Point3(0.6, 0, 5) ) plight.setColor( color ) plight.setAttenuation( Vec3(0.5, 0.01, 0.01) ) plightNodePath = self.model.attachNewNode(plight) self.model.setLight(plightNodePath)
def __init__(self, game): self.game = game #poista se fysiikka-avaruus ja vaan tee se alue... justiinsa self.collGeom = OdeBoxGeom( 24,8,2 ) #self.collGeom.setBody(self.body) self.collGeom.setCategoryBits( BitMask32(1) ) self.collGeom.setCollideBits( BitMask32(1) ) # self.collGeomOuter = OdeBoxGeom( self.game.physicsSpace, 28,6,2) # #self.collGeom.setBody(self.body) # self.collGeomOuter.setCategoryBits( BitMask32(1) ) # self.collGeomOuter.setCollideBits( BitMask32(1) ) self.visualNode = NodePath('Visual node') self.visualNode.reparentTo(render) model = loader.loadModel('Base.egg') model.reparentTo(self.visualNode) plight = PointLight('baselight') plight.setPoint( Point3(0, 0, 12) ) plight.setColor( Vec4(1,1,1,1) ) plight.setAttenuation( Vec3(0.1, 0.1, 0.005) ) self.visualNode.setLight(model.attachNewNode(plight))
def addPointLight(self, pos): k = 12 light = PointLight("light-point") light.setColor(VBase4(k, k, k, 1)) light.setAttenuation(Point3(0.2, 0.1, 0.01)) node = render.attachNewNode(light) node.setPos(*pos) render.setLight(node)
def __init__(self, game, color): self.POWER = 200 self.game = game self.SHIP_TYPE = "RAKETTI" self.Ball_offset = 10.0 # self.hasBall = False self.thrust = False self.thrustLeft = False self.thrustRight = False self.thrustBack = False self.rotation = 0 self.body = OdeBody(game.physicsWorld) self.mass = OdeMass() self.mass.setBox(10,1,1,1) self.body.setMass(self.mass) #self.body.setGravityMode(False) #odespheregeom(... , size of hitbox sphere) self.collGeom = OdeSphereGeom( self.game.physicsSpace, 3) self.collGeom.setBody(self.body) self.collGeom.setCategoryBits( BitMask32(0xffffffff) ) self.collGeom.setCollideBits( BitMask32(0xffffffff) ) self.visualNode = NodePath('Visual node') self.visualNode.reparentTo(render) model = loader.loadModel('spaceship.egg') model.setH(180) model.setY(15) model.reparentTo(self.visualNode) self.visualNode.setScale(0.4) plight = PointLight('plight') plight.setPoint( Point3(0.6, 0, 5) ) plight.setColor( color ) plight.setAttenuation( Vec3(0.5, 0.01, 0.01) ) plightNodePath = model.attachNewNode(plight) model.setLight(plightNodePath)
class PointOverbright (object): _count = 0 def __init__ (self, parent, color, radius, halfat=None, subnode=None, pos=Point3(), name=None): self.parent = parent if halfat is None: halfat = 0.5 if name is None: name = "poverbright%d" % PointOverbright._count self.name = name self._pntlt = PointLight(self.name) pnode = subnode if subnode is not None else self.parent.node self.node = pnode.attachNewNode(self._pntlt) self.node.setPos(pos) self.update(color, radius, halfat, pos) self.alive = True PointOverbright._count += 1 base.taskMgr.add(self._loop, "poverbright-loop") def destroy (self): if not self.alive: return self.alive = False self.node.removeNode() def update (self, color=None, radius=None, halfat=None, pos=None): if color is not None: self._pntlt.setColor(color) self.color = color self._colamp = Vec3(color[0], color[1], color[2]).length() if radius is not None or halfat is not None: if radius is None: radius = self.radius if halfat is None: halfat = self.halfat assert 0.0 < halfat < 1.0 radpow = log(0.5) / log(halfat) self._pntlt.setAttenuation(Vec3(radius, radpow, 0.0)) self.radius = radius self.halfat = halfat self._radpow = radpow if pos is not None: self.node.setPos(pos) def strength (self, dist): if self._colamp > 0.0: att = 1.0 if dist > 0.0: att -= pow(min(dist / self.radius, 1.0), self._radpow) return self._colamp * att else: return 0.0 def _loop (self, task): if not self.alive: return task.done if not self.parent.alive: self.destroy() return task.done return task.cont