def __calcAimOffset(self, aimLocalTransform=None):
     aimingSystemMatrix = self.__aimingSystem.matrix
     worldCrosshair = Matrix(self.__crosshairMatrix)
     if aimLocalTransform is not None:
         worldCrosshair.postMultiply(aimLocalTransform)
     worldCrosshair.postMultiply(aimingSystemMatrix)
     aimOffset = cameras.projectPoint(worldCrosshair.translation)
     return Vector2(math_utils.clamp(-0.95, 0.95, aimOffset.x), math_utils.clamp(-0.95, 0.95, aimOffset.y))
Exemple #2
0
 def __calcAimOffset(self, aimLocalTransform = None):
     worldCrosshair = Matrix(self.__crosshairMatrix)
     aimingSystemMatrix = self.__aimingSystem.matrix
     if aimLocalTransform is not None:
         worldCrosshair.postMultiply(aimLocalTransform)
     worldCrosshair.postMultiply(aimingSystemMatrix)
     aimOffset = cameras.projectPoint(worldCrosshair.translation)
     return Vector2(mathUtils.clamp(-0.95, 0.95, aimOffset.x), mathUtils.clamp(-0.95, 0.95, aimOffset.y))
Exemple #3
0
 def __switchBind(self):
     if self.__basisMProv.isBound:
         self.__basisMProv.bind(None)
     else:
         self.__basisMProv.bind(*self.__entityPicker.pick())
     localMat = Matrix(self.__cam.invViewMatrix)
     basisInv = Matrix(self.__basisMProv.matrix)
     basisInv.invert()
     localMat.postMultiply(basisInv)
     self.__position = localMat.translation
     self.__ypr.set(localMat.yaw, localMat.pitch, localMat.roll)
 def __switchBind(self):
     if self.__basisMProv.isBound:
         self.__basisMProv.bind(None)
     else:
         self.__basisMProv.bind(*self.__entityPicker.pick())
     localMat = Matrix(self._cam.invViewMatrix)
     basisInv = Matrix(self.__basisMProv.matrix)
     basisInv.invert()
     localMat.postMultiply(basisInv)
     self.__position = localMat.translation
     self.__ypr.set(localMat.yaw, localMat.pitch, localMat.roll)
     return
