def readZoomState(dataSec):
    if dataSec is None:
        return
    else:
        distRangeVec = readVec2(dataSec, 'distRange', (1, 1), (180, 180),
                                (25, 45))
        distRange = MinMax(distRangeVec.x, distRangeVec.y)
        scrollSensitivity = readFloat(dataSec, 'scrollSensitivity', 0, 50, 10)
        sensitivity = readFloat(dataSec, 'sensitivity', 0, 5, 0.002)
        overScrollProtectOnMax = readFloat(dataSec, 'overScrollProtectOnMax',
                                           0, 10, 0)
        overScrollProtectOnMin = readFloat(dataSec, 'overScrollProtectOnMin',
                                           0, 10, 0)
        angleRangeOnMinDist = readAngle(dataSec, 'angleRangeOnMinDist', (1, 1),
                                        (180, 180), (10, 110))
        angleRangeOnMaxDist = readAngle(dataSec, 'angleRangeOnMaxDist', (1, 1),
                                        (180, 180), (10, 110))
        transitionDurationIn = readFloat(dataSec, 'transitionDurationIn', 0, 5,
                                         0.5)
        transitionDurationOut = readFloat(dataSec, 'transitionDurationOut', 0,
                                          5, 0.5)
        transitionEasingIn = readEasing(dataSec, 'transitionEasingIn', 1, 3, 3)
        transitionEasingOut = readEasing(dataSec, 'transitionEasingOut', 1, 3,
                                         3)
        focusRadiusOnMinMaxDistVec = readVec2(dataSec,
                                              'focusRadiusOnMinMaxDist',
                                              (-100, -100), (100, 100), (3, 3))
        focusRadiusOnMinMaxDist = MinMax(focusRadiusOnMinMaxDistVec.x,
                                         focusRadiusOnMinMaxDistVec.y)
        heightAboveBaseOnMinMaxDistVec = readVec2(
            dataSec, 'heightAboveBaseOnMinMaxDist', (1, 1), (180, 180), (3, 3))
        heightAboveBaseOnMinMaxDist = MinMax(heightAboveBaseOnMinMaxDistVec.x,
                                             heightAboveBaseOnMinMaxDistVec.y)
        minLODBiasForTanks = readFloat(dataSec, 'minLODBiasForTanks', 0, 5,
                                       0.0)
        settingsKey = readString(dataSec, 'settingsKey', '')
        return ZoomState(
            distRange=distRange,
            scrollSensitivity=scrollSensitivity,
            sensitivity=sensitivity,
            angleRangeOnMinDist=angleRangeOnMinDist,
            angleRangeOnMaxDist=angleRangeOnMaxDist,
            transitionDurationIn=transitionDurationIn,
            transitionDurationOut=transitionDurationOut,
            focusRadiusOnMinMaxDist=focusRadiusOnMinMaxDist,
            heightAboveBaseOnMinMaxDist=heightAboveBaseOnMinMaxDist,
            overScrollProtectOnMax=overScrollProtectOnMax,
            overScrollProtectOnMin=overScrollProtectOnMin,
            transitionEasingIn=transitionEasingIn,
            transitionEasingOut=transitionEasingOut,
            minLODBiasForTanks=minLODBiasForTanks,
            settingsKey=settingsKey)
