def _assembleSwinging(appearance, lodLink):
    compoundModel = appearance.compoundModel
    appearance.swingingAnimator = swingingAnimator = model_assembler.createSwingingAnimator(appearance.typeDescriptor, compoundModel.node(TankPartNames.HULL).localMatrix, appearance.compoundModel.matrix, lodLink)
    compoundModel.node(TankPartNames.HULL, swingingAnimator)
    appearance.fashions.chassis.setupSwinging(swingingAnimator, 'V')
    if hasattr(appearance.filter, 'placingCompensationMatrix'):
        swingingAnimator.placingCompensationMatrix = appearance.filter.placingCompensationMatrix
def _assembleSwinging(appearance, lodLink):
    compoundModel = appearance.compoundModel
    appearance.swingingAnimator = swingingAnimator = createSwingingAnimator(
        appearance.typeDescriptor,
        compoundModel.node(TankPartNames.HULL).localMatrix,
        appearance.compoundModel.matrix, lodLink)
    compoundModel.node(TankPartNames.HULL, swingingAnimator)
    if hasattr(appearance.filter, 'placingCompensationMatrix'):
        swingingAnimator.placingCompensationMatrix = appearance.filter.placingCompensationMatrix
Exemple #3
0
 def __assembleSwinging(self, lodLink):
     hullNode = self.compoundModel.node(TankPartNames.HULL)
     if hullNode is None:
         _logger.error('Could not create SwingingAnimator: failed to find hull node')
         return
     else:
         self.swingingAnimator = model_assembler.createSwingingAnimator(self, self.typeDescriptor, hullNode.localMatrix, self.compoundModel.matrix, lodLink)
         self.compoundModel.node(TankPartNames.HULL, self.swingingAnimator.animatedMProv)
         if hasattr(self.filter, 'placingCompensationMatrix'):
             self.swingingAnimator.placingCompensationMatrix = self.filter.placingCompensationMatrix
         return
Exemple #4
0
def setupTank(chassisFashion, gunFashion, vehicleDesc, worldMatrix, resources):
    print resources
    tank = resources[vehicleDesc.name]
    tank.matrix = worldMatrix
    tanks.append(tank)
    effect = Pixie.create('particles/Tank/exhaust/large_gas_gear.xml')
    tank.node('HP_gunFire').attach(effect)
    tank.node('HP_gunFire').attach(
        BigWorld.Model('helpers/models/position_gizmo.model'))
    tank.node('HP_Track_Exhaus_1').attach(
        BigWorld.Model('helpers/models/unit_cube.model'))
    m = mathUtils.createTranslationMatrix(Vector3(0, 10, 5))
    fakeMatrixes.append(m)
    tank.node('gun').attach(effect.clone(), m)
    BigWorld.addModel(tank)
    recoilDescr = vehicleDesc.gun['recoil']
    recoil = BigWorld.RecoilAnimator(recoilDescr['backoffTime'],
                                     recoilDescr['returnTime'],
                                     recoilDescr['amplitude'],
                                     recoilDescr['lodDist'])
    recoil.basisMatrix = tank.node('G').localMatrix
    recoil = assemblerModule.createGunAnimator(vehicleDesc,
                                               tank.node('G').localMatrix)
    recoil.lodSetting = 10
    tank.node('G', recoil)
    gunFashion.gunLocalMatrix = recoil
    recoil.lodLink = DataLinks.createFloatLink(chassisFashion, 'lastLod')
    swingingAnimator = assemblerModule.createSwingingAnimator(
        vehicleDesc,
        tank.node('hull').localMatrix, worldMatrix)
    chassisFashion.setupSwinging(swingingAnimator, 'hull')
    swingingAnimator.lodLink = DataLinks.createFloatLink(
        chassisFashion, 'lastLod')
    tank.setupFashions([chassisFashion, None, None, gunFashion])
    fashions.append(swingingAnimator)
    tank.node('hull', swingingAnimator)
    animMatrix = Math.MatrixAnimation()
    keys = []
    for x in xrange(100):
        angle = math.pi * 0.5 * (1 if x & 1 else -1)
        keys.append((x * 3, mathUtils.createRotationMatrix((angle, 0, 0))))

    animMatrix.keyframes = tuple(keys)
    tank.node('turret', animMatrix)
    return