Exemple #5
0
 def __cameraUpdate(self, allowModeChange = True):
     curTime = BigWorld.time()
     deltaTime = curTime - self.__prevTime
     self.__prevTime = curTime
     if not self.__autoUpdateDxDyDz.x == self.__autoUpdateDxDyDz.y == self.__autoUpdateDxDyDz.z == 0.0:
         self.__rotateAndZoom(self.__autoUpdateDxDyDz.x, self.__autoUpdateDxDyDz.y, self.__autoUpdateDxDyDz.z)
     self.__aimingSystem.update(deltaTime)
     localTransform, impulseTransform = self.__updateOscillators(deltaTime)
     aimMatrix = cameras.getAimMatrix(*self.__defaultAimOffset)
     camMat = Matrix(aimMatrix)
     rodMat = mathUtils.createTranslationMatrix(-self.__dynamicCfg['pivotShift'])
     antiRodMat = mathUtils.createTranslationMatrix(self.__dynamicCfg['pivotShift'])
     camMat.postMultiply(rodMat)
     camMat.postMultiply(localTransform)
     camMat.postMultiply(antiRodMat)
     camMat.postMultiply(self.__aimingSystem.matrix)
     camMat.invert()
     self.__cam.set(camMat)
     replayCtrl = BattleReplay.g_replayCtrl
     if replayCtrl.isPlaying and replayCtrl.isControllingCamera:
         aimOffset = replayCtrl.getAimClipPosition()
         binocularsOffset = aimOffset
     else:
         aimOffset = self.__calcAimOffset(impulseTransform)
         binocularsOffset = self.__calcAimOffset()
         if replayCtrl.isRecording:
             replayCtrl.setAimClipPosition(aimOffset)
     self.__aim.offset(aimOffset)
     self.__binoculars.setMaskCenter(binocularsOffset.x, binocularsOffset.y)
     player = BigWorld.player()
     if allowModeChange and (self.__isPositionUnderwater(self.__aimingSystem.matrix.translation) or player.isGunLocked):
         self.__onChangeControlMode(False)
         return -1
     return 0.0
 def __cameraUpdate(self):
     curTime = BigWorld.time()
     deltaTime = curTime - self.__prevTime
     self.__prevTime = curTime
     if not self.__autoUpdateDxDyDz.x == self.__autoUpdateDxDyDz.y == self.__autoUpdateDxDyDz.z == 0.0:
         self.__rotateAndZoom(self.__autoUpdateDxDyDz.x, self.__autoUpdateDxDyDz.y, self.__autoUpdateDxDyDz.z)
     self.__aimingSystem.update(deltaTime)
     localTransform, impulseTransform = self.__updateOscillators(deltaTime)
     ownVehicle = BigWorld.entity(BigWorld.player().playerVehicleID)
     if ownVehicle is not None and ownVehicle.isStarted and ownVehicle.appearance.isUnderwater:
         self.__onChangeControlMode()
         return 0.0
     else:
         aimMatrix = cameras.getAimMatrix(*self.__defaultAimOffset)
         camMat = Matrix(aimMatrix)
         rodMat = mathUtils.createTranslationMatrix(-self.__dynamicCfg['pivotShift'])
         antiRodMat = mathUtils.createTranslationMatrix(self.__dynamicCfg['pivotShift'])
         camMat.postMultiply(rodMat)
         camMat.postMultiply(localTransform)
         camMat.postMultiply(antiRodMat)
         camMat.postMultiply(self.__aimingSystem.matrix)
         camMat.invert()
         self.__cam.set(camMat)
         replayCtrl = BattleReplay.g_replayCtrl
         if replayCtrl.isPlaying and replayCtrl.isControllingCamera:
             aimOffset = replayCtrl.getAimClipPosition()
             binocularsOffset = aimOffset
         else:
             aimOffset = self.__calcAimOffset(impulseTransform)
             binocularsOffset = self.__calcAimOffset()
             if replayCtrl.isRecording:
                 replayCtrl.setAimClipPosition(aimOffset)
         self.__aim.offset((aimOffset.x, aimOffset.y))
         self.__binoculars.setMaskCenter(binocularsOffset.x, binocularsOffset.y)
         return 0.0
Exemple #7
0
 def __calcAimOffset(self, aimLocalTransform=None):
     player = BigWorld.player()
     vehicle = player.getVehicleAttached()
     if self.__isRemoteCamera and vehicle is not None:
         aimingSystemMatrix = self.__getRemoteAim(False)
         aimingSystemMatrix.invert()
     else:
         aimingSystemMatrix = self.__aimingSystem.matrix
     worldCrosshair = Matrix(self.__crosshairMatrix)
     if aimLocalTransform is not None:
         worldCrosshair.postMultiply(aimLocalTransform)
     worldCrosshair.postMultiply(aimingSystemMatrix)
     aimOffset = cameras.projectPoint(worldCrosshair.translation)
     return Vector2(mathUtils.clamp(-0.95, 0.95, aimOffset.x),
                    mathUtils.clamp(-0.95, 0.95, aimOffset.y))
