示例#1
0
 def changePlayMode(self, mode):
     if BigWorld.player().getVehicleAttached() is not None:
         __ceilLess = BigWorld.player().getVehicleAttached().typeDescriptor.turret['ceilless']
     else:
         __ceilLess = BigWorld.player().vehicleTypeDescriptor.turret['ceilless']
     if mode == 0:
         WWISE.WW_setRTCPGlobal('RTPC_ext_viewPlayMode', 1)
         if __ceilLess is True:
             WWISE.WW_setState('STATE_viewPlayMode', 'STATE_viewplaymode_arcade_ceilless')
         else:
             WWISE.WW_setState('STATE_viewPlayMode', 'STATE_viewPlayMode_arcade')
         WWISE.WWsetCameraShift(None)
     elif mode == 1:
         WWISE.WW_setRTCPGlobal('RTPC_ext_viewPlayMode', 0)
         if __ceilLess is True:
             WWISE.WW_setState('STATE_viewPlayMode', 'STATE_viewplaymode_sniper_ceilless')
         else:
             WWISE.WW_setState('STATE_viewPlayMode', 'STATE_viewPlayMode_sniper')
         if BigWorld.player().getVehicleAttached() is not None:
             compoundModel = BigWorld.player().getVehicleAttached().appearance.compoundModel
             WWISE.WWsetCameraShift(compoundModel.node(TankPartNames.TURRET))
     elif mode == 2:
         WWISE.WW_setRTCPGlobal('RTPC_ext_viewPlayMode', 2)
         WWISE.WW_setState('STATE_viewPlayMode', 'STATE_viewPlayMode_strategic')
         WWISE.WWsetCameraShift(None)
     __ceilLess = None
     return
示例#2
0
 def __initSounds(self):
     self.__gunSound = SoundGroups.g_instance.WWgetSoundObject(self.__gunSoundHP, None, (0.0, 0.0, 0.0), True)
     self.__engineSound = SoundGroups.g_instance.WWgetSoundObject(self.__engineSoundHP, None, (0.0, 0.0, 0.0), True)
     if self.__engineSound is None:
         LOG_ERROR('!!!self.__engineSound is None')
         return
     else:
         horsePower = self.__typeDesc.physics['enginePower'] / HP_TO_WATTS
         WWISE.WW_setRTCPGlobal('RTPC_ext_engine_power', horsePower)
         self.__engineSound.setSwitch('SWITCH_ext_physics_state', 'SWITCH_ext_physics_state_on')
         if self.__eventC == '':
             LOG_ERROR('Tracks sound is not defined for = {0}'.format(self.__typeDesc.name))
             self.__movementSound = None
         else:
             self.__movementSound = SoundGroups.g_instance.WWgetSoundObject(self.__movementSoundHP, None, (0.0, 0.0, 0.0), True)
         if self.__movementSound is not None:
             self.__movementSound.setSwitch('SWITCH_ext_physics_state', 'SWITCH_ext_physics_state_on')
             self.__movementSound.setRTPC('RTPC_ext_vehicle_weight', self.__typeDesc.physics['weight'] / 1000)
             self.__movementSound.setRTPC('RTPC_ext_engine_state', 0.0)
             self.__movementSound.setRTPC('RTPC_ext_physic_rpm_rel', 0.0)
             self.__movementSound.setRTPC('RTPC_ext_physic_rpm_abs', 0.0)
         self.__engineSound.setRTPC('RTPC_ext_vehicle_weight', self.__typeDesc.physics['weight'] / 1000)
         self.__engineSound.setRTPC('RTPC_ext_engine_state', 0.0)
         self.__engineSound.setRTPC('RTPC_ext_physic_rpm_rel', 0.0)
         self.__engineSound.setRTPC('RTPC_ext_physic_rpm_abs', 0.0)
         self.__engineSound.setRTPC('RTPC_ext_turbine', 0.0)
         return
 def __setWWISEGlobal(self):
     operation = self.getOperation()
     if operation:
         completedCount = len(operation.getQuestsInChainByFilter(self.getChainID(), methodcaller('isCompleted')))
     else:
         completedCount = 0
     WWISE.WW_setRTCPGlobal(SOUNDS.RTCP_MISSIONS_NUMBER, completedCount)