Example #2
0
 def _readBaseCfg(self, dataSec):
     bcfg = self._baseCfg
     bcfg['keySensitivity'] = readFloat(dataSec, 'keySensitivity', 0.005,
                                        10.0, 0.025)
     bcfg['sensitivity'] = readFloat(dataSec, 'sensitivity', 0.005, 10.0,
                                     0.025)
     bcfg['scrollSensitivity'] = readFloat(dataSec, 'scrollSensitivity',
                                           0.005, 10.0, 0.025)
     bcfg['angularSpeed'] = readFloat(dataSec, 'angularSpeed', pi / 720.0,
                                      pi / 0.5, pi / 360.0)
     bcfg['distRange'] = readVec2(dataSec, 'distRange', (1.0, 1.0),
                                  (10000.0, 10000.0), (2.0, 30.0))
     bcfg['transitionDist'] = readFloat(dataSec, 'transitionDist', 1.0,
                                        10000.0, 60.0)
     bcfg['minimalPitch'] = readFloat(dataSec, 'minimalPitch', pi / 36.0,
                                      pi / 3.0, pi / 18.0)
     bcfg['maximalPitch'] = readFloat(dataSec, 'maximalPitch', pi / 6.0,
                                      pi / 3.0, pi / 3.5)
     bcfg['interpolationSpeed'] = readFloat(dataSec, 'interpolationSpeed',
                                            0.0, 100.0, 5.0)
     bcfg['distInterpolationSpeed'] = readFloat(dataSec,
                                                'distInterpolationSpeed',
                                                0.0, 10.0, 5.0)
     bcfg['highPitchThreshold'] = readFloat(dataSec, 'highPitchThreshold',
                                            0.1, 10.0, 3.0)
     bcfg['hTimeThreshold'] = readFloat(dataSec, 'hysteresis/timeThreshold',
                                        0.0, 10.0, 0.5)
     bcfg['hPositionThreshold'] = readFloat(dataSec,
                                            'hysteresis/positionThreshold',
                                            0.0, 100.0, 7.0)
     bcfg['scrollSmoothingTime'] = readFloat(dataSec, 'scrollSmoothingTime',
                                             0.0, 1.0, 0.3)
 def reloadConfig(self, dataSec):
     filterSec = dataSec['aimingSystem']
     self.__pitchDeviation = readVec2(
         filterSec, 'deviation', (-_MAX_DEVIATION_DEG, -_MAX_DEVIATION_DEG),
         (_MAX_DEVIATION_DEG, _MAX_DEVIATION_DEG), (0.0, 0.0))
     self.__pitchDeviation = (-math.radians(self.__pitchDeviation[1]),
                              -math.radians(self.__pitchDeviation[0]))
     self.__pitchfilter.reloadConfig(filterSec)
Example #4
0
 def _readBaseCfg(self, dataSec):
     bcfg = self._baseCfg
     bcfg['keySensitivity'] = readFloat(dataSec, 'keySensitivity', 0.005, 10, 0.025)
     bcfg['sensitivity'] = readFloat(dataSec, 'sensitivity', 0.005, 10, 0.025)
     bcfg['scrollSensitivity'] = readFloat(dataSec, 'scrollSensitivity', 0.005, 10, 0.025)
     bcfg['distRange'] = readVec2(dataSec, 'distRange', (1, 1), (10000, 10000), (2, 30))
     bcfg['transitionDist'] = readFloat(dataSec, 'transitionDist', 1.0, 10000.0, 60.0)
     bcfg['distRangeForArenaSize'] = self.__readDynamicDistRangeData(dataSec)
     bcfg['scrollSmoothingTime'] = readFloat(dataSec, 'scrollSmoothingTime', 0.0, 1.0, 0.3)
 def __readDynamicDistRangeData(self, dataSec):
     section = dataSec['dynamicDistRanges']
     dynamicDistRanges = []
     if section is None:
         return dynamicDistRanges
     else:
         value = section['dynamicDistRange']
         minArenaSize = readFloat(dataSec, 'minArenaSize', 0.1, 2000, 2000.0)
         distRange = readVec2(value, 'distRangeOverride', 0.1, 100, (40, 300))
         acceleration = readFloat(dataSec, 'acceleration', 0.1, 100, 0.1)
         dynamicDistRanges.append(_DistRangeSetting(minArenaSize, distRange, acceleration))
         return dynamicDistRanges