Exemple #8
0
def plasmaExplode(owner, targetModel, delTargetModel):
    m = BigWorld.Model('objects/models/fx/03_pchangs/shockwave.model')
    targetModel.root.attach(m)
    m.Go()
    BigWorld.callback(1.0, partial(targetModel.root.detach, m))
    m = targetModel.root
    m2 = Matrix()
    m2.setScale((5, 5, 5))
    m2.postMultiply(m)
    v1 = Vector4(1.0, 100000, 0, 0)
    v2 = Vector4(0.0, 0, 0, 0)
    v = Vector4Animation()
    v.keyframes = [(0, v1), (0.5, v2)]
    v.duration = 1
    v.time = 0
    try:
        BigWorld.addWarp(0.5, m2, v)
    except:
        pass

    shake(targetModel)
    ps2 = Pixie.create('particles/plasma_blow.xml')
    targetModel.root.attach(ps2)
    ps2.system(0).actions[0].force(1)
    BigWorld.callback(5.0, partial(targetModel.root.detach, ps2))
    if delTargetModel:
        BigWorld.callback(5.0, partial(owner.delModel, targetModel))
    if BigWorld.player().flashBangCount == 0:
        fba = Vector4Animation()
        fba.keyframes = [(0, Vector4(0, 0, 0, 0)),
                         (0.1, Vector4(0.1, 0.1, 0.2, 0.5)),
                         (0.3, Vector4(0, 0, 0, 0))]
        fba.duration = 0.3
        try:
            BigWorld.flashBangAnimation(fba)
        except:
            pass

        BigWorld.callback(fba.duration,
                          partial(BigWorld.flashBangAnimation, None))
    return
def plasmaExplode(owner, targetModel, delTargetModel):
    m = BigWorld.Model('objects/models/fx/03_pchangs/shockwave.model')
    targetModel.root.attach(m)
    m.Go()
    BigWorld.callback(1.0, partial(targetModel.root.detach, m))
    m = targetModel.root
    m2 = Matrix()
    m2.setScale((5, 5, 5))
    m2.postMultiply(m)
    v1 = Vector4(1.0, 100000, 0, 0)
    v2 = Vector4(0.0, 0, 0, 0)
    v = Vector4Animation()
    v.keyframes = [(0, v1), (0.5, v2)]
    v.duration = 1
    v.time = 0
    try:
        BigWorld.addWarp(0.5, m2, v)
    except:
        pass

    shake(targetModel)
    ps2 = Pixie.create('particles/plasma_blow.xml')
    targetModel.root.attach(ps2)
    ps2.system(0).actions[0].force(1)
    BigWorld.callback(5.0, partial(targetModel.root.detach, ps2))
    if delTargetModel:
        BigWorld.callback(5.0, partial(owner.delModel, targetModel))
    if BigWorld.player().flashBangCount == 0:
        fba = Vector4Animation()
        fba.keyframes = [(0, Vector4(0, 0, 0, 0)), (0.1, Vector4(0.1, 0.1, 0.2, 0.5)), (0.3, Vector4(0, 0, 0, 0))]
        fba.duration = 0.3
        try:
            BigWorld.flashBangAnimation(fba)
        except:
            pass

        BigWorld.callback(fba.duration, partial(BigWorld.flashBangAnimation, None))
    return
 def __cameraUpdate(self, allowModeChange=True):
     curTime = BigWorld.time()
     deltaTime = curTime - self.__prevTime
     self.__prevTime = curTime
     if not self.__autoUpdateDxDyDz.x == self.__autoUpdateDxDyDz.y == self.__autoUpdateDxDyDz.z == 0.0:
         self.__rotateAndZoom(self.__autoUpdateDxDyDz.x,
                              self.__autoUpdateDxDyDz.y,
                              self.__autoUpdateDxDyDz.z)
     self.__aimingSystem.update(deltaTime)
     localTransform, impulseTransform = self.__updateOscillators(deltaTime)
     zoom = self.__aimingSystem.overrideZoom(self.__zoom)
     aimMatrix = cameras.getAimMatrix(self.__defaultAimOffset.x,
                                      self.__defaultAimOffset.y)
     camMat = Matrix(aimMatrix)
     rodMat = mathUtils.createTranslationMatrix(
         -self.__dynamicCfg['pivotShift'])
     antiRodMat = mathUtils.createTranslationMatrix(
         self.__dynamicCfg['pivotShift'])
     camMat.postMultiply(rodMat)
     camMat.postMultiply(localTransform)
     camMat.postMultiply(antiRodMat)
     camMat.postMultiply(self.__aimingSystem.matrix)
     camMat.invert()
     self.__cam.set(camMat)
     if zoom != self.__zoom:
         self.__zoom = zoom
         self.__applyZoom(self.__zoom)
     replayCtrl = BattleReplay.g_replayCtrl
     if replayCtrl.isPlaying and replayCtrl.isControllingCamera:
         aimOffset = replayCtrl.getAimClipPosition()
         binocularsOffset = aimOffset
         if not BigWorld.player().isForcedGuiControlMode() and GUI.mcursor(
         ).inFocus:
             GUI.mcursor().position = aimOffset
     else:
         aimOffset = self.__calcAimOffset(impulseTransform)
         binocularsOffset = self.__calcAimOffset()
         if replayCtrl.isRecording:
             replayCtrl.setAimClipPosition(aimOffset)
     self.__aimOffset = aimOffset
     self.__binoculars.setMaskCenter(binocularsOffset.x, binocularsOffset.y)
     player = BigWorld.player()
     if allowModeChange and (self.__isPositionUnderwater(
             self.__aimingSystem.matrix.translation) or player.isGunLocked
                             and not player.isObserverFPV):
         self.__onChangeControlMode(False)
         return -1