示例#4
0
 def setVolume(self, categoryName, volume, updatePrefs = True):
     WWISE.WW_setRTCPGlobal('RTPC_ext_menu_volume_{}'.format(categoryName), volume * 100.0)
     if updatePrefs:
         self.__volumeByCategory[categoryName] = volume
         self.savePreferences()
     if categoryName == 'music' or categoryName == 'ambient':
         self.onMusicVolumeChanged(categoryName, self.__masterVolume, self.getVolume(categoryName))
     self.onVolumeChanged(categoryName, volume)
示例#5
0
 def __update(self):
     currentTime = BigWorld.timeExact()
     elapsedTime = currentTime - self.__startTime
     interpolationCoefficient = math_utils.linearTween(elapsedTime, 1.0, self.__totalInterpolationTime)
     resultValue = int(math_utils.lerp(0, 100, interpolationCoefficient))
     WWISE.WW_setRTCPGlobal(DualGunSoundEvents.RTPC_CHARGE_PROGRESS, resultValue)
     if elapsedTime > self.__totalInterpolationTime:
         self.delayCallback(0.0, self.disable)
         return 10.0
示例#6
0
 def applyPreferences(self):
     if not self.__isWindowVisible:
         WWISE.WW_setRTCPGlobal('RTPC_ext_menu_volume_master', 0.0)
         return
     self.setMasterVolume(self.__masterVolume)
     for categoryName in self.__volumeByCategory.keys():
         newVolume = self.__volumeByCategory[categoryName]
         if self.__muffledByReplay and categoryName in ('vehicles',
                                                        'effects',
                                                        'ambient'):
             newVolume = 0.0
         self.setVolume(categoryName, newVolume, updatePrefs=False)
示例#7
0
 def setMasterVolume(self, volume):
     self.__masterVolume = volume
     self.__muffledVolume = self.__masterVolume * self.getVolume(
         'masterFadeVivox')
     masterVolume = (self.__muffledVolume
                     if self.__muffled else self.__masterVolume) * 100.0
     WWISE.WW_setRTCPGlobal('RTPC_ext_menu_volume_master', masterVolume)
     self.savePreferences()
     self.onMusicVolumeChanged('music', self.__masterVolume,
                               self.getVolume('music'))
     self.onMusicVolumeChanged('ambient', self.__masterVolume,
                               self.getVolume('ambient'))
示例#8
0
 def setEventParam(self, eventId, paramName, paramValue):
     WWISE.WW_setRTCPGlobal(paramName, paramValue)