Example #6
0
 def __readCfg(self, dataSec):
     if not dataSec:
         LOG_WARNING('Invalid section <artyMode/camera> in avatar_input_handler.xml')
     self.__baseCfg = dict()
     bcfg = self.__baseCfg
     bcfg['keySensitivity'] = readFloat(dataSec, 'keySensitivity', 0.005, 10.0, 0.025)
     bcfg['sensitivity'] = readFloat(dataSec, 'sensitivity', 0.005, 10.0, 0.025)
     bcfg['scrollSensitivity'] = readFloat(dataSec, 'scrollSensitivity', 0.005, 10.0, 0.025)
     bcfg['angularSpeed'] = readFloat(dataSec, 'angularSpeed', pi / 720.0, pi / 0.5, pi / 360.0)
     bcfg['distRange'] = readVec2(dataSec, 'distRange', (1.0, 1.0), (10000.0, 10000.0), (2.0, 30.0))
     bcfg['minimalPitch'] = readFloat(dataSec, 'minimalPitch', pi / 36.0, pi / 3.0, pi / 18.0)
     bcfg['maximalPitch'] = readFloat(dataSec, 'maximalPitch', pi / 6.0, pi / 3.0, pi / 3.5)
     bcfg['interpolationSpeed'] = readFloat(dataSec, 'interpolationSpeed', 0.0, 10.0, 5.0)
     bcfg['highPitchThreshold'] = readFloat(dataSec, 'highPitchThreshold', 0.1, 10.0, 3.0)
     bcfg['hTimeThreshold'] = readFloat(dataSec, 'hysteresis/timeThreshold', 0.0, 10.0, 0.5)
     bcfg['hPositionThreshold'] = readFloat(dataSec, 'hysteresis/positionThreshold', 0.0, 100.0, 7.0)
     ds = Settings.g_instance.userPrefs[Settings.KEY_CONTROL_MODE]
     if ds is not None:
         ds = ds['artyMode/camera']
     self.__userCfg = dict()
     ucfg = self.__userCfg
     ucfg['horzInvert'] = self.settingsCore.getSetting('mouseHorzInvert')
     ucfg['vertInvert'] = self.settingsCore.getSetting('mouseVertInvert')
     ucfg['keySensitivity'] = readFloat(ds, 'keySensitivity', 0.0, 10.0, 1.0)
     ucfg['sensitivity'] = readFloat(ds, 'sensitivity', 0.0, 10.0, 1.0)
     ucfg['scrollSensitivity'] = readFloat(ds, 'scrollSensitivity', 0.0, 10.0, 1.0)
     ucfg['camDist'] = readFloat(ds, 'camDist', 0.0, 60.0, 0.0)
     self.__cfg = dict()
     cfg = self.__cfg
     cfg['keySensitivity'] = bcfg['keySensitivity']
     cfg['sensitivity'] = bcfg['sensitivity']
     cfg['scrollSensitivity'] = bcfg['scrollSensitivity']
     cfg['distRange'] = bcfg['distRange']
     cfg['angularSpeed'] = bcfg['angularSpeed']
     cfg['minimalPitch'] = bcfg['minimalPitch']
     cfg['maximalPitch'] = bcfg['maximalPitch']
     cfg['interpolationSpeed'] = bcfg['interpolationSpeed']
     cfg['highPitchThresholdSq'] = bcfg['highPitchThreshold'] * bcfg['highPitchThreshold']
     cfg['hTimeThreshold'] = bcfg['hTimeThreshold']
     cfg['hPositionThresholdSq'] = bcfg['hPositionThreshold'] * bcfg['hPositionThreshold']
     cfg['keySensitivity'] *= ucfg['keySensitivity']
     cfg['sensitivity'] *= ucfg['sensitivity']
     cfg['scrollSensitivity'] *= ucfg['scrollSensitivity']
     cfg['camDist'] = ucfg['camDist']
     cfg['horzInvert'] = ucfg['horzInvert']
     cfg['vertInvert'] = ucfg['vertInvert']
     dynamicSection = dataSec['dynamics']
     self.__dynamicCfg.readImpulsesConfig(dynamicSection)
     self.__positionOscillator = createOscillatorFromSection(dynamicSection['oscillator'], False)
     self.__positionNoiseOscillator = createOscillatorFromSection(dynamicSection['randomNoiseOscillatorFlat'], False)
     return
 def __readCfg(self, dataSec):
     if not dataSec or dataSec['strategic']:
         LOG_WARNING(
             'Invalid section <strategicMode/camera> in avatar_input_handler.xml'
         )
     self.__baseCfg = dict()
     bcfg = self.__baseCfg
     bcfg['keySensitivity'] = readFloat(dataSec, 'keySensitivity', 0.005,
                                        10, 0.025)
     bcfg['sensitivity'] = readFloat(dataSec, 'sensitivity', 0.005, 10,
                                     0.025)
     bcfg['scrollSensitivity'] = readFloat(dataSec, 'scrollSensitivity',
                                           0.005, 10, 0.025)
     bcfg['distRange'] = readVec2(dataSec, 'distRange', (1, 1),
                                  (10000, 10000), (2, 30))
     bcfg['distRangeForArenaSize'] = self.__readDynamicDistRangeData(
         dataSec)
     ds = Settings.g_instance.userPrefs[Settings.KEY_CONTROL_MODE]
     if ds is not None:
         ds = ds['strategicMode/camera']
     self.__userCfg = dict()
     ucfg = self.__userCfg
     ucfg['horzInvert'] = self.settingsCore.getSetting('mouseHorzInvert')
     ucfg['vertInvert'] = self.settingsCore.getSetting('mouseVertInvert')
     ucfg['keySensitivity'] = readFloat(ds, 'keySensitivity', 0.0, 10.0,
                                        1.0)
     ucfg['sensitivity'] = readFloat(ds, 'sensitivity', 0.0, 10.0, 1.0)
     ucfg['scrollSensitivity'] = readFloat(ds, 'scrollSensitivity', 0.0,
                                           10.0, 1.0)
     ucfg['camDist'] = readFloat(ds, 'camDist', 0.0, 60.0, 0)
     self.__cfg = dict()
     cfg = self.__cfg
     cfg['keySensitivity'] = bcfg['keySensitivity']
     cfg['sensitivity'] = bcfg['sensitivity']
     cfg['scrollSensitivity'] = bcfg['scrollSensitivity']
     cfg['distRange'] = bcfg['distRange']
     cfg['distRangeForArenaSize'] = bcfg['distRangeForArenaSize']
     cfg['camDist'] = ucfg['camDist']
     cfg['keySensitivity'] *= ucfg['keySensitivity']
     cfg['sensitivity'] *= ucfg['sensitivity']
     cfg['scrollSensitivity'] *= ucfg['scrollSensitivity']
     cfg['horzInvert'] = ucfg['horzInvert']
     cfg['vertInvert'] = ucfg['vertInvert']
     dynamicsSection = dataSec['dynamics']
     self.__dynamicCfg.readImpulsesConfig(dynamicsSection)
     self.__positionOscillator = createOscillatorFromSection(
         dynamicsSection['oscillator'], False)
     self.__positionNoiseOscillator = createOscillatorFromSection(
         dynamicsSection['randomNoiseOscillatorFlat'], False)
     return
