<?xml version="1.0" encoding="utf-8" standalone="no"?>
<vehicle type="JLG400S" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://validation.gdn.giants-software.com/xml/fs25/vehicle.xsd">
    <annotation>Copyright (C) GIANTS Software GmbH, All Rights Reserved.</annotation>
    <storeData>
        <name>
            <en>JLG 400S LIFT</en></name>
        <specs>
            <power>250</power>
            <maxSpeed>120</maxSpeed>
        </specs>
        <functions>
            <function>$l10n_function_telescopic_boom_lift</function>
        </functions>
        <image>store.dds</image>
        <price>15000</price>
        <lifetime>600</lifetime>
        <rotation>0</rotation>
        <brand>JLG</brand>
        <category>miscVehicles</category>
        <vertexBufferMemoryUsage>1484212</vertexBufferMemoryUsage>
        <indexBufferMemoryUsage>360324</indexBufferMemoryUsage>
        <textureMemoryUsage>14330864</textureMemoryUsage>
        <instanceVertexBufferMemoryUsage>0</instanceVertexBufferMemoryUsage>
        <instanceIndexBufferMemoryUsage>0</instanceIndexBufferMemoryUsage>
    </storeData>
    <base>
        <typeDesc>$l10n_typeDesc_boomLift</typeDesc>
        <filename>JLG400S.i3d</filename>
        <sounds filename="sounds/boomlift.xml"/>
        <size width="2.5" length="5"/>
        <components>
            <component centerOfMass="0 0.205 -0.184" solverIterationCount="10" mass="5000"/>
        </components>
        <schemaOverlay attacherJointPosition="0 0" name="VEHICLE"/>
        <mapHotspot type="VEHICLE"/>
    </base>
    <wheels>
        <wheelConfigurations>
            <wheelConfiguration name="$l10n_configuration_valueDefault" price="0">
                <wheels autoRotateBackSpeed="2.7">
                    <wheel isLeft="true" hasTireTracks="true" hasParticles="true">
                        <physics rotSpeed="1" restLoad="1.1" repr="0>2|0" driveNode="0>2|0|0" radius="0.398" forcePointRatio="0.2" initialCompression="50" suspTravel="0.12" spring="47" damper="20"/>
                    </wheel>
                    <wheel isLeft="false" hasTireTracks="true" hasParticles="true">
                        <physics rotSpeed="1" restLoad="1.1" repr="0>2|1" driveNode="0>2|1|0" radius="0.398" forcePointRatio="0.2" initialCompression="50" suspTravel="0.12" spring="47" damper="20"/>
                    </wheel>
                    <wheel isLeft="true" hasTireTracks="true" hasParticles="true">
                        <physics rotSpeed="1" restLoad="2.2" repr="0>2|2" driveNode="0>2|2|0" radius="0.398" forcePointRatio="0.3" initialCompression="50" suspTravel="0.21" spring="47" damper="20"/>
                        <steering node="0>1|1" nodeMinTransX="-0.001" nodeMaxTransX="0.001"/>
                    </wheel>
                    <wheel isLeft="false" hasTireTracks="true" hasParticles="true">
                        <physics rotSpeed="1" restLoad="2.2" repr="0>2|3" driveNode="0>2|3|0" radius="0.398" forcePointRatio="0.3" initialCompression="50" suspTravel="0.21" spring="47" damper="20"/>
                    </wheel>
                </wheels>
            </wheelConfiguration>
        </wheelConfigurations>
        <ackermannSteeringConfigurations>
            <ackermannSteering rotSpeed="30" rotMax="30" rotCenter="0 0"/>
        </ackermannSteeringConfigurations>
    </wheels>
    <enterable isTabbable="true">
        <enterReferenceNode node="0>"/>
        <exitPoint node="0>0|0|2|4|0|0|3"/>
        <cameras count="4">
            <camera node="0>5|0|0" rotatable="true" rotateNode="0>5|0" limit="true" useWorldXZRotation="true" rotMinX="-1.4" rotMaxX="1" transMin="3.5" transMax="40" translation="0 0 5.75" rotation="-10 180 0">
                <raycastNode node="0>5|2"/>
                <raycastNode node="0>5|3"/>
            </camera>
            <camera node="0>0|0|2|4|0|0|0|0|12" rotatable="true" limit="true" rotMinX="-1.1" rotMaxX="0.4" transMin="0" transMax="0" useMirror="true" isInside="true" positionSmoothingParameter="0" shadowFocusBox="0>5|3"/>
            <!-- <camera node="0>0|0|2|4|0|0|2|0" rotatable="true" limit="true" useWorldXZRotation="true" rotateNode="0>0|0|2|4|0|0|2" rotMinX="-1" rotMaxX="1" transMin="4" transMax="30"/> -->
        </cameras>
        <characterNode node="0>0|0|2|4|0|0|0|0|13" cameraMinDistance="1.5">
            <target ikChain="rightFoot" targetNode="0>0|0|2|4|0|0|0|0|13|1"/>
            <target ikChain="leftFoot" targetNode="0>0|0|2|4|0|0|0|0|13|2"/>
            <target ikChain="rightArm" targetNode="0>0|0|2|4|0|0|0|0|13|3" poseId="wideFingers"/>
            <target ikChain="leftArm" targetNode="0>0|0|2|4|0|0|0|0|13|4" poseId="wideFingers"/>
        </characterNode>
    </enterable>
    <!-- <honk>
        <sound template="HONK_JD8400R"/>
    </honk> -->
    <tensionBeltObject>
        <meshNodes>
            <meshNode node="0>1|5"/>
        </meshNodes>
    </tensionBeltObject>
    <motorized>
        <consumerConfigurations>
            <consumerConfiguration>
                <consumer fillUnitIndex="1" usage="41" fillType="diesel"/>
                <!-- usage is per hour at max load and max rpm -->
                <consumer fillUnitIndex="2" usage="2.5" fillType="def"/>
                <!-- usage is per hour at max load and max rpm -->
                <consumer fillUnitIndex="3" usage="200" fillType="air" permanentConsumption="false" refillLitersPerSecond="250" refillCapacityPercentage="0.5"/>
                <!-- usage per second at full brake power -->
            </consumerConfiguration>
        </consumerConfigurations>
        <motorConfigurations>
            <motorConfiguration name="JLG400S" price="0">
                <motor torqueScale="0.63" minRpm="1250" maxRpm="2150" maxForwardSpeed="6.5" maxBackwardSpeed="6.5" brakeForce="6" lowBrakeForceScale="0.22" lowBrakeForceSpeedLimit="1">
                    <torque normRpm="0.45" torque="0.9"/>
                    <torque normRpm="0.5" torque="0.97"/>
                    <torque normRpm="0.59" torque="1"/>
                    <torque normRpm="0.72" torque="1"/>
                    <torque normRpm="0.86" torque="0.88"/>
                    <torque normRpm="1" torque="0.72"/>
                </motor>
                <transmission minForwardGearRatio="45" maxForwardGearRatio="130" minBackwardGearRatio="45" maxBackwardGearRatio="130"/>
            </motorConfiguration>
        </motorConfigurations>
        <differentialConfigurations>
            <differentialConfiguration>
                <differentials>
                    <differential torqueRatio="0.5" maxSpeedRatio="1.7" wheelIndex1="1" wheelIndex2="2"/>
                    <differential torqueRatio="0.5" maxSpeedRatio="1.7" wheelIndex1="3" wheelIndex2="4"/>
                    <differential torqueRatio="0.5" maxSpeedRatio="1.1" differentialIndex1="1" differentialIndex2="2"/>
                </differentials>
            </differentialConfiguration>
        </differentialConfigurations>
        <exhaustEffects>
            <exhaustEffect node="0>6" filename="$data/effects/exhaust/exhaust.i3d" minRpmColor="0.9 0.9 0.9 0.1" maxRpmColor="0.9 0.9 0.9 0.4" minRpmScale="0.05" maxRpmScale="0.5" xzRotationsOffset="50 0" xzRotationsForward="-50 0" xzRotationsBackward="50 0" xzRotationsLeft="0 -100" xzRotationsRight="0 100"/>
        </exhaustEffects>
        <motorStartDuration>3500</motorStartDuration>
    </motorized>
    <cylindered>
        <movingTools>
            <movingTool node="0>0" playSound="true">
                <controls axis="AXIS_HYDRAULICATTACHER2" invertAxis="true" mouseSpeedFactor="0.4"/>
                <rotation rotSpeed="25" rotAcceleration="30" rotationAxis="2"/>
                <dependentPart node="0>0|0"/>
            </movingTool>
            <movingTool node="0>0|0|2" playSound="true">
                <controls axis="AXIS_FRONTLOADER_TOOL2" invertAxis="false" mouseSpeedFactor="0.3"/>
                <translation transSpeed="2" transMax="6.183" transMin="2.480" translationAxis="3"/>
            </movingTool>
            <movingTool node="0>0|0" playSound="true">
                <controls axis="AXIS_HYDRAULICATTACHER1" invertAxis="true" mouseSpeedFactor="0.4"/>
                <attacherJoint jointIndices="1"/>
                <rotation rotSpeed="25" rotAcceleration="30" rotMax="10" rotMin="-60"/>
                <dependentMovingTool node="0>0|1"/>
            </movingTool>
            <movingTool node="0>0|0|2|4|0|0|0" playSound="true">
                <controls axis="AXIS_FRONTLOADER_TOOL4" invertAxis="true" mouseSpeedFactor="0.4"/>
                <rotation rotSpeed="30" rotAcceleration="40" rotMax="135" rotMin="0"/>
                <attacherJoint jointIndices="2"/>
                <dependentMovingTool node="0>0|0|2|4|0|0"/>
            </movingTool>
            <movingTool node="0>0|0|2|4|0|0" playSound="true">
                <controls axis="AXIS_FRONTLOADER_0>02" invertAxis="true" mouseSpeedFactor="0.4"/>
                <rotation rotSpeed="30" rotAcceleration="40" rotMax="90" rotMin="-90" rotationAxis="2"/>
                <attacherJoint jointIndices="2"/>
            </movingTool>
            <movingTool node="0>0|0|2|4|0|0|0|0" playSound="true">
                <controls axis="AXIS_FRONTLOADER_TOOL3" invertAxis="true" mouseSpeedFactor="0.4"/>
                <rotation rotSpeed="30" rotAcceleration="40" rotMax="65" rotMin="-65" rotationAxis="3"/>
                <attacherJoint jointIndices="3"/>
            </movingTool>
        </movingTools>
        <movingParts>
            <movingPart node="0>0|1" referencePoint="0>0|0|0" referenceFrame="0>0|0|0" playSound="ture" isActiveDirty="true">
                <translatingPart node="0>0|1|0"/>
            </movingPart>
        </movingParts>
        <sounds>
            <actionSound template="hydraulicLayerTone2" pitchScale="1.5" volumeScale="0.9" linkNode="0>0|0" actionNames="TOOL_MOVE_POS TOOL_MOVE_NEG" nodes="0>0|0" fadeIn="0.1" fadeOut="0.05"/>
            <actionSound template="hydraulicLayerTone" pitchScale="0.7" volumeScale="0.9" linkNode="0>0|0" actionNames="TOOL_MOVE_POS" nodes="0>0|0" fadeIn="0.1" fadeOut="0.05"/>
            <actionSound template="hydraulicLayerTone" pitchScale="1.8" volumeScale="0.2" linkNode="0>0|0" actionNames="TOOL_MOVE_NEG" nodes="0>0|0" fadeIn="0.1" fadeOut="0.05"/>
            <actionSound template="metalLowVar2" pitchScale="1.0" volumeScale="3" linkNode="0>0|0" actionNames="TOOL_MOVE_END_NEG_LIMIT" nodes="0>0|0"/>
            <actionSound template="cylinderPunch" pitchScale="1.5" volumeScale="0.4" linkNode="0>0|0" actionNames="TOOL_MOVE_END_NEG_LIMIT" nodes="0>0|0"/>
            <actionSound template="metalClose" pitchScale="2.5" volumeScale="0.2" linkNode="0>0|0" actionNames="TOOL_MOVE_END_NEG_LIMIT" nodes="0>0|0"/>
            <actionSound template="clackVar6" pitchScale="1.0" volumeScale="1.0" linkNode="0>0|0" actionNames="TOOL_MOVE_END_NEG_LIMIT" nodes="0>0|0"/>
            <actionSound template="metalLowVar2" pitchScale="1.3" volumeScale="2.0" linkNode="0>0|0" actionNames="TOOL_MOVE_END_POS_LIMIT" nodes="0>0|0"/>
            <actionSound template="cylinderPunch" pitchScale="1.8" volumeScale="0.2" linkNode="0>0|0" actionNames="TOOL_MOVE_END_POS_LIMIT" nodes="0>0|0"/>
            <actionSound template="metalClose" pitchScale="2.8" volumeScale="0.1" linkNode="0>0|0" actionNames="TOOL_MOVE_END_POS_LIMIT" nodes="0>0|0"/>
            <actionSound template="clackVar6" pitchScale="1.8" volumeScale="0.5" linkNode="0>0|0" actionNames="TOOL_MOVE_END_POS_LIMIT" nodes="0>0|0"/>
        </sounds>
    </cylindered>
</vehicle>
