![]() |
Rigs of Rods 2026.01
Soft-body Physics Simulation
|
Builds and manages softbody actors (physics on background thread, networking)
Definition at line 44 of file ActorManager.h.
Public Types | |
| typedef std::vector< FreeForce > | FreeForceVec_t |
Data Fields | |
| std::map< beam_t *, std::pair< ActorPtr, ActorPtr > > | inter_actor_links |
Static Public Attributes | |
| static const ActorPtr | ACTORPTR_NULL |
Private Member Functions | |
| bool | CheckActorCollAabbIntersect (int a, int b) |
| bool | PredictActorCollAabbIntersect (int a, int b) |
| void | RemoveStreamSource (int sourceid) |
| void | RemoveStream (int sourceid, int streamid) |
| void | RecursiveActivation (int j, std::vector< bool > &visited) |
| void | ForwardCommands (ActorPtr source_actor) |
| void | UpdateTruckFeatures (ActorPtr vehicle, float dt) |
| void | CalcFreeForces () |
Private Attributes | |
| std::map< int, std::set< int > > | m_stream_mismatches |
| std::vector< RoRnet::ActorStreamRegister > | m_stream_mismatched_regs |
| std::map< int, int > | m_stream_time_offsets |
| Ogre::Timer | m_net_timer |
| ActorPtrVec | m_actors |
| ActorInstanceID_t | m_actor_next_instance_id = 1 |
| bool | m_forced_awake = false |
| int | m_physics_steps = 0 |
| float | m_dt_remainder = 0.f |
| float | m_simulation_speed = 1.f |
| float | m_last_simulation_speed = 0.1f |
| float | m_simulation_time = 0.f |
| bool | m_simulation_paused = false |
| float | m_total_sim_time = 0.f |
| FreeForceVec_t | m_free_forces |
| FreeForceID_t | m_free_force_next_id = 0 |
| std::unique_ptr< ThreadPool > | m_sim_thread_pool |
| std::shared_ptr< Task > | m_sim_task |
| RoR::CmdKeyInertiaConfig | m_inertia_config |
| typedef std::vector<FreeForce> RoR::ActorManager::FreeForceVec_t |
Definition at line 48 of file ActorManager.h.
| ActorManager::ActorManager | ( | ) |
Definition at line 69 of file ActorManager.cpp.
| ActorManager::~ActorManager | ( | ) |
Definition at line 79 of file ActorManager.cpp.
| void ActorManager::AddFreeForce | ( | FreeForceRequest * | rq | ) |
Definition at line 1869 of file ActorManager.cpp.
| void ActorManager::AddStreamMismatch | ( | RoRnet::ActorStreamRegister * | reg | ) |
Definition at line 588 of file ActorManager.cpp.
Definition at line 830 of file ActorManager.cpp.
|
inline |
Definition at line 86 of file ActorManager.h.
|
private |
Apply FreeForces - intentionally as a separate pass over all actors.
Definition at line 1624 of file ActorManager.cpp.
|
private |
Returns whether or not the bounding boxes of truck a and truck b intersect. Based on the truck collision bounding boxes.
Definition at line 676 of file ActorManager.cpp.
| RoRnet::UiStreamsHealth ActorManager::CheckNetRemoteStreamsOk | ( | int | sourceid | ) |
Definition at line 644 of file ActorManager.cpp.
| RoRnet::UiStreamsHealth ActorManager::CheckNetworkStreamsOk | ( | int | sourceid | ) |
Definition at line 612 of file ActorManager.cpp.
| void ActorManager::CleanUpSimulation | ( | ) |
Call this after simulation loop finishes.
Definition at line 962 of file ActorManager.cpp.
| ActorPtr ActorManager::CreateNewActor | ( | ActorSpawnRequest | rq, |
| RigDef::DocumentPtr | def | ||
| ) |
Definition at line 84 of file ActorManager.cpp.
| void ActorManager::DeleteActorInternal | ( | ActorPtr | actor | ) |
Do not call directly; use GameContext::DeleteActor()
Definition at line 975 of file ActorManager.cpp.
| void ActorManager::ExportActorDef | ( | RigDef::DocumentPtr | def, |
| std::string | filename, | ||
| std::string | rg_name | ||
| ) |
Definition at line 1426 of file ActorManager.cpp.
| RigDef::DocumentPtr ActorManager::FetchActorDef | ( | RoR::ActorSpawnRequest & | rq | ) |
Definition at line 1347 of file ActorManager.cpp.
Definition at line 1056 of file ActorManager.cpp.
Definition at line 1081 of file ActorManager.cpp.
| const ActorPtr & ActorManager::FetchRescueVehicle | ( | ) |
Definition at line 1108 of file ActorManager.cpp.
| ActorPtr ActorManager::FindActorInsideBox | ( | Collisions * | collisions, |
| const Ogre::String & | inst, | ||
| const Ogre::String & | box | ||
| ) |
Definition at line 913 of file ActorManager.cpp.
| bool ActorManager::FindFreeForce | ( | FreeForceID_t | id, |
| FreeForceVec_t::iterator & | out_itor | ||
| ) |
Definition at line 1863 of file ActorManager.cpp.
|
private |
Fowards things to trailers.
Definition at line 759 of file ActorManager.cpp.
| const ActorPtr & ActorManager::GetActorById | ( | ActorInstanceID_t | actor_id | ) |
Definition at line 1236 of file ActorManager.cpp.
| const ActorPtr & ActorManager::GetActorByNetworkLinks | ( | int | source_id, |
| int | stream_id | ||
| ) |
Definition at line 663 of file ActorManager.cpp.
|
inline |
Script proxy: game.getActorNextInstanceId()
Definition at line 67 of file ActorManager.h.
|
inline |
Definition at line 127 of file ActorManager.h.
|
inline |
Script proxy: game.getFreeForceNextId()
Definition at line 76 of file ActorManager.h.
|
inline |
Definition at line 77 of file ActorManager.h.
|
inline |
Definition at line 92 of file ActorManager.h.
| std::vector< ActorPtr > ActorManager::GetLocalActors | ( | ) |
Definition at line 1457 of file ActorManager.cpp.
| std::pair< ActorPtr, float > ActorManager::GetNearestActor | ( | Ogre::Vector3 | position | ) |
Definition at line 946 of file ActorManager.cpp.
|
inline |
Definition at line 111 of file ActorManager.h.
| int ActorManager::GetNetTimeOffset | ( | int | sourceid | ) |
Definition at line 594 of file ActorManager.cpp.
|
inline |
Definition at line 88 of file ActorManager.h.
|
inline |
Definition at line 91 of file ActorManager.h.
| void ActorManager::HandleActorStreamData | ( | std::vector< RoR::NetRecvPacket > | packet | ) |
Definition at line 439 of file ActorManager.cpp.
|
inline |
Definition at line 89 of file ActorManager.h.
| bool ActorManager::LoadScene | ( | Ogre::String | filename | ) |
Definition at line 240 of file Savegame.cpp.
| void ActorManager::ModifyFreeForce | ( | FreeForceRequest * | rq | ) |
Definition at line 1888 of file ActorManager.cpp.
|
private |
Returns whether or not the bounding boxes of truck a and truck b might intersect during the next framestep. Based on the truck collision bounding boxes.
Definition at line 705 of file ActorManager.cpp.
|
private |
Definition at line 734 of file ActorManager.cpp.
| void ActorManager::RemoveFreeForce | ( | FreeForceID_t | id | ) |
Definition at line 1906 of file ActorManager.cpp.
|
private |
Definition at line 373 of file ActorManager.cpp.
|
private |
Definition at line 352 of file ActorManager.cpp.
| void ActorManager::RepairActor | ( | Collisions * | collisions, |
| const Ogre::String & | inst, | ||
| const Ogre::String & | box, | ||
| bool | keepPosition = false |
||
| ) |
Definition at line 932 of file ActorManager.cpp.
| void ActorManager::RequestSpawnRemoteActor | ( | RoRnet::ActorStreamRegister * | reg, |
| const CacheEntryPtr & | cache_entry, | ||
| const RoRnet::UserInfo & | userinfo, | ||
| BitMask_t | peeropts | ||
| ) |
Definition at line 560 of file ActorManager.cpp.
| void ActorManager::RestoreSavedState | ( | ActorPtr | actor, |
| rapidjson::Value const & | j_entry | ||
| ) |
Definition at line 787 of file Savegame.cpp.
| void ActorManager::RetryFailedStreamRegistrations | ( | ScriptEventArgs * | args | ) |
Definition at line 395 of file ActorManager.cpp.
| bool ActorManager::SaveScene | ( | Ogre::String | filename | ) |
Definition at line 418 of file Savegame.cpp.
| void ActorManager::SendAllActorsSleeping | ( | ) |
Definition at line 901 of file ActorManager.cpp.
|
inline |
Definition at line 90 of file ActorManager.h.
|
inline |
Definition at line 87 of file ActorManager.h.
|
inline |
Definition at line 85 of file ActorManager.h.
| void ActorManager::SyncWithSimThread | ( | ) |
Definition at line 1328 of file ActorManager.cpp.
| void ActorManager::UpdateActors | ( | ActorPtr | player_actor | ) |
Definition at line 1120 of file ActorManager.cpp.
| void ActorManager::UpdateInputEvents | ( | float | dt | ) |
Definition at line 1468 of file ActorManager.cpp.
| void ActorManager::UpdateNetTimeOffset | ( | int | sourceid, |
| int | offset | ||
| ) |
Definition at line 604 of file ActorManager.cpp.
| void ActorManager::UpdatePhysicsSimulation | ( | ) |
Definition at line 1248 of file ActorManager.cpp.
| void ActorManager::UpdateSleepingState | ( | ActorPtr | player_actor, |
| float | dt | ||
| ) |
Definition at line 844 of file ActorManager.cpp.
|
private |
Definition at line 1558 of file ActorManager.cpp.
| void ActorManager::WakeUpAllActors | ( | ) |
Definition at line 889 of file ActorManager.cpp.
|
static |
Definition at line 135 of file ActorManager.h.
Definition at line 132 of file ActorManager.h.
|
private |
Unique sequential ID for each Actor.
Definition at line 156 of file ActorManager.h.
|
private |
Use MSG_SIM_{SPAWN/DELETE}_ACTOR_REQUESTED
Definition at line 155 of file ActorManager.h.
|
private |
Keeps track of the rounding error in the time step calculation.
Definition at line 159 of file ActorManager.h.
|
private |
disables sleep counters
Definition at line 157 of file ActorManager.h.
|
private |
Unique ID for each FreeForce.
Definition at line 166 of file ActorManager.h.
|
private |
Global forces added ad-hoc by scripts.
Definition at line 165 of file ActorManager.h.
|
private |
Definition at line 171 of file ActorManager.h.
|
private |
previously used time ratio between real time (evt.timeSinceLastFrame) and physics time ('dt' used in calcPhysics)
Definition at line 161 of file ActorManager.h.
|
private |
Definition at line 152 of file ActorManager.h.
|
private |
Definition at line 158 of file ActorManager.h.
|
private |
Definition at line 170 of file ActorManager.h.
|
private |
Definition at line 169 of file ActorManager.h.
|
private |
Definition at line 163 of file ActorManager.h.
|
private |
slow motion < 1.0 < fast motion
Definition at line 160 of file ActorManager.h.
|
private |
Amount of time the physics simulation is going to be advanced.
Definition at line 162 of file ActorManager.h.
|
private |
Networking: Remember mismatched stream regs to re-process after downloading the missing mods.
Definition at line 150 of file ActorManager.h.
|
private |
Networking: A set of streams without a corresponding actor in the actor-array for each stream source.
Definition at line 149 of file ActorManager.h.
|
private |
Networking: A network time offset for each stream source.
Definition at line 151 of file ActorManager.h.
|
private |
Definition at line 164 of file ActorManager.h.