Example #8
0
 def __readCfg(self, dataSec):
     if not dataSec:
         LOG_WARNING('Invalid section <strategicMode/camera> in avatar_input_handler.xml')
     self.__baseCfg = dict()
     bcfg = self.__baseCfg
     bcfg['keySensitivity'] = readFloat(dataSec, 'keySensitivity', 0.005, 10, 0.025)
     bcfg['sensitivity'] = readFloat(dataSec, 'sensitivity', 0.005, 10, 0.025)
     bcfg['scrollSensitivity'] = readFloat(dataSec, 'scrollSensitivity', 0.005, 10, 0.025)
     bcfg['distRange'] = readVec2(dataSec, 'distRange', (1, 1), (10000, 10000), (2, 30))
     ds = Settings.g_instance.userPrefs[Settings.KEY_CONTROL_MODE]
     if ds is not None:
         ds = ds['strategicMode/camera']
     self.__userCfg = dict()
     ucfg = self.__userCfg
     from account_helpers.settings_core.SettingsCore import g_settingsCore
     ucfg['horzInvert'] = g_settingsCore.getSetting('mouseHorzInvert')
     ucfg['vertInvert'] = g_settingsCore.getSetting('mouseVertInvert')
     ucfg['keySensitivity'] = readFloat(ds, 'keySensitivity', 0.0, 10.0, 1.0)
     ucfg['sensitivity'] = readFloat(ds, 'sensitivity', 0.0, 10.0, 1.0)
     ucfg['scrollSensitivity'] = readFloat(ds, 'scrollSensitivity', 0.0, 10.0, 1.0)
     ucfg['camDist'] = readFloat(ds, 'camDist', 0.0, 60.0, 0)
     self.__cfg = dict()
     cfg = self.__cfg
     cfg['keySensitivity'] = bcfg['keySensitivity']
     cfg['sensitivity'] = bcfg['sensitivity']
     cfg['scrollSensitivity'] = bcfg['scrollSensitivity']
     cfg['distRange'] = bcfg['distRange']
     cfg['camDist'] = ucfg['camDist']
     cfg['keySensitivity'] *= ucfg['keySensitivity']
     cfg['sensitivity'] *= ucfg['sensitivity']
     cfg['scrollSensitivity'] *= ucfg['scrollSensitivity']
     cfg['horzInvert'] = ucfg['horzInvert']
     cfg['vertInvert'] = ucfg['vertInvert']
     dynamicsSection = dataSec['dynamics']
     self.__dynamicCfg.readImpulsesConfig(dynamicsSection)
     self.__positionOscillator = createOscillatorFromSection(dynamicsSection['oscillator'], False)
     self.__positionNoiseOscillator = createOscillatorFromSection(dynamicsSection['randomNoiseOscillatorFlat'], False)