示例#9
0
    def tick(self):
        if not SoundGroups.ENABLE_ENGINE_N_TRACKS:
            return
        else:
            soundEngine = self.__engineSound
            if soundEngine is None:
                return
            soundTrack = self.__movementSound
            if soundTrack is None:
                return
            vehicleAttached = BigWorld.player().getVehicleAttached()
            if vehicleAttached is None:
                return
            cameraUnit = vehicleAttached.id == self.__vehicleId
            speedInfo = vehicleAttached.speedInfo.value
            speed = speedInfo[0]
            engineRPM = clamp(0.0, 100.0, self.detailedEngineState.rpm)
            soundEngine.setRTPC('RTPC_ext_rpm', engineRPM)
            soundTrack.setRTPC('RTPC_ext_rpm', engineRPM)
            soundEngine.setRTPC('RTPC_ext_engine_load', self.detailedEngineState.engineLoad)
            soundTrack.setRTPC('RTPC_ext_engine_load', self.detailedEngineState.engineLoad)
            if cameraUnit:
                WWISE.WW_setRTCPGlobal('RTPC_ext_engine_load_global', self.detailedEngineState.engineLoad)
            soundEngine.setRTPC('RTPC_ext_submersion', 1 if self.isUnderwaterLink() else 0)
            soundTrack.setRTPC('RTPC_ext_submersion', 1 if self.isUnderwaterLink() else 0)
            if cameraUnit:
                WWISE.WW_setState('STATE_underwater', 'STATE_underwater_on' if self.isUnderwaterLink() else 'STATE_underwater_off')
            soundEngine.setRTPC('RTPC_ext_speed_abs', clamp(-10, 30, speed))
            soundTrack.setRTPC('RTPC_ext_speed_abs', clamp(-10, 30, speed))
            soundEngine.setRTPC('RTPC_ext_speed_rel', clamp(-1.0, 1.0, self.detailedEngineState.relativeSpeed))
            soundTrack.setRTPC('RTPC_ext_speed_rel', clamp(-1.0, 1.0, self.detailedEngineState.relativeSpeed))
            soundEngine.setRTPC('RTPC_ext_speed_rel2', self.detailedEngineState.relativeSpeed)
            soundTrack.setRTPC('RTPC_ext_speed_rel2', self.detailedEngineState.relativeSpeed)
            soundEngine.setRTPC('RTPC_ext_rot_speed_abs', clamp(-1.0, 1.0, self.detailedEngineState.rotationSpeed))
            soundTrack.setRTPC('RTPC_ext_rot_speed_abs', clamp(-1.0, 1.0, self.detailedEngineState.rotationSpeed))
            soundEngine.setRTPC('RTPC_ext_rot_speed_rel', clamp(-1.0, 1.0, self.detailedEngineState.roatationRelSpeed))
            soundTrack.setRTPC('RTPC_ext_rot_speed_rel', clamp(-1.0, 1.0, self.detailedEngineState.roatationRelSpeed))
            if not self.__isPlayerVehicle:
                soundEngine.setRTPC('RTPC_ext_turbine_npc', engineRPM)
            if cameraUnit:
                if not self.__isPlayerVehicle:
                    soundTrack.setRTPC('RTPC_ext_gear_2', self.detailedEngineState.gear2)
                    soundTrack.setRTPC('RTPC_ext_gear_3', self.detailedEngineState.gear3)
                    soundEngine.setRTPC('RTPC_ext_gear_2', self.detailedEngineState.gear2)
                    soundEngine.setRTPC('RTPC_ext_gear_3', self.detailedEngineState.gear3)
                    soundEngine.setRTPC('RTPC_ext_gear_num', clamp(0.0, 4.0, self.detailedEngineState.gearNum))
                    soundTrack.setRTPC('RTPC_ext_gear_num', clamp(0.0, 4.0, self.detailedEngineState.gearNum))
                else:
                    gear = self.detailedEngineState.gearNum
                    soundTrack.setRTPC('RTPC_ext_physic_rpm_rel', self.detailedEngineState.rpmPhysicRel)
                    soundEngine.setRTPC('RTPC_ext_physic_rpm_rel', self.detailedEngineState.rpmPhysicRel)
                    if self.detailedEngineState.engineState == EngineState._CRITICAL:
                        soundEngine.setRTPC('RTPC_ext_turbine', 0.0)
                    else:
                        soundEngine.setRTPC('RTPC_ext_turbine', self.detailedEngineState.rpmPhysicRel * 100.0)
                    soundTrack.setRTPC('RTPC_ext_physic_rpm_abs', self.detailedEngineState.rpmPhysicAbs)
                    soundEngine.setRTPC('RTPC_ext_physic_rpm_abs', self.detailedEngineState.rpmPhysicAbs)
                    soundTrack.setRTPC('RTPC_ext_physic_gear', gear)
                    soundEngine.setRTPC('RTPC_ext_physic_gear', gear)
                    soundTrack.setRTPC('RTPC_ext_engine_state', 1.0 if gear > 0 and gear < 127 else 0.0)
                    soundEngine.setRTPC('RTPC_ext_engine_state', 1.0 if gear > 0 and gear < 127 else 0.0)
                    for i in range(1, 8):
                        if i != gear:
                            soundTrack.setRTPC('RTPC_ext_physic_gear_' + str(i), 0)
                            soundEngine.setRTPC('RTPC_ext_physic_gear_' + str(i), 0)

                    if self.detailedEngineState.gearUp:
                        soundTrack.setRTPC('RTPC_ext_physic_gear_' + str(gear), 100)
                        soundEngine.setRTPC('RTPC_ext_physic_gear_' + str(gear), 100)
            accelerationAbs = 0.0
            if self.__prevVelocity is not None and self.__prevTime is not None:
                deltaTime = BigWorld.time() - self.__prevTime
                if deltaTime > 0.0:
                    accelerationAbs = (speed - self.__prevVelocity) / (BigWorld.time() - self.__prevTime)
                    accelerationAbs = clamp(-1.5, 1.5, accelerationAbs)
                else:
                    accelerationAbs = 0.0
            self.__prevVelocity = speed
            self.__prevTime = BigWorld.time()
            soundEngine.setRTPC('RTPC_ext_acc_abs', accelerationAbs)
            soundTrack.setRTPC('RTPC_ext_acc_abs', accelerationAbs)
            moveValue = 100 if math.fabs(speed) > 1.0 else 0
            soundTrack.setRTPC('RTPC_ext_move', moveValue)
            soundEngine.setRTPC('RTPC_ext_move', moveValue)
            soundEngine.setRTPC('RTPC_ext_physic_load', self.detailedEngineState.physicLoad)
            soundTrack.setRTPC('RTPC_ext_physic_load', self.detailedEngineState.physicLoad)
            if cameraUnit:
                WWISE.WW_setRTCPGlobal('RTPC_ext_physic_load_global', self.detailedEngineState.physicLoad)
                WWISE.WW_setRTCPGlobal('RTPC_ext_speed_rel_global', clamp(-1.0, 1.0, self.detailedEngineState.relativeSpeed))
                WWISE.WW_setRTCPGlobal('RTPC_ext_speed_abs_global', speed)
            soundTrack.setRTPC('RTPC_ext_flying', self.isFlyingLink())
            if not cameraUnit:
                return
            deltaR = self.rightTrackScrollRelativeLink()
            deltaL = self.leftTrackScrollRelativeLink()
            slideFriction = clamp(0.0, 1.0, max(deltaR, deltaL) / 5.0)
            soundTrack.setRTPC('RTPC_ext_slide_friction', slideFriction)
            soundEngine.setRTPC('RTPC_ext_slide_friction', slideFriction)
            matEffectsUnderTracks = dict(((effectMaterial, 0.0) for effectMaterial in _EFFECT_MATERIALS_HARDNESS_RTPC))
            currTerrainMatKind = self.curTerrainMatKindLink()
            if self.isInWaterLink():
                matEffectsUnderTracks['water'] = len(currTerrainMatKind)
            else:
                for matKind in currTerrainMatKind:
                    effectIndex = calcEffectMaterialIndex(matKind)
                    if effectIndex is not None:
                        effectMaterial = material_kinds.EFFECT_MATERIALS[effectIndex]
                        if effectMaterial in matEffectsUnderTracks:
                            matEffectsUnderTracks[effectMaterial] = matEffectsUnderTracks.get(effectMaterial, 0) + 1.0

            hardness = 0.0
            for effectMaterial, amount in matEffectsUnderTracks.iteritems():
                hardness += _EFFECT_MATERIALS_HARDNESS_RTPC.get(effectMaterial, 0) * amount

            for effectMaterial, amount in matEffectsUnderTracks.iteritems():
                if amount >= 2 and self.__prevTerrSwitch != effectMaterial:
                    soundTrack.setSwitch('SWITCH_ext_surfaceType', 'SWITCH_ext_surfaceType_' + effectMaterial)
                    self.__prevTerrSwitch = effectMaterial
                    break

            hardnessValue = hardness / len(currTerrainMatKind)
            soundTrack.setRTPC('RTPC_ext_hardness', hardnessValue)
            angPart = min(abs(self.vehicleFilter.angularSpeed) * _FRICTION_ANG_FACTOR, _FRICTION_ANG_BOUND)
            strafePart = min(abs(self.vehicleFilter.strafeSpeed) * _FRICTION_STRAFE_FACTOR, _FRICTION_STRAFE_BOUND)
            frictionValue = max(angPart, strafePart)
            soundTrack.setRTPC('RTPC_ext_friction', frictionValue)
            roughnessValue = self.detailedEngineState.roughnessValue
            if cameraUnit:
                WWISE.WW_setRTCPGlobal('RTPC_ext_roughness_global', math.fabs(roughnessValue))
            soundTrack.setRTPC('RTPC_ext_roughness_abs', math.fabs(roughnessValue))
            soundEngine.setRTPC('RTPC_ext_roughness_abs', math.fabs(roughnessValue))
            soundTrack.setRTPC('RTPC_ext_roughness2', roughnessValue)
            soundEngine.setRTPC('RTPC_ext_roughness2', roughnessValue)
            soundTrack.setRTPC('RTPC_ext_roughness_eng', roughnessValue)
            soundEngine.setRTPC('RTPC_ext_roughness_eng', roughnessValue)
            rotationSpeed = speedInfo[1]
            roatationRelSpeed = rotationSpeed / self.__typeDesc.physics['rotationSpeedLimit']
            RTPC_ext_treads_sum_affect = math.fabs(roatationRelSpeed * 0.33) + math.fabs(roughnessValue * 0.33) + (clamp(0.5, 1.0, self.detailedEngineState.physicLoad) - 0.5) * 0.66
            soundTrack.setRTPC('RTPC_ext_treads_sum_affect', RTPC_ext_treads_sum_affect)
            rightTrackScroll = math.fabs(self.rightTrackScrollLink())
            leftTrackScroll = math.fabs(self.leftTrackScrollLink())
            if rightTrackScroll > leftTrackScroll:
                trackScroll = rightTrackScroll
            else:
                trackScroll = leftTrackScroll
            if self.__isPlayerVehicle:
                self.__commonTrackScroll += (trackScroll - self.__commonTrackScroll) * _PERIODIC_TIME / 0.2
                self.__commonTrackScroll = self.__commonTrackScroll if self.__commonTrackScroll > 0.0 else 0.0
                soundTrack.setRTPC('RTPC_ext_speed_scroll', self.__commonTrackScroll)
                soundEngine.setRTPC('RTPC_ext_speed_scroll', self.__commonTrackScroll)
            if self.__vt is not None:
                self.__vt.addValue2('RTPC_ext_flying', self.isFlyingLink())
                self.__vt.addValue2('RTPC_ext_hardness', hardnessValue)
                self.__vt.addValue2('RTPC_ext_friction', frictionValue)
                self.__vt.addValue2('RTPC_ext_roughness_abs', roughnessValue)
                self.__vt.addValue2('RTPC_ext_treads_sum_affect', RTPC_ext_treads_sum_affect)
                self.__vt.addValue2('speed_abs', speed)
                self.__vt.addValue2('speed_rel', self.detailedEngineState.relativeSpeed)
                self.__vt.addValue2('rot_speed_abs', rotationSpeed)
                self.__vt.addValue2('rot_speed_rel', roatationRelSpeed)
                self.__vt.addValue2('gear', self.detailedEngineState.gearNum)
                self.__vt.addValue2('acc_abs', accelerationAbs)
                self.__vt.addValue2('physic_load', self.detailedEngineState.physicLoad)
                self.__vt.addValue2('RTPC_ext_move', moveValue)
                self.__vt.addValue2('RTPC_ext_speed_scroll', self.__commonTrackScroll)
                self.__vt.addValue2('engine_load', self.detailedEngineState.engineLoad)
                self.__vt.addValue2('submersion', self.isUnderwaterLink())
                if self.__isPlayerVehicle:
                    self.__vt.addValue2('RPM', self.detailedEngineState.rpmPhysicAbs)
                    self.__vt.addValue2('RPM_REL', self.detailedEngineState.rpmPhysicRel)
            return