Exemple #11
0
 def __cameraUpdate(self, allowModeChange=True):
     curTime = BigWorld.time()
     deltaTime = curTime - self.__prevTime
     self.__prevTime = curTime
     if not self.__autoUpdateDxDyDz.x == self.__autoUpdateDxDyDz.y == self.__autoUpdateDxDyDz.z == 0.0:
         self.__rotateAndZoom(self.__autoUpdateDxDyDz.x,
                              self.__autoUpdateDxDyDz.y,
                              self.__autoUpdateDxDyDz.z)
     self.__aimingSystem.update(deltaTime)
     localTransform, impulseTransform = self.__updateOscillators(deltaTime)
     player = BigWorld.player()
     vehicle = player.getVehicleAttached()
     zoom = self.__zoom
     if self.__isRemoteCamera and vehicle is not None:
         camMat = self.__getRemoteAim(allowModeChange)
         if camMat is None:
             return 0.0
         zoom = float(player.remoteCameraSniper.zoom)
     else:
         aimMatrix = cameras.getAimMatrix(self.__defaultAimOffset.x,
                                          self.__defaultAimOffset.y)
         camMat = Matrix(aimMatrix)
         rodMat = mathUtils.createTranslationMatrix(
             -self.__dynamicCfg['pivotShift'])
         antiRodMat = mathUtils.createTranslationMatrix(
             self.__dynamicCfg['pivotShift'])
         camMat.postMultiply(rodMat)
         camMat.postMultiply(localTransform)
         camMat.postMultiply(antiRodMat)
         camMat.postMultiply(self.__aimingSystem.matrix)
         camMat.invert()
     if not player.isObserver() and vehicle is not None:
         relTranslation = self.__cam.position - vehicle.position
         rot = Math.Vector3(camMat.yaw, camMat.pitch, camMat.roll)
         vehicle.setSniperCameraDataForObservers(relTranslation, rot, zoom)
     self.__cam.set(camMat)
     if zoom != self.__zoom:
         self.__zoom = zoom
         self.__applyZoom(self.__zoom)
     replayCtrl = BattleReplay.g_replayCtrl
     if replayCtrl.isPlaying and replayCtrl.isControllingCamera:
         aimOffset = replayCtrl.getAimClipPosition()
         binocularsOffset = aimOffset
         if not BigWorld.player().isForcedGuiControlMode() and GUI.mcursor(
         ).inFocus:
             GUI.mcursor().position = aimOffset
     else:
         aimOffset = self.__calcAimOffset(impulseTransform)
         binocularsOffset = self.__calcAimOffset()
         if replayCtrl.isRecording:
             replayCtrl.setAimClipPosition(aimOffset)
     self.__aimOffset = aimOffset
     self.__binoculars.setMaskCenter(binocularsOffset.x, binocularsOffset.y)
     if not self.__isRemoteCamera and allowModeChange and (
             self.__isPositionUnderwater(
                 self.__aimingSystem.matrix.translation)
             or player.isGunLocked):
         self.__onChangeControlMode(False)
         return -1
     else:
         return 0.0