Exemple #5
0
def setupTank(chassisFashion, gunFashion, vehicleDesc, worldMatrix, resources):
    print resources
    tank = resources[vehicleDesc.name]
    tank.matrix = worldMatrix
    tanks.append(tank)
    effect = Pixie.create('particles/Tank/exhaust/large_gas_gear.xml')
    tank.node('HP_gunFire').attach(effect)
    tank.node('HP_gunFire').attach(BigWorld.Model('helpers/models/position_gizmo.model'))
    tank.node('HP_Track_Exhaus_1').attach(BigWorld.Model('helpers/models/unit_cube.model'))
    m = mathUtils.createTranslationMatrix(Vector3(0, 10, 5))
    fakeMatrixes.append(m)
    tank.node('gun').attach(effect.clone(), m)
    BigWorld.addModel(tank)
    recoilDescr = vehicleDesc.gun['recoil']
    recoil = BigWorld.RecoilAnimator(recoilDescr['backoffTime'], recoilDescr['returnTime'], recoilDescr['amplitude'], recoilDescr['lodDist'])
    recoil.basisMatrix = tank.node('G').localMatrix
    recoil = assemblerModule.createGunAnimator(vehicleDesc, tank.node('G').localMatrix)
    recoil.lodSetting = 10
    tank.node('G', recoil)
    gunFashion.gunLocalMatrix = recoil
    recoil.lodLink = DataLinks.createFloatLink(chassisFashion, 'lastLod')
    swingingAnimator = assemblerModule.createSwingingAnimator(vehicleDesc, tank.node('hull').localMatrix, worldMatrix)
    chassisFashion.setupSwinging(swingingAnimator, 'hull')
    swingingAnimator.lodLink = DataLinks.createFloatLink(chassisFashion, 'lastLod')
    tank.setupFashions([chassisFashion,
     None,
     None,
     gunFashion])
    fashions.append(swingingAnimator)
    tank.node('hull', swingingAnimator)
    animMatrix = Math.MatrixAnimation()
    keys = []
    for x in xrange(100):
        angle = math.pi * 0.5 * (1 if x & 1 else -1)
        keys.append((x * 3, mathUtils.createRotationMatrix((angle, 0, 0))))

    animMatrix.keyframes = tuple(keys)
    tank.node('turret', animMatrix)
    return
Exemple #6
0
 def __linkCompound(self):
     vehicle = self.__vehicle
     vehicle.model = None
     vehicle.model = self.__compoundModel
     vehicleMatrix = vehicle.matrix
     self.__compoundModel.matrix = vehicleMatrix
     if not self.__currentDamageState.isCurrentModelDamaged:
         self.__swingingAnimator = model_assembler.createSwingingAnimator(
             self.__typeDesc,
             self.__compoundModel.node(TankPartNames.HULL).localMatrix,
             vehicleMatrix)
         self.__compoundModel.node(TankPartNames.HULL,
                                   self.__swingingAnimator)
         self.__fashions.chassis.setupSwinging(self.__swingingAnimator, 'V')
         if hasattr(self.__filter, 'placingCompensationMatrix'):
             self.__swingingAnimator.placingCompensationMatrix = self.__filter.placingCompensationMatrix
         gunAnimatorNode = self.__compoundModel.node('G')
         if gunAnimatorNode is not None:
             localGunMatrix = gunAnimatorNode.localMatrix
             self.__gunRecoil = model_assembler.createGunAnimator(
                 self.__typeDesc, localGunMatrix)
         self.__compoundModel.node('G', self.__gunRecoil)
         self.__fashions.gun.inclinationMatrix = self.gunMatrix
         self.__fashions.gun.gunLocalMatrix = self.__gunRecoil
         lodLink = DataLinks.createFloatLink(self.fashions.chassis,
                                             'lastLod')
         self.__gunRecoil.lodLink = lodLink
         self.__swingingAnimator.lodLink = lodLink
         self.__compoundModel.node(TankNodeNames.GUN_INCLINATION,
                                   self.gunMatrix)
     else:
         self.__compoundModel.node(TankPartNames.GUN, self.gunMatrix)
     self.__compoundModel.node(TankPartNames.TURRET, self.turretMatrix)
     if vehicle.isPlayerVehicle:
         player = BigWorld.player()
         if player.inputHandler is not None:
             player.inputHandler.addVehicleToCameraCollider(vehicle)
     return
 def __assembleSwinging(self, lodLink):
     self.swingingAnimator = model_assembler.createSwingingAnimator(self, self.typeDescriptor, self.compoundModel.node(TankPartNames.HULL).localMatrix, self.compoundModel.matrix, lodLink)
     self.compoundModel.node(TankPartNames.HULL, self.swingingAnimator.animatedMProv)
     if hasattr(self.filter, 'placingCompensationMatrix'):
         self.swingingAnimator.placingCompensationMatrix = self.filter.placingCompensationMatrix