示例#10
0
 def __setRtpcGlobal(self, points, invadersCount):
     WWISE.WW_setRTCPGlobal(self._getRtpcPointsID(), points)
     WWISE.WW_setRTCPGlobal(self._getRtpcInvadersCountID(), invadersCount)
示例#11
0
 def setRTPC(name, value):
     WWISE.WW_setRTCPGlobal(name, value)
示例#12
0
 def _dispose(self):
     WWISE.WW_setRTCPGlobal(SOUNDS.RTCP_MISSION_BRANCH[self.getBranch()],
                            SOUNDS.BRANCH_DEFAULT)
     super(PersonalMissionsMapView, self)._dispose()
示例#13
0
 def _populate(self):
     super(PersonalMissionsMapView, self)._populate()
     self.refresh()
     WWISE.WW_setRTCPGlobal(SOUNDS.RTCP_MISSION_BRANCH[self.getBranch()],
                            SOUNDS.BRANCH_SELECTED)
示例#14
0
 def __playSound(self, timeLeft):
     if self.__soundID:
         WWISE.WW_setRTCPGlobal(_RTPC, timeLeft)
         WWISE.WW_eventGlobal(self.__soundID)
 def __initSounds(self, compoundModel):
     vehicle = BigWorld.entity(BigWorld.player().playerVehicleID)
     if vehicle is None:
         return
     else:
         if self.__isPlayerVehicle:
             if self.__typeDesc.engine['wwsoundPC'] != '':
                 self.__event = self.__typeDesc.engine['wwsoundPC']
             else:
                 self.__event = self.__typeDesc.engine['wwsound']
             if self.__typeDesc.chassis['wwsoundPC'] != '':
                 self.__eventC = self.__typeDesc.chassis['wwsoundPC']
             else:
                 self.__eventC = self.__typeDesc.chassis['wwsound']
         else:
             if self.__typeDesc.engine['wwsoundNPC'] != '':
                 self.__event = self.__typeDesc.engine['wwsoundNPC']
             else:
                 self.__event = self.__typeDesc.engine['wwsound']
             if self.__typeDesc.chassis['wwsoundNPC'] != '':
                 self.__eventC = self.__typeDesc.chassis['wwsoundNPC']
             else:
                 self.__eventC = self.__typeDesc.chassis['wwsound']
         nodeMatrix = Math.Matrix()
         nodeMatrix.set(compoundModel.node(TankPartNames.HULL))
         vehicleMProv = compoundModel.node(TankPartNames.HULL)
         vehicleMatrix = Math.Matrix()
         vehicleMatrix.set(vehicleMProv)
         self.__engineSoundHP = 'engine' + str(self.__vehicleId)
         self.__movementSoundHP = 'tracks' + str(self.__vehicleId)
         self.__gunSoundHP = 'gun' + str(self.__vehicleId)
         nodeMatrix.set(compoundModel.node(TankPartNames.GUN))
         node = nodeMatrix.translation - vehicleMatrix.translation
         self.__gunSound = SoundGroups.g_instance.WWgetSoundObject(
             self.__gunSoundHP, vehicleMProv, node)
         if self.__gunSound is not None:
             weaponEnergy = vehicle.appearance.gunLength * vehicle.typeDescriptor.shot[
                 'shell']['caliber']
             self.__gunSound.setRTPC('RTPC_ext_weapon_energy', weaponEnergy)
         self.__engineSound = SoundGroups.g_instance.WWgetSoundObject(
             self.__engineSoundHP, vehicleMProv)
         if self.__engineSound is None:
             LOG_ERROR('!!!self.__engineSound is None')
             return
         horsePower = self.__typeDesc.physics['enginePower'] / HP_TO_WATTS
         WWISE.WW_setRTCPGlobal('RTPC_ext_engine_power', horsePower)
         self.__engineSound.setSwitch(
             'SWITCH_ext_physics_state', 'SWITCH_ext_physics_state_off'
             if self.__physicsMode == VEHICLE_PHYSICS_MODE.STANDARD else
             'SWITCH_ext_physics_state_on')
         nodeMatrix.set(compoundModel.node(TankPartNames.TURRET))
         node = nodeMatrix.translation - vehicleMatrix.translation
         if self.__eventC == '':
             LOG_ERROR('Tracks sound is not defined for = {0}'.format(
                 self.__typeDesc.name))
             self.__movementSound = None
         else:
             self.__movementSound = SoundGroups.g_instance.WWgetSoundObject(
                 self.__movementSoundHP, vehicleMProv, node)
         if self.__movementSound is not None:
             self.__movementSound.setSwitch(
                 'SWITCH_ext_physics_state', 'SWITCH_ext_physics_state_off'
                 if self.__physicsMode == VEHICLE_PHYSICS_MODE.STANDARD else
                 'SWITCH_ext_physics_state_on')
             self.__movementSound.setRTPC(
                 'RTPC_ext_vehicle_weight',
                 self.__typeDesc.physics['weight'] / 1000)
             self.__movementSound.setRTPC('RTPC_ext_engine_state', 0.0)
             self.__movementSound.setRTPC('RTPC_ext_physic_rpm_rel', 0.0)
             self.__movementSound.setRTPC('RTPC_ext_physic_rpm_abs', 0.0)
         self.__engineSound.setRTPC(
             'RTPC_ext_vehicle_weight',
             self.__typeDesc.physics['weight'] / 1000)
         self.__engineSound.setRTPC('RTPC_ext_engine_state', 0.0)
         self.__engineSound.setRTPC('RTPC_ext_physic_rpm_rel', 0.0)
         self.__engineSound.setRTPC('RTPC_ext_physic_rpm_abs', 0.0)
         return