Example #9
0
    def __readCfg(self, dataSec):
        if dataSec is None:
            LOG_WARNING(
                'Invalid section <arcadeMode/camera> in avatar_input_handler.xml'
            )
        self.__baseCfg = dict()
        bcfg = self.__baseCfg
        bcfg['keySensitivity'] = readFloat(dataSec, 'keySensitivity', 0, 10,
                                           0.01)
        bcfg['sensitivity'] = readFloat(dataSec, 'sensitivity', 0, 10, 0.01)
        bcfg['scrollSensitivity'] = readFloat(dataSec, 'scrollSensitivity', 0,
                                              10, 0.01)
        bcfg['angleRange'] = readVec2(dataSec, 'angleRange', (0, 0),
                                      (180, 180), (10, 110))
        distRangeVec = readVec2(dataSec, 'distRange', (1, 1), (100, 100),
                                (2, 20))
        bcfg['distRange'] = MinMax(distRangeVec.x, distRangeVec.y)
        bcfg['minStartDist'] = readFloat(dataSec, 'minStartDist',
                                         bcfg['distRange'][0],
                                         bcfg['distRange'][1],
                                         bcfg['distRange'][0])
        bcfg['optimalStartDist'] = readFloat(dataSec, 'optimalStartDist',
                                             bcfg['distRange'][0],
                                             bcfg['distRange'][1],
                                             bcfg['distRange'][0])
        bcfg['angleRange'][0] = math.radians(
            bcfg['angleRange'][0]) - math.pi * 0.5
        bcfg['angleRange'][1] = math.radians(
            bcfg['angleRange'][1]) - math.pi * 0.5
        bcfg['fovMultMinMaxDist'] = MinMax(
            readFloat(dataSec, 'fovMultMinDist', 0.1, 100, 1.0),
            readFloat(dataSec, 'fovMultMaxDist', 0.1, 100, 1.0))
        ds = Settings.g_instance.userPrefs[Settings.KEY_CONTROL_MODE]
        if ds is not None:
            ds = ds['arcadeMode/camera']
        self.__userCfg = dict()
        ucfg = self.__userCfg
        ucfg['horzInvert'] = self.settingsCore.getSetting('mouseHorzInvert')
        ucfg['vertInvert'] = self.settingsCore.getSetting('mouseVertInvert')
        ucfg['sniperModeByShift'] = self.settingsCore.getSetting(
            'sniperModeByShift')
        ucfg['keySensitivity'] = readFloat(ds, 'keySensitivity', 0.0, 10.0,
                                           1.0)
        ucfg['sensitivity'] = readFloat(ds, 'sensitivity', 0.0, 10.0, 1.0)
        ucfg['scrollSensitivity'] = readFloat(ds, 'scrollSensitivity', 0.0,
                                              10.0, 1.0)
        ucfg['startDist'] = readFloat(ds, 'startDist', bcfg['distRange'][0],
                                      500, bcfg['optimalStartDist'])
        if ucfg['startDist'] < bcfg['minStartDist']:
            ucfg['startDist'] = bcfg['optimalStartDist']
        ucfg['startAngle'] = readFloat(ds, 'startAngle', 5, 180, 60)
        ucfg['startAngle'] = math.radians(ucfg['startAngle']) - math.pi * 0.5
        ucfg['fovMultMinMaxDist'] = MinMax(
            readFloat(ds, 'fovMultMinDist', 0.1, 100,
                      bcfg['fovMultMinMaxDist'].min),
            readFloat(ds, 'fovMultMaxDist', 0.1, 100,
                      bcfg['fovMultMinMaxDist'].max))
        self.__cfg = dict()
        cfg = self.__cfg
        cfg['keySensitivity'] = bcfg['keySensitivity']
        cfg['sensitivity'] = bcfg['sensitivity']
        cfg['scrollSensitivity'] = bcfg['scrollSensitivity']
        cfg['angleRange'] = bcfg['angleRange']
        cfg['distRange'] = bcfg['distRange']
        cfg['minStartDist'] = bcfg['minStartDist']
        cfg['horzInvert'] = ucfg['horzInvert']
        cfg['vertInvert'] = ucfg['vertInvert']
        cfg['keySensitivity'] *= ucfg['keySensitivity']
        cfg['sensitivity'] *= ucfg['sensitivity']
        cfg['scrollSensitivity'] *= ucfg['scrollSensitivity']
        cfg['startDist'] = ucfg['startDist']
        cfg['startAngle'] = ucfg['startAngle']
        cfg['fovMultMinMaxDist'] = ucfg['fovMultMinMaxDist']
        cfg['sniperModeByShift'] = ucfg['sniperModeByShift']
        enableShift = dataSec.readBool('shift', False)
        if enableShift:
            movementMappings = dict()
            movementMappings[Keys.KEY_A] = Math.Vector3(-1, 0, 0)
            movementMappings[Keys.KEY_D] = Math.Vector3(1, 0, 0)
            movementMappings[Keys.KEY_Q] = Math.Vector3(0, 1, 0)
            movementMappings[Keys.KEY_E] = Math.Vector3(0, -1, 0)
            movementMappings[Keys.KEY_W] = Math.Vector3(0, 0, 1)
            movementMappings[Keys.KEY_S] = Math.Vector3(0, 0, -1)
            shiftSensitivity = dataSec.readFloat('shiftSensitivity', 0.5)
            self.__shiftKeySensor = KeySensor(movementMappings,
                                              shiftSensitivity)
            self.__shiftKeySensor.reset(Math.Vector3())
        dynamicsSection = dataSec['dynamics']
        self.__impulseOscillator = createOscillatorFromSection(
            dynamicsSection['impulseOscillator'], False)
        self.__movementOscillator = createOscillatorFromSection(
            dynamicsSection['movementOscillator'], False)
        self.__movementOscillator = Math.PyCompoundOscillator(
            self.__movementOscillator,
            Math.PyOscillator(1.0, Vector3(50), Vector3(20),
                              Vector3(0.01, 0.0, 0.01)))
        self.__noiseOscillator = createOscillatorFromSection(
            dynamicsSection['randomNoiseOscillatorSpherical'])
        self.__dynamicCfg.readImpulsesConfig(dynamicsSection)
        self.__dynamicCfg['accelerationSensitivity'] = readFloat(
            dynamicsSection, 'accelerationSensitivity', -1000, 1000, 0.1)
        self.__dynamicCfg['frontImpulseToPitchRatio'] = math.radians(
            readFloat(dynamicsSection, 'frontImpulseToPitchRatio', -1000, 1000,
                      0.1))
        self.__dynamicCfg['sideImpulseToRollRatio'] = math.radians(
            readFloat(dynamicsSection, 'sideImpulseToRollRatio', -1000, 1000,
                      0.1))
        self.__dynamicCfg['sideImpulseToYawRatio'] = math.radians(
            readFloat(dynamicsSection, 'sideImpulseToYawRatio', -1000, 1000,
                      0.1))
        accelerationThreshold = readFloat(dynamicsSection,
                                          'accelerationThreshold', 0.0, 1000.0,
                                          0.1)
        self.__dynamicCfg['accelerationThreshold'] = accelerationThreshold
        self.__dynamicCfg['accelerationMax'] = readFloat(
            dynamicsSection, 'accelerationMax', 0.0, 1000.0, 0.1)
        self.__dynamicCfg['maxShotImpulseDistance'] = readFloat(
            dynamicsSection, 'maxShotImpulseDistance', 0.0, 1000.0, 10.0)
        self.__dynamicCfg['maxExplosionImpulseDistance'] = readFloat(
            dynamicsSection, 'maxExplosionImpulseDistance', 0.0, 1000.0, 10.0)
        self.__dynamicCfg['zoomExposure'] = readFloat(dynamicsSection,
                                                      'zoomExposure', 0.0,
                                                      1000.0, 0.25)
        accelerationFilter = mathUtils.RangeFilter(
            self.__dynamicCfg['accelerationThreshold'],
            self.__dynamicCfg['accelerationMax'], 100,
            mathUtils.SMAFilter(ArcadeCamera._FILTER_LENGTH))
        maxAccelerationDuration = readFloat(
            dynamicsSection, 'maxAccelerationDuration', 0.0, 10000.0,
            ArcadeCamera._DEFAULT_MAX_ACCELERATION_DURATION)
        self.__accelerationSmoother = AccelerationSmoother(
            accelerationFilter, maxAccelerationDuration)
        self.__inputInertia = _InputInertia(
            self.__calculateInputInertiaMinMax(), 0.0)
        advancedCollider = dataSec['advancedCollider']
        self.__adCfg = dict()
        cfg = self.__adCfg
        if advancedCollider is None:
            LOG_ERROR('<advancedCollider> dataSection is not found!')
            cfg['enable'] = False
        else:
            cfg['enable'] = advancedCollider.readBool('enable', False)
            cfg['fovRatio'] = advancedCollider.readFloat('fovRatio', 2.0)
            cfg['rollbackSpeed'] = advancedCollider.readFloat(
                'rollbackSpeed', 1.0)
            cfg['minimalCameraDistance'] = self.__cfg['distRange'][0]
            cfg['speedThreshold'] = advancedCollider.readFloat(
                'speedThreshold', 0.1)
            cfg['minimalVolume'] = advancedCollider.readFloat(
                'minimalVolume', 200.0)
            cfg['volumeGroups'] = dict()
            for group in VOLUME_GROUPS_NAMES:
                groups = advancedCollider['volumeGroups']
                cfg['volumeGroups'][group] = CollisionVolumeGroup.fromSection(
                    groups[group])

        return
 def reloadConfig(self, dataSec):
     filterSec = dataSec['aimingSystem']
     self.__pitchDeviation = readVec2(filterSec, 'deviation', (-_MAX_DEVIATION_DEG, -_MAX_DEVIATION_DEG), (_MAX_DEVIATION_DEG, _MAX_DEVIATION_DEG), (0.0, 0.0))
     self.__pitchDeviation = (-math.radians(self.__pitchDeviation[1]), -math.radians(self.__pitchDeviation[0]))
     self.__pitchfilter.reloadConfig(filterSec)
