Rigs of Rods 2023.09
Soft-body Physics Simulation
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Loading...
Searching...
No Matches
Data Structures | Namespaces | Typedefs | Enumerations | Functions
SimData.h File Reference

Core data structures for simulation; Everything affected by by either physics, network or user interaction is here. More...

#include "Application.h"
#include "ForwardDeclarations.h"
#include "SimConstants.h"
#include "BitFlags.h"
#include "CmdKeyInertia.h"
#include "InputEngine.h"
#include <memory>
#include <Ogre.h>
#include <rapidjson/document.h>

Go to the source code of this file.

Data Structures

struct  RoR::node_t
 Physics: A vertex in the softbody structure. More...
 
struct  RoR::beam_t
 Simulation: An edge in the softbody structure. More...
 
struct  RoR::shock_t
 
struct  RoR::collcab_rate_t
 
struct  RoR::soundsource_t
 
struct  RoR::wheel_t
 
struct  RoR::wheeldetacher_t
 
struct  RoR::hook_t
 
struct  RoR::ropable_t
 
struct  RoR::rope_t
 
struct  RoR::tie_t
 
struct  RoR::wing_t
 
struct  RoR::commandbeam_state_t
 
struct  RoR::commandbeam_t
 
struct  RoR::command_t
 
struct  RoR::hydrobeam_t
 < beams updating length based on simulation variables, generally known as actuators. More...
 
struct  RoR::rotator_t
 
struct  RoR::flare_t
 
struct  RoR::PropAnimKeyState
 User input state for animated props with 'source:event'. More...
 
class  RoR::CmdKeyArray
 For backwards compatibility of the 'triggers' feature, the commandkey array must support negative indices of any size without breaking memory. More...
 
struct  RoR::UniqueCommandKeyPair
 UI helper for displaying command control keys to user. More...
 
struct  RoR::collision_box_t
 
struct  RoR::ground_model_t
 Surface friction properties. More...
 
struct  RoR::FreeForce
 Global force affecting particular (base) node of particular (base) actor; added ad-hoc by scripts. More...
 
struct  RoR::FreeForceRequest
 Common for ADD and MODIFY requests; tailored for use with AngelScript thru GameScript::pushMessage(). More...
 
struct  RoR::authorinfo_t
 
struct  RoR::ActorSpawnRequest
 
struct  RoR::ActorModifyRequest
 
struct  RoR::ActorLinkingRequest
 Estabilishing a physics linkage between 2 actors modifies a global linkage table and triggers immediate update of every actor's linkage tables, so it has to be done sequentially on main thread. More...
 

Namespaces

namespace  RoR
 

Typedefs

typedef std::vector< collision_box_t * > RoR::CollisionBoxPtrVec
 

Enumerations

enum  RoR::CollisionEventFilter : short {
  RoR::EVENT_NONE = 0 , RoR::EVENT_ALL , RoR::EVENT_AVATAR , RoR::EVENT_TRUCK ,
  RoR::EVENT_TRUCK_WHEELS , RoR::EVENT_AIRPLANE , RoR::EVENT_BOAT
}
 Specified in terrain object (.ODEF) file, syntax: 'event <type> <filter>'. More...
 
enum  RoR::BeamType : short { RoR::BEAM_NORMAL , RoR::BEAM_HYDRO , RoR::BEAM_VIRTUAL }
 
enum  RoR::HookState { RoR::UNLOCKED , RoR::PRELOCK , RoR::LOCKED }
 
enum  RoR::ActorType {
  RoR::NOT_DRIVEABLE = 0 , RoR::TRUCK = 1 , RoR::AIRPLANE = 2 , RoR::BOAT = 3 ,
  RoR::MACHINE = 4 , RoR::AI = 5
}
 < Aka 'Driveable' More...
 
enum  RoR::SpecialBeam : short {
  RoR::NOSHOCK , RoR::SHOCK1 , RoR::SHOCK2 , RoR::SHOCK3 ,
  RoR::TRIGGER , RoR::SUPPORTBEAM , RoR::ROPE
}
 
enum  RoR::BlinkType { RoR::BLINK_NONE , RoR::BLINK_LEFT , RoR::BLINK_RIGHT , RoR::BLINK_WARN }
 < Turn signal More...
 
enum  RoR::HydroFlags {
  RoR::HYDRO_FLAG_SPEED = BITMASK(1) , RoR::HYDRO_FLAG_DIR = BITMASK(2) , RoR::HYDRO_FLAG_AILERON = BITMASK(3) , RoR::HYDRO_FLAG_RUDDER = BITMASK(4) ,
  RoR::HYDRO_FLAG_ELEVATOR = BITMASK(5) , RoR::HYDRO_FLAG_REV_AILERON = BITMASK(6) , RoR::HYDRO_FLAG_REV_RUDDER = BITMASK(7) , RoR::HYDRO_FLAG_REV_ELEVATOR = BITMASK(8)
}
 
