![]() |
Rigs of Rods 2023.09
Soft-body Physics Simulation
|
Builds and manages softbody actors (physics on background thread, networking) More...
#include <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) |
| Returns whether or not the bounding boxes of truck a and truck b intersect. Based on the truck collision bounding boxes. | |
| bool | PredictActorCollAabbIntersect (int a, int b) |
| 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. | |
| void | RemoveStreamSource (int sourceid) |
| void | RemoveStream (int sourceid, int streamid) |
| void | RecursiveActivation (int j, std::vector< bool > &visited) |
| void | ForwardCommands (ActorPtr source_actor) |
| Fowards things to trailers. | |
| void | UpdateTruckFeatures (ActorPtr vehicle, float dt) |
| void | CalcFreeForces () |
| Apply FreeForces - intentionally as a separate pass over all actors. | |
Private Attributes | |
| std::map< int, std::set< int > > | m_stream_mismatches |
| Networking: A set of streams without a corresponding actor in the actor-array for each stream source. | |
| std::vector< RoRnet::ActorStreamRegister > | m_stream_mismatched_regs |
| Networking: Remember mismatched stream regs to re-process after downloading the missing mods. | |
| std::map< int, int > | m_stream_time_offsets |
| Networking: A network time offset for each stream source. | |
| Ogre::Timer | m_net_timer |
| ActorPtrVec | m_actors |
Use MSG_SIM_{SPAWN/DELETE}_ACTOR_REQUESTED | |
| ActorInstanceID_t | m_actor_next_instance_id = 1 |
| Unique sequential ID for each Actor. | |
| bool | m_forced_awake = false |
| disables sleep counters | |
| int | m_physics_steps = 0 |
| float | m_dt_remainder = 0.f |
| Keeps track of the rounding error in the time step calculation. | |
| float | m_simulation_speed = 1.f |
| slow motion < 1.0 < fast motion | |
| float | m_last_simulation_speed = 0.1f |
| previously used time ratio between real time (evt.timeSinceLastFrame) and physics time ('dt' used in calcPhysics) | |
| float | m_simulation_time = 0.f |
| Amount of time the physics simulation is going to be advanced. | |
| bool | m_simulation_paused = false |
| float | m_total_sim_time = 0.f |
| FreeForceVec_t | m_free_forces |
| Global forces added ad-hoc by scripts. | |
| FreeForceID_t | m_free_force_next_id = 0 |
| Unique ID for each FreeForce. | |
| std::unique_ptr< ThreadPool > | m_sim_thread_pool |
| std::shared_ptr< Task > | m_sim_task |
| RoR::CmdKeyInertiaConfig | m_inertia_config |
Builds and manages softbody actors (physics on background thread, networking)
Definition at line 44 of file ActorManager.h.
| typedef std::vector<FreeForce> RoR::ActorManager::FreeForceVec_t |
Definition at line 48 of file ActorManager.h.
| ActorManager::ActorManager | ( | ) |
Definition at line 68 of file ActorManager.cpp.
| ActorManager::~ActorManager | ( | ) |
Definition at line 78 of file ActorManager.cpp.
| void ActorManager::AddFreeForce | ( | FreeForceRequest * | rq | ) |
Definition at line 1856 of file ActorManager.cpp.
| void ActorManager::AddStreamMismatch | ( | RoRnet::ActorStreamRegister * | reg | ) |
Definition at line 593 of file ActorManager.cpp.
Definition at line 822 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 1611 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 668 of file ActorManager.cpp.
| RoRnet::UiStreamsHealth ActorManager::CheckNetRemoteStreamsOk | ( | int | sourceid | ) |
Definition at line 636 of file ActorManager.cpp.
| RoRnet::UiStreamsHealth ActorManager::CheckNetworkStreamsOk | ( | int | sourceid | ) |
Definition at line 617 of file ActorManager.cpp.
| void ActorManager::CleanUpSimulation | ( | ) |
Call this after simulation loop finishes.
Definition at line 954 of file ActorManager.cpp.
| ActorPtr ActorManager::CreateNewActor | ( | ActorSpawnRequest | rq, |
| RigDef::DocumentPtr | def | ||
| ) |
Definition at line 83 of file ActorManager.cpp.
| void ActorManager::DeleteActorInternal | ( | ActorPtr | actor | ) |
Do not call directly; use GameContext::DeleteActor()
Definition at line 967 of file ActorManager.cpp.
| void ActorManager::ExportActorDef | ( | RigDef::DocumentPtr | def, |
| std::string | filename, | ||
| std::string | rg_name | ||
| ) |
Definition at line 1418 of file ActorManager.cpp.
| RigDef::DocumentPtr ActorManager::FetchActorDef | ( | RoR::ActorSpawnRequest & | rq | ) |
Definition at line 1339 of file ActorManager.cpp.
Definition at line 1048 of file ActorManager.cpp.
Definition at line 1073 of file ActorManager.cpp.
| const ActorPtr & ActorManager::FetchRescueVehicle | ( | ) |
Definition at line 1100 of file ActorManager.cpp.
| ActorPtr ActorManager::FindActorInsideBox | ( | Collisions * | collisions, |
| const Ogre::String & | inst, | ||
| const Ogre::String & | box | ||
| ) |
Definition at line 905 of file ActorManager.cpp.
| bool ActorManager::FindFreeForce | ( | FreeForceID_t | id, |
| FreeForceVec_t::iterator & | out_itor | ||
| ) |
Definition at line 1850 of file ActorManager.cpp.
|
private |
Fowards things to trailers.
Definition at line 751 of file ActorManager.cpp.
| const ActorPtr & ActorManager::GetActorById | ( | ActorInstanceID_t | actor_id | ) |
Definition at line 1228 of file ActorManager.cpp.
| const ActorPtr & ActorManager::GetActorByNetworkLinks | ( | int | source_id, |
| int | stream_id | ||
| ) |
Definition at line 655 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 1449 of file ActorManager.cpp.
| std::pair< ActorPtr, float > ActorManager::GetNearestActor | ( | Ogre::Vector3 | position | ) |
Definition at line 938 of file ActorManager.cpp.
|
inline |
Definition at line 111 of file ActorManager.h.
| int ActorManager::GetNetTimeOffset | ( | int | sourceid | ) |
Definition at line 599 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 444 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 1875 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 697 of file ActorManager.cpp.
|
private |
Definition at line 726 of file ActorManager.cpp.
| void ActorManager::RemoveFreeForce | ( | FreeForceID_t | id | ) |
Definition at line 1893 of file ActorManager.cpp.
|
private |
Definition at line 378 of file ActorManager.cpp.
|
private |
Definition at line 357 of file ActorManager.cpp.
| void ActorManager::RepairActor | ( | Collisions * | collisions, |
| const Ogre::String & | inst, | ||
| const Ogre::String & | box, | ||
| bool | keepPosition = false |
||
| ) |
Definition at line 924 of file ActorManager.cpp.
| void ActorManager::RequestSpawnRemoteActor | ( | RoRnet::ActorStreamRegister * | reg, |
| const CacheEntryPtr & | cache_entry, | ||
| const RoRnet::UserInfo & | userinfo, | ||
| BitMask_t | peeropts | ||
| ) |
Definition at line 565 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 400 of file ActorManager.cpp.
| bool ActorManager::SaveScene | ( | Ogre::String | filename | ) |
Definition at line 418 of file Savegame.cpp.
| void ActorManager::SendAllActorsSleeping | ( | ) |
Definition at line 893 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 1320 of file ActorManager.cpp.
| void ActorManager::UpdateActors | ( | ActorPtr | player_actor | ) |
Definition at line 1112 of file ActorManager.cpp.
| void ActorManager::UpdateInputEvents | ( | float | dt | ) |
Definition at line 1460 of file ActorManager.cpp.
| void ActorManager::UpdateNetTimeOffset | ( | int | sourceid, |
| int | offset | ||
| ) |
Definition at line 609 of file ActorManager.cpp.
| void ActorManager::UpdatePhysicsSimulation | ( | ) |
Definition at line 1240 of file ActorManager.cpp.
| void ActorManager::UpdateSleepingState | ( | ActorPtr | player_actor, |
| float | dt | ||
| ) |
Definition at line 836 of file ActorManager.cpp.
|
private |
Definition at line 1550 of file ActorManager.cpp.
| void ActorManager::WakeUpAllActors | ( | ) |
Definition at line 881 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.