Ejemplo n.º 1
0
    def makeBulletRicochet(self, dgi):
        pos = CIGlobals.getVec3(dgi)
        dir = CIGlobals.getVec3(dgi)
        scale = dgi.getFloat64()

        start = (0, 0, 0)
        end = dir * scale

        from panda3d.core import LineSegs, Vec4
        from direct.interval.IntervalGlobal import Sequence, Func, Parallel
        lines = LineSegs()
        lines.setColor(Vec4(1, 1, 1, 1))
        lines.setThickness(1)
        lines.moveTo(start)
        lines.drawTo(end)
        np = render.attachNewNode(lines.create())
        np.setLightOff(1)
        np.setPos(pos)
        Sequence(
            Parallel(np.posInterval(0.1, pos + end, pos),
                     np.scaleInterval(0.1, (0.001, 0.001, 0.001), (1, 1, 1))),
            Func(np.removeNode)).start()

        import random
        soundDir = "sound/weapons/ric{0}.wav"
        soundIdx = random.randint(1, 5)
        CIGlobals.emitSound(soundDir.format(soundIdx), pos)
Ejemplo n.º 2
0
    def makeLaser(self, dgi):
        start = CIGlobals.getVec3(dgi)
        end = CIGlobals.getVec3(dgi)
        color = CIGlobals.getVec3(dgi)
        scale = dgi.getFloat64()

        laser = loader.loadModel("phase_14/models/props/laser.egg")
        laser.find("**/laser").setBillboardAxis()
        laser.setLightOff(1)
        laser.setMaterialOff(1)
        laser.setTwoSided(True)
        laser.setPos(start)
        laser.lookAt(end)
        laser.setP(laser.getP() + 90)
        laser.reparentTo(render)

        dist = (end - start).length()
        laser.setScale(scale, scale, dist)

        from direct.interval.IntervalGlobal import Sequence, Func, Parallel, Wait

        ival = Sequence(
            Wait(0.5),
            Parallel(
                laser.posInterval(0.1, end, start),
                laser.scaleInterval(0.1, (scale, scale, 0.001),
                                    (scale, scale, dist))),
            Func(laser.removeNode))
        ival.start()
Ejemplo n.º 3
0
 def makeDecalTrace(self, dgi):
     material = dgi.getString()
     scale = dgi.getFloat64()
     rot = dgi.getFloat64()
     start = CIGlobals.getVec3(dgi)
     end = CIGlobals.getVec3(dgi)
     base.bspLoader.traceDecal(material, scale, rot, start, end)
    def primaryFirePress(self, data):
        if not self.canUse():
            return

        dg = PyDatagram(data)
        dgi = PyDatagramIterator(dg)
        self.traceOrigin = CIGlobals.getVec3(dgi)
        self.traceVector = CIGlobals.getVec3(dgi)
        self.setNextAction(self.StateFire)
Ejemplo n.º 5
0
 def makeExplosion(self, dgi):
     pos = CIGlobals.getVec3(dgi)
     scale = dgi.getFloat64()
     sound = bool(dgi.getUint8())
     shakeCam = bool(dgi.getUint8())
     duration = dgi.getFloat64()
     soundVol = dgi.getFloat64()
     CIGlobals.makeExplosion(pos, scale, sound, shakeCam, duration,
                             soundVol)