Example #11
0
 def __readCfg(self, dataSec):
     if dataSec is None:
         LOG_WARNING('Invalid section <arcadeMode/camera> in avatar_input_handler.xml')
     self.__baseCfg = dict()
     bcfg = self.__baseCfg
     bcfg['keySensitivity'] = readFloat(dataSec, 'keySensitivity', 0, 10, 0.01)
     bcfg['sensitivity'] = readFloat(dataSec, 'sensitivity', 0, 10, 0.01)
     bcfg['scrollSensitivity'] = readFloat(dataSec, 'scrollSensitivity', 0, 10, 0.01)
     bcfg['angleRange'] = readVec2(dataSec, 'angleRange', (0, 0), (180, 180), (10, 110))
     distRangeVec = readVec2(dataSec, 'distRange', (1, 1), (100, 100), (2, 20))
     bcfg['distRange'] = MinMax(distRangeVec.x, distRangeVec.y)
     bcfg['minStartDist'] = readFloat(dataSec, 'minStartDist', bcfg['distRange'][0], bcfg['distRange'][1], bcfg['distRange'][0])
     bcfg['optimalStartDist'] = readFloat(dataSec, 'optimalStartDist', bcfg['distRange'][0], bcfg['distRange'][1], bcfg['distRange'][0])
     bcfg['angleRange'][0] = math.radians(bcfg['angleRange'][0]) - math.pi * 0.5
     bcfg['angleRange'][1] = math.radians(bcfg['angleRange'][1]) - math.pi * 0.5
     bcfg['fovMultMinMaxDist'] = MinMax(readFloat(dataSec, 'fovMultMinDist', 0.1, 100, 1.0), readFloat(dataSec, 'fovMultMaxDist', 0.1, 100, 1.0))
     ds = Settings.g_instance.userPrefs[Settings.KEY_CONTROL_MODE]
     if ds is not None:
         ds = ds['arcadeMode/camera']
     self.__userCfg = dict()
     ucfg = self.__userCfg
     from account_helpers.settings_core.SettingsCore import g_settingsCore
     ucfg['horzInvert'] = g_settingsCore.getSetting('mouseHorzInvert')
     ucfg['vertInvert'] = g_settingsCore.getSetting('mouseVertInvert')
     ucfg['sniperModeByShift'] = g_settingsCore.getSetting('sniperModeByShift')
     ucfg['keySensitivity'] = readFloat(ds, 'keySensitivity', 0.0, 10.0, 1.0)
     ucfg['sensitivity'] = readFloat(ds, 'sensitivity', 0.0, 10.0, 1.0)
     ucfg['scrollSensitivity'] = readFloat(ds, 'scrollSensitivity', 0.0, 10.0, 1.0)
     ucfg['startDist'] = readFloat(ds, 'startDist', bcfg['distRange'][0], 500, bcfg['optimalStartDist'])
     if ucfg['startDist'] < bcfg['minStartDist']:
         ucfg['startDist'] = bcfg['optimalStartDist']
     ucfg['startAngle'] = readFloat(ds, 'startAngle', 5, 180, 60)
     ucfg['startAngle'] = math.radians(ucfg['startAngle']) - math.pi * 0.5
     ucfg['fovMultMinMaxDist'] = MinMax(readFloat(ds, 'fovMultMinDist', 0.1, 100, bcfg['fovMultMinMaxDist'].min), readFloat(ds, 'fovMultMaxDist', 0.1, 100, bcfg['fovMultMinMaxDist'].max))
     self.__cfg = dict()
     cfg = self.__cfg
     cfg['keySensitivity'] = bcfg['keySensitivity']
     cfg['sensitivity'] = bcfg['sensitivity']
     cfg['scrollSensitivity'] = bcfg['scrollSensitivity']
     cfg['angleRange'] = bcfg['angleRange']
     cfg['distRange'] = bcfg['distRange']
     cfg['minStartDist'] = bcfg['minStartDist']
     cfg['horzInvert'] = ucfg['horzInvert']
     cfg['vertInvert'] = ucfg['vertInvert']
     cfg['keySensitivity'] *= ucfg['keySensitivity']
     cfg['sensitivity'] *= ucfg['sensitivity']
     cfg['scrollSensitivity'] *= ucfg['scrollSensitivity']
     cfg['startDist'] = ucfg['startDist']
     cfg['startAngle'] = ucfg['startAngle']
     cfg['fovMultMinMaxDist'] = ucfg['fovMultMinMaxDist']
     cfg['sniperModeByShift'] = ucfg['sniperModeByShift']
     enableShift = dataSec.readBool('shift', False)
     if enableShift:
         movementMappings = dict()
         movementMappings[Keys.KEY_A] = Math.Vector3(-1, 0, 0)
         movementMappings[Keys.KEY_D] = Math.Vector3(1, 0, 0)
         movementMappings[Keys.KEY_Q] = Math.Vector3(0, 1, 0)
         movementMappings[Keys.KEY_E] = Math.Vector3(0, -1, 0)
         movementMappings[Keys.KEY_W] = Math.Vector3(0, 0, 1)
         movementMappings[Keys.KEY_S] = Math.Vector3(0, 0, -1)
         shiftSensitivity = dataSec.readFloat('shiftSensitivity', 0.5)
         self.__shiftKeySensor = KeySensor(movementMappings, shiftSensitivity)
         self.__shiftKeySensor.reset(Math.Vector3())
     dynamicsSection = dataSec['dynamics']
     self.__impulseOscillator = createOscillatorFromSection(dynamicsSection['impulseOscillator'], False)
     self.__movementOscillator = createOscillatorFromSection(dynamicsSection['movementOscillator'], False)
     self.__movementOscillator = CompoundOscillator(self.__movementOscillator, Oscillator(1.0, Vector3(50), Vector3(20), Vector3(0.01, 0.0, 0.01)))
     self.__noiseOscillator = createOscillatorFromSection(dynamicsSection['randomNoiseOscillatorSpherical'])
     self.__dynamicCfg.readImpulsesConfig(dynamicsSection)
     self.__dynamicCfg['accelerationSensitivity'] = readFloat(dynamicsSection, 'accelerationSensitivity', -1000, 1000, 0.1)
     self.__dynamicCfg['frontImpulseToPitchRatio'] = math.radians(readFloat(dynamicsSection, 'frontImpulseToPitchRatio', -1000, 1000, 0.1))
     self.__dynamicCfg['sideImpulseToRollRatio'] = math.radians(readFloat(dynamicsSection, 'sideImpulseToRollRatio', -1000, 1000, 0.1))
     self.__dynamicCfg['sideImpulseToYawRatio'] = math.radians(readFloat(dynamicsSection, 'sideImpulseToYawRatio', -1000, 1000, 0.1))
     accelerationThreshold = readFloat(dynamicsSection, 'accelerationThreshold', 0.0, 1000.0, 0.1)
     self.__dynamicCfg['accelerationThreshold'] = accelerationThreshold
     self.__dynamicCfg['accelerationMax'] = readFloat(dynamicsSection, 'accelerationMax', 0.0, 1000.0, 0.1)
     self.__dynamicCfg['maxShotImpulseDistance'] = readFloat(dynamicsSection, 'maxShotImpulseDistance', 0.0, 1000.0, 10.0)
     self.__dynamicCfg['maxExplosionImpulseDistance'] = readFloat(dynamicsSection, 'maxExplosionImpulseDistance', 0.0, 1000.0, 10.0)
     self.__dynamicCfg['zoomExposure'] = readFloat(dynamicsSection, 'zoomExposure', 0.0, 1000.0, 0.25)
     accelerationFilter = mathUtils.RangeFilter(self.__dynamicCfg['accelerationThreshold'], self.__dynamicCfg['accelerationMax'], 100, mathUtils.SMAFilter(ArcadeCamera._FILTER_LENGTH))
     maxAccelerationDuration = readFloat(dynamicsSection, 'maxAccelerationDuration', 0.0, 10000.0, ArcadeCamera._DEFAULT_MAX_ACCELERATION_DURATION)
     self.__accelerationSmoother = AccelerationSmoother(accelerationFilter, maxAccelerationDuration)
     self.__inputInertia = _InputInertia(self.__cfg['fovMultMinMaxDist'], 0.0)
     advancedCollision = dataSec['advancedCollision']
     if advancedCollision is None:
         LOG_ERROR('<advancedCollision> dataSection is not found!')
     else:
         BigWorld.setAdvancedColliderConstants(AdvancedColliderConstants.fromSection(advancedCollision), cfg['distRange'][0])
     return
def readAngle(dataSec, name, minVal, maxVal, defaultVal):
    angle = readVec2(dataSec, name, minVal, maxVal, defaultVal)
    angle[0] = math.radians(angle[0]) - math.pi * 0.5
    angle[1] = math.radians(angle[1]) - math.pi * 0.5
    return angle