enum  RoR::AnimFlags {
  RoR::ANIM_FLAG_AIRSPEED = BITMASK(1) , RoR::ANIM_FLAG_VVI = BITMASK(2) , RoR::ANIM_FLAG_ALTIMETER = BITMASK(3) , RoR::ANIM_FLAG_AOA = BITMASK(4) ,
  RoR::ANIM_FLAG_FLAP = BITMASK(5) , RoR::ANIM_FLAG_AIRBRAKE = BITMASK(6) , RoR::ANIM_FLAG_ROLL = BITMASK(7) , RoR::ANIM_FLAG_PITCH = BITMASK(8) ,
  RoR::ANIM_FLAG_THROTTLE = BITMASK(9) , RoR::ANIM_FLAG_RPM = BITMASK(10) , RoR::ANIM_FLAG_ACCEL = BITMASK(11) , RoR::ANIM_FLAG_BRAKE = BITMASK(12) ,
  RoR::ANIM_FLAG_CLUTCH = BITMASK(13) , RoR::ANIM_FLAG_TACHO = BITMASK(14) , RoR::ANIM_FLAG_SPEEDO = BITMASK(15) , RoR::ANIM_FLAG_PBRAKE = BITMASK(16) ,
  RoR::ANIM_FLAG_TURBO = BITMASK(17) , RoR::ANIM_FLAG_SHIFTER = BITMASK(18) , RoR::ANIM_FLAG_AETORQUE = BITMASK(19) , RoR::ANIM_FLAG_AEPITCH = BITMASK(20) ,
  RoR::ANIM_FLAG_AESTATUS = BITMASK(21) , RoR::ANIM_FLAG_TORQUE = BITMASK(22) , RoR::ANIM_FLAG_HEADING = BITMASK(23) , RoR::ANIM_FLAG_DIFFLOCK = BITMASK(24) ,
  RoR::ANIM_FLAG_STEERING = BITMASK(25) , RoR::ANIM_FLAG_EVENT = BITMASK(26) , RoR::ANIM_FLAG_AILERONS = BITMASK(27) , RoR::ANIM_FLAG_ARUDDER = BITMASK(28) ,
  RoR::ANIM_FLAG_BRUDDER = BITMASK(29) , RoR::ANIM_FLAG_BTHROTTLE = BITMASK(30) , RoR::ANIM_FLAG_PERMANENT = BITMASK(31) , RoR::ANIM_FLAG_ELEVATORS = BITMASK(32)
}
 
enum  RoR::AnimModes {
  RoR::ANIM_MODE_ROTA_X = BITMASK(1) , RoR::ANIM_MODE_ROTA_Y = BITMASK(2) , RoR::ANIM_MODE_ROTA_Z = BITMASK(3) , RoR::ANIM_MODE_OFFSET_X = BITMASK(4) ,
  RoR::ANIM_MODE_OFFSET_Y = BITMASK(5) , RoR::ANIM_MODE_OFFSET_Z = BITMASK(6) , RoR::ANIM_MODE_AUTOANIMATE = BITMASK(7) , RoR::ANIM_MODE_NOFLIP = BITMASK(8) ,
  RoR::ANIM_MODE_BOUNCE = BITMASK(9)
}
 
enum  RoR::ShockFlags {
  RoR::SHOCK_FLAG_NORMAL = BITMASK(1) , RoR::SHOCK_FLAG_LACTIVE = BITMASK(3) , RoR::SHOCK_FLAG_RACTIVE = BITMASK(4) , RoR::SHOCK_FLAG_ISSHOCK2 = BITMASK(5) ,
  RoR::SHOCK_FLAG_ISSHOCK3 = BITMASK(6) , RoR::SHOCK_FLAG_SOFTBUMP = BITMASK(7) , RoR::SHOCK_FLAG_ISTRIGGER = BITMASK(8) , RoR::SHOCK_FLAG_TRG_BLOCKER = BITMASK(9) ,
  RoR::SHOCK_FLAG_TRG_CMD_SWITCH = BITMASK(10) , RoR::SHOCK_FLAG_TRG_CMD_BLOCKER = BITMASK(11) , RoR::SHOCK_FLAG_TRG_BLOCKER_A = BITMASK(12) , RoR::SHOCK_FLAG_TRG_HOOK_UNLOCK = BITMASK(13) ,
  RoR::SHOCK_FLAG_TRG_HOOK_LOCK = BITMASK(14) , RoR::SHOCK_FLAG_TRG_CONTINUOUS = BITMASK(15) , RoR::SHOCK_FLAG_TRG_ENGINE = BITMASK(16)
}
 
enum  RoR::EngineTriggerType {
  RoR::TRG_ENGINE_CLUTCH = 0 , RoR::TRG_ENGINE_BRAKE = 1 , RoR::TRG_ENGINE_ACC = 2 , RoR::TRG_ENGINE_RPM = 3 ,
  RoR::TRG_ENGINE_SHIFTUP = 4 , RoR::TRG_ENGINE_SHIFTDOWN = 5
}
 
enum  RoR::LocalizerType { RoR::LOCALIZER_VERTICAL , RoR::LOCALIZER_HORIZONTAL , RoR::LOCALIZER_NDB , RoR::LOCALIZER_VOR }
 
enum class  RoR::ActorState {
  RoR::ActorState::LOCAL_SIMULATED , RoR::ActorState::NETWORKED_OK , RoR::ActorState::NETWORKED_HIDDEN , RoR::ActorState::LOCAL_REPLAY ,
  RoR::ActorState::LOCAL_SLEEPING , RoR::ActorState::DISPOSED
}
 
enum class  RoR::AeroEngineType : int { RoR::AeroEngineType::AE_UNKNOWN , RoR::AeroEngineType::AE_XPROP , RoR::AeroEngineType::AE_TURBOJET }
 
enum class  RoR::FreeForceType {
  RoR::FreeForceType::DUMMY , RoR::FreeForceType::CONSTANT , RoR::FreeForceType::TOWARDS_COORDS , RoR::FreeForceType::TOWARDS_NODE ,
  RoR::FreeForceType::HALFBEAM_GENERIC , RoR::FreeForceType::HALFBEAM_ROPE
}
 
enum class  RoR::ActorLinkingRequestType {
  RoR::INVALID , RoR::LOAD_SAVEGAME , RoR::HOOK_LOCK , RoR::HOOK_UNLOCK ,
  RoR::HOOK_TOGGLE , RoR::HOOK_MOUSE_TOGGLE , RoR::HOOK_RESET , RoR::TIE_TOGGLE ,
  RoR::TIE_RESET , RoR::ROPE_TOGGLE , RoR::ROPE_RESET , RoR::SLIDENODE_TOGGLE
}
 
enum  RoR::ActorSimAttr {
  RoR::ACTORSIMATTR_NONE , RoR::ACTORSIMATTR_TC_RATIO , RoR::ACTORSIMATTR_TC_PULSE_TIME , RoR::ACTORSIMATTR_TC_WHEELSLIP_CONSTANT ,
  RoR::ACTORSIMATTR_ENGINE_SHIFTDOWN_RPM , RoR::ACTORSIMATTR_ENGINE_SHIFTUP_RPM , RoR::ACTORSIMATTR_ENGINE_TORQUE , RoR::ACTORSIMATTR_ENGINE_DIFF_RATIO ,
  RoR::ACTORSIMATTR_ENGINE_GEAR_RATIOS_ARRAY , RoR::ACTORSIMATTR_ENGOPTION_ENGINE_INERTIA , RoR::ACTORSIMATTR_ENGOPTION_ENGINE_TYPE , RoR::ACTORSIMATTR_ENGOPTION_CLUTCH_FORCE ,
  RoR::ACTORSIMATTR_ENGOPTION_SHIFT_TIME , RoR::ACTORSIMATTR_ENGOPTION_CLUTCH_TIME , RoR::ACTORSIMATTR_ENGOPTION_POST_SHIFT_TIME , RoR::ACTORSIMATTR_ENGOPTION_STALL_RPM ,
  RoR::ACTORSIMATTR_ENGOPTION_IDLE_RPM , RoR::ACTORSIMATTR_ENGOPTION_MAX_IDLE_MIXTURE , RoR::ACTORSIMATTR_ENGOPTION_MIN_IDLE_MIXTURE , RoR::ACTORSIMATTR_ENGOPTION_BRAKING_TORQUE ,
  RoR::ACTORSIMATTR_ENGTURBO2_INERTIA_FACTOR , RoR::ACTORSIMATTR_ENGTURBO2_NUM_TURBOS , RoR::ACTORSIMATTR_ENGTURBO2_MAX_RPM , RoR::ACTORSIMATTR_ENGTURBO2_ENGINE_RPM_OP ,
  RoR::ACTORSIMATTR_ENGTURBO2_BOV_ENABLED , RoR::ACTORSIMATTR_ENGTURBO2_BOV_MIN_PSI , RoR::ACTORSIMATTR_ENGTURBO2_WASTEGATE_ENABLED , RoR::ACTORSIMATTR_ENGTURBO2_WASTEGATE_MAX_PSI ,
  RoR::ACTORSIMATTR_ENGTURBO2_WASTEGATE_THRESHOLD_N , RoR::ACTORSIMATTR_ENGTURBO2_WASTEGATE_THRESHOLD_P , RoR::ACTORSIMATTR_ENGTURBO2_ANTILAG_ENABLED , RoR::ACTORSIMATTR_ENGTURBO2_ANTILAG_CHANCE ,
  RoR::ACTORSIMATTR_ENGTURBO2_ANTILAG_MIN_RPM , RoR::ACTORSIMATTR_ENGTURBO2_ANTILAG_POWER
}
 Parameter to Actor::setSimAttribute() and Actor::getSimAttribute(); allows advanced users to tweak physics internals via script. More...
 

Functions

const char * RoR::ActorSimAttrToString (ActorSimAttr attr)
 

Detailed Description

Core data structures for simulation; Everything affected by by either physics, network or user interaction is here.

Author
Thomas Fischer
Date
30th of April 2010

Note that simulation state and gfx state is separated; For example, light states (on/off) are here while the actual lights (renderer objects) are in 'GfxData.h' :)

Definition in file SimData.h.