Exemplo n.º 1
0
 def setControlMtx(self, mtx):
     translation = Matrix()
     translation.translation = Vector3(0, 0,
                                       BigWorld.player().reductionPoint)
     self._controlMtx = MatrixProduct()
     self._controlMtx.b = mtx
     self._controlMtx.a = translation
Exemplo n.º 2
0
 def enable(self, targetPos, saveDist):
     self.__prevTime = 0.0
     self.__aimingSystem.enable(targetPos)
     self.__positionHysteresis.update(Vector3(0.0, 0.0, 0.0))
     self.__timeHysteresis.update(BigWorld.timeExact())
     camTarget = MatrixProduct()
     self.__cam.target = camTarget
     self.__cam.source = self.__sourceMatrix
     self.__cam.wg_applyParams()
     BigWorld.camera(self.__cam)
     BigWorld.player().positionControl.moveTo(self.__aimingSystem.hitPoint)
     BigWorld.player().positionControl.followCamera(False)
     self.__rotation = 0.0
     self.__cameraUpdate()
     self.delayCallback(0.0, self.__cameraUpdate)
     self.__needReset = 1
Exemplo n.º 3
0
def shootProjectile(owner,
                    target,
                    projectile,
                    trail=None,
                    boom=None,
                    srcoff=Vector3(0, 1.5, 0),
                    dstoff=Vector3(0, 1.2, 0),
                    motor=None):
    if hasattr(target, 'matrix'):
        targetMatrix = target.matrix
    else:
        targetMatrix = target
    if not boom and dstoff:
        dstoff.y = 1.8
    if not dstoff:
        dstoff = Vector3(0, 0, 0)
    owner.addModel(projectile)
    projectile.position = Vector3(owner.position) + srcoff
    if not motor:
        motor = BigWorld.Homer()
        motor.speed = projectileSpeed
        motor.turnRate = 10
    if dstoff.lengthSquared == 0:
        motor.target = targetMatrix
    else:
        motor.target = MatrixProduct()
        motor.target.a = targetMatrix
        motor.target.b = Matrix()
        motor.target.b.setTranslate(dstoff)
    if motor.tripTime <= 0.0:
        sourcePosition = Vector3(owner.position) + srcoff
        targetPosition = Vector3(Matrix(targetMatrix).applyToOrigin()) + dstoff
        speed = motor.speed
        t = calculateTripTime(sourcePosition, targetPosition, speed)
        if t == 0:
            owner.delModel(projectile)
            return 0
        motor.tripTime = t
    projectile.addMotor(motor)
    if trail:
        trail(projectile, None, motor.tripTime)
    motor.proximity = 1.0
    if boom:
        motor.proximityCallback = boom
    else:
        motor.proximityCallback = partial(owner.delModel, projectile)
    return motor.tripTime
Exemplo n.º 4
0
 def enable(self,
            targetPos,
            saveDist,
            switchToPos=None,
            switchToPlace=None):
     BigWorld.wg_trajectory_drawer().setStrategicMode(False)
     self.__prevTime = 0.0
     if switchToPlace == SwitchToPlaces.TO_TRANSITION_DIST:
         self.__camDist = math_utils.clamp(self._cfg['distRange'][0],
                                           self._cfg['distRange'][1],
                                           self._cfg['transitionDist'])
     elif switchToPlace == SwitchToPlaces.TO_RELATIVE_POS and switchToPos is not None:
         minDist, maxDist = self._cfg['distRange']
         self.__camDist = (maxDist - minDist) * switchToPos + minDist
     elif switchToPlace == SwitchToPlaces.TO_NEAR_POS and switchToPos is not None:
         minDist, maxDist = self._cfg['distRange']
         self.__camDist = math_utils.clamp(minDist, maxDist, switchToPos)
     elif self.settingsCore.getSetting(SPGAim.AUTO_CHANGE_AIM_MODE):
         self.__camDist = math_utils.clamp(self._cfg['distRange'][0],
                                           self._cfg['transitionDist'],
                                           self.__camDist)
     self.__desiredCamDist = self.__camDist
     self.__scrollSmoother.start(self.__desiredCamDist)
     self.__enableSwitchers()
     self.__aimingSystem.enable(targetPos)
     self.__positionHysteresis.update(Vector3(0.0, 0.0, 0.0))
     self.__timeHysteresis.update(BigWorld.timeExact())
     camTarget = MatrixProduct()
     self.__rotation = max(self.__aimingSystem.direction.pitch,
                           self._cfg['minimalPitch'])
     cameraDirection = self.__getCameraDirection()
     self.__targetMatrix.translation = self.aimingSystem.aimPoint - cameraDirection.scale(
         self.__camDist)
     self.__cam.target = camTarget
     self.__cam.target.b = self.__targetMatrix
     self.__sourceMatrix = math_utils.createRotationMatrix(
         (cameraDirection.yaw, -cameraDirection.pitch, 0.0))
     self.__cam.source = self.__sourceMatrix
     self.__cam.forceUpdate()
     BigWorld.camera(self.__cam)
     BigWorld.player().positionControl.moveTo(self.__aimingSystem.hitPoint)
     BigWorld.player().positionControl.followCamera(False)
     self.__cameraUpdate()
     self.delayCallback(0.01, self.__cameraUpdate)
     self.__needReset = 1
     return