Coder Social home page Coder Social logo

fs22_interactivecontrol's Introduction

Interactive Control

'Interactive Control' is a global script mod for Farming Simulator 22. While this mod is active, you are able to use many other mods that support Interactive Control. With IC you have the possibility to interactively control many parts of several (prepared) vehicles.

Possibilities

'Interactive Control' provides different possibilities to interact with your vehicles. You can use click icons that appear when you turn on IC or when you are nearby. Another way for interactive handling is a key binding event. The controls are able to be used as switch or to force a state. All interactions are generally possible to use from the inside and the outside of a vehicle.

Using the controls you can steer different things:

  • Play animations (e.g. to open/close windows, fold/unfold warning signs, ...)
  • Call specific functions (e.g. Start/Stop Motor, TurnOn/Off tool, Lift/Lower attacher joints, ...)
  • ObjectChanges (to change translation/rotation/visibility/...)

Thanks goes to:

Wopster, JoPi, SirJoki80 & Flowsen (for the ui elements) and Face (for the initial idea)

VertexDezign & SchnibblModding for testing and providing demo mods!

Documentation

The documentation is not finished yet, but should be sufficient for experienced users. If you are in need of some extra help, take a look into the demonstration mods:

XML

Explained XML documentation HTML-file

<interactiveControl>
    <interactiveControlConfigurations>
        <!-- If needed, you can define different configurations -->
        <interactiveControlConfiguration>
            <interactiveControls>
                <!-- The outdoor trigger is important, if you want to use IC from the outside of a vehicle -->
                <outdoorTrigger node="node"/>
                
                <!-- Add a new Interactive Control -->
                <interactiveControl negText="$l10n_actionIC_deactivate" posText="$l10n_actionIC_activate">
                    <!-- Add a clickPoint to toggle the event -->
                    <!-- Possible iconTypes: -->
                    <!-- CROSS, IGNITIONKEY, CRUISE_CONTROL, GPS, TURN_ON, ATTACHERJOINT_LOWER, ATTACHERJOINT_LIFT, ATTACHERJOINT, LIGHT_HIGH, LIGHT, TURNLIGHT_LEFT, TURNLIGHT_RIGHT, BEACON_LIGHT, ARROW -->
                    <clickPoint alignToCamera="true" animMaxLimit="1" animMinLimit="0" animName="string" blinkSpeedScale="1" foldMaxLimit="1" foldMinLimit="0" forcedState="boolean" iconType="CROSS" invertX="false" invertZ="false" node="node" scaleOffset="float" size="0.04" type="UNKNOWN"/>
                 
                    <!-- Add a button to toggle the event -->
                    <button animMaxLimit="1" animMinLimit="0" animName="string" foldMaxLimit="1" foldMinLimit="0" forcedState="boolean" input="string" range="5" refNode="node" type="UNKNOWN"/>

                    <!-- Animation to be played on IC event -->
                    <animation initTime="float" name="string" speedScale="float" />

                    <!-- Add a function to your control, don't forget to add a attacherJoint index (or indicies) if required! -->
                    <function name="string">
                        <attacherJoint index="integer" indicies="1 2 .. n"/>
                    </function>

                    <!-- This control should not be functional all the time? Add a configuration restriction -->
                    <configurationsRestrictions>
                        <restriction indicies="1 2 .. n" name="string"/>
                    </configurationsRestrictions>
                    
                    <!-- You want to use some extra dashboards for your control? -->
                    <!-- There are three new valueTypes: ic_state (BOOLEAN) | ic_stateValue (FLOAT 0-1) | ic_action (in combination with 'raiseTime', 'activeTime', 'onICActivate', 'onICDeactivate')-->
                    <dashboard activeTime="1" animName="string" baseColor="string" displayType="string" doInterpolation="false" emissiveScale="0.2" emitColor="string"font="DIGIT" fontThickness="1" groups="string" hasNormalMap="false" hiddenColor="string" idleValue="0" intensity="1" interpolationSpeed="0.005" maxRot="string" maxValueAnim="float" maxValueRot="float" maxValueSlider="float" minRot="string" minValueAnim="float" minValueRot="float" minValueSlider="float" node="node" numberColor="string" numbers="node" onICActivate="true" onICDeactivate="true" precision="1" raiseTime="1" rotAxis="float" textAlignment="RIGHT" textColor="string" textMask="00.0" textScaleX="1" textScaleY="1" textSize="0.03" valueType="string">
                        <state rotation="x y z" scale="x y z" translation="x y z" value="1 2 .. n" visibility="boolean"/>
                    </dashboard>
                    
                    <!-- You can block unused moving parts here -->
                    <dependingMovingPart isInactive="true" node="node"/>

                    <!-- You can block unused moving tools here -->
                    <dependingMovingTool isInactive="true" node="node"/>

                    <!-- You can block depending interactive controls here -->
                    <!-- blockState: Control state to block depending control -->
                    <!-- forcedBlockedState: Forced state of depending control if blocked -->
                    <dependingInteractiveControl index="int" blockState="boolean" forcedBlockedState="boolean"/>
                    
                    <!-- Modify sound here, 'indoorFactor' is the sound percentage factor if control is active -->
                    <!-- Set 'delayedSoundAnimationTime' if the sound should be changed on specific animation time (first animation or 'name') -->
                    <soundModifier indoorFactor="float" delayedSoundAnimationTime="float" name="string"/>
                 
                    <objectChange centerOfMassActive="x y z" centerOfMassInactive="x y z" compoundChildActive="boolean" compoundChildInactive="boolean" interpolation="false" interpolationTime="1" massActive="float" massInactive="float" node="node" parentNodeActive="node" parentNodeInactive="node" rigidBodyTypeActive="string" rigidBodyTypeInactive="string" rotationActive="x y z" rotationInactive="x y z" scaleActive="x y z" scaleInactive="x y z" shaderParameter="string" shaderParameterActive="x y z w" shaderParameterInactive="x y z w" sharedShaderParameter="false" translationActive="x y z" translationInactive="x y z" visibilityActive="boolean" visibilityInactive="boolean"/>
                </interactiveControl>
            </interactiveControls>
            
            <objectChange centerOfMassActive="x y z" centerOfMassInactive="x y z" compoundChildActive="boolean" compoundChildInactive="boolean" interpolation="false" interpolationTime="1" massActive="float" massInactive="float" node="node" parentNodeActive="node" parentNodeInactive="node" rigidBodyTypeActive="string" rigidBodyTypeInactive="string" rotationActive="x y z" rotationInactive="x y z" scaleActive="x y z" scaleInactive="x y z" shaderParameter="string" shaderParameterActive="x y z w" shaderParameterInactive="x y z w" sharedShaderParameter="false" translationActive="x y z" translationInactive="x y z" visibilityActive="boolean" visibilityInactive="boolean"/>
        </interactiveControlConfiguration>
    </interactiveControlConfigurations>
    
    <!-- If you want to use your own click icon, you easily can register it here -->
    <registers>
        <clickIcon blinkSpeed="float" filename="string" name="string" node="string"/>
    </registers>
</interactiveControl>

FunctionOverview:

Function Description Requirements Required Version
MOTOR_START_STOPP Toggle vehicle motor start and stop
LIGHTS_TOGGLE Toggle lights on and off
LIGHTS_WORKBACK_TOGGLE Toggle worklights back on and off
LIGHTS_WORKFRONT_TOGGLE Toggle worklights front on and off
LIGHTS_HIGHBEAM_TOGGLE Toggle highbeamlights on and off
LIGHTS_TURNLIGHT_HAZARD_TOGGLE Toggle hazard lights on and off
LIGHTS_TURNLIGHT_LEFT_TOGGLE Toggle turnlight left on and off
LIGHTS_TURNLIGHT_RIGHT_TOGGLE Toggle turnlight right on and off
LIGHTS_BEACON_TOGGLE Toggle beaconlight on and off
LIGHTS_PIPE_TOGGLE Toggle pipelight on and off 1.1.0.0
CRUISE_CONTROL_TOGGLE Toggle cruise control on and off
DRIVE_DIRECTION_TOGGLE Toggle vehicle drive direction
COVER_TOGGLE Toggle cover state
ATTACHERJOINT_LIFT_LOWER Lift/lower implement on attacherJoint index or first selected one if more indicies ".attacherJoint#index" or ".attacherJoint#indicies"
ATTACHERJOINT_TURN_ON_OFF Turn on/off implement on attacherJoint index or first selected one if more indicies ".attacherJoint#index"
TURN_ON_OFF Turn on/off vehicle
ATTACHERJOINT_FOLDING_TOGGLE Fold/unfold implement on attacherJoint index or first selected one if more indicies ".attacherJoint#index"
PIPE_FOLDING_TOGGLE Fold/unfold pipe 1.1.0.0
FOLDING_TOGGLE Fold/unfold vehicle
ATTACHERJOINTS_TOGGLE_DISCHARGE Toggle discharging on selected attacherJoint if in 'indices' ".attacherJoint#index" or ".attacherJoint#indicies"
DISCHARGE_TOGGLE Toggle discharging on vehicle
CRABSTEERING_TOGGLE Toggle crab steering mode to next mode
RADIO_TOGGLE Toggle radio on/off
RADIO_CHANNEL_NEXT Next radio channel 1.1.0.0
RADIO_CHANNEL_PREVIOUS Previous radio channel 1.1.0.0
RADIO_ITEM_NEXT Next radio item 1.1.0.0
RADIO_ITEM_PREVIOUS Previous radio item 1.1.0.0
VARIABLE_WORK_WIDTH_LEFT Switch work width left 1.1.0.0
ATTACHERJOINTS_VARIABLE_WORK_WIDTH_LEFT Switch work width right on selected attacherJoint if in 'indices' ".attacherJoint#index" or ".attacherJoint#indicies" 1.1.0.0
VARIABLE_WORK_WIDTH_RIGHT Switch work width right 1.1.0.0
ATTACHERJOINTS_VARIABLE_WORK_WIDTH_RIGHT Switch work width right on selected attacherJoint if in 'indices' ".attacherJoint#index" or ".attacherJoint#indicies" 1.1.0.0
VARIABLE_WORK_WIDTH_TOGGLE Toggle work width 1.1.0.0
ATTACHERJOINTS_VARIABLE_WORK_WIDTH_TOGGLE Toggle work width on selected attacherJoint if in 'indices' ".attacherJoint#index" or ".attacherJoint#indicies" 1.1.0.0
ATTACHERJOINTS_ATTACH_DETACH Attach or detach vehicle on attacherJoint if in 'indices' ".attacherJoint#index" or ".attacherJoint#indicies" 1.1.0.0
External Mods:
GPS_TOGGLE Toggle GuidanceSteering on and off
PF_CROP_SENSOR_TOGGLE Toggle PrecisionFarming crop sensor mode 1.1.0.0
PF_ATTACHERJOINTS_CROP_SENSOR_TOGGLE Toggle PrecisionFarming crop sensor mode on selected attacherJoint if in 'indices' ".attacherJoint#index" or ".attacherJoint#indicies" 1.1.0.0
PF_SPRAY_AMOUNT_MODE Toggle PrecisionFarming spray amount mode 1.1.0.0
PF_ATTACHERJOINTS_PF_SPRAY_AMOUNT_MODE Toggle PrecisionFarming spray amount mode on selected attacherJoint if in 'indices' ".attacherJoint#index" or ".attacherJoint#indicies" 1.1.0.0
PF_SPRAY_AMOUNT Switch PrecisionFarming manual spray amount 1.1.0.0
PF_ATTACHERJOINTS_PF_SPRAY_AMOUNT Switch PrecisionFarming manual spray amount on selected attacherJoint if in 'indices' ".attacherJoint#index" or ".attacherJoint#indicies" 1.1.0.0
PF_SEED_RATE_MODE Toggle PrecisionFarming seed rate mode 1.1.0.0
PF_ATTACHERJOINTS_PF_SEED_RATE_MODE Toggle PrecisionFarming seed rate mode on selected attacherJoint if in 'indices' ".attacherJoint#index" or ".attacherJoint#indicies" 1.1.0.0
PF_SEED_RATE Switch PrecisionFarming manual seed rate 1.1.0.0
PF_ATTACHERJOINTS_PF_SEED_RATE Switch PrecisionFarming manual seed rate on selected attacherJoint if in 'indices' ".attacherJoint#index" or ".attacherJoint#indicies" 1.1.0.0
VCA_TOGGLE_AWD Toggle VehicleControlAddon all wheel drive mode on and off 1.1.0.0
VCA_TOGGLE_DIFFLOCK_FRONT Toggle VehicleControlAddon front differential lock on and off 1.1.0.0
VCA_TOGGLE_DIFFLOCK_BACK Toggle VehicleControlAddon back differential lock on and off 1.1.0.0
VCA_TOGGLE_PARKINGBRAKE Toggle VehicleControlAddon parkingbrake on and off 1.1.0.0
HEADLAND_MANAGEMENT_TOGGLE Toggle HeadlandManagement on and off 1.1.0.0

Copyright

Copyright (c) 2022, John Deere 6930. All rights reserved.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.