MCPcopy Create free account
hub / github.com/DanielChappuis/reactphysics3d / PhysicsWorld

Method PhysicsWorld

src/engine/PhysicsWorld.cpp:54–128  ·  view source on GitHub ↗

Constructor * @param gravity Gravity vector in the world (in meters per second squared) * @param worldSettings The settings of the world * @param profiler Pointer to the profiler */

Source from the content-addressed store, hash-verified

52 * @param profiler Pointer to the profiler
53 */
54PhysicsWorld::PhysicsWorld(MemoryManager& memoryManager, PhysicsCommon& physicsCommon, const WorldSettings& worldSettings,
55#ifdef IS_RP3D_PROFILING_ENABLED
56 Profiler* profiler)
57#else
58 Profiler* /*profiler*/)
59#endif
60 : mMemoryManager(memoryManager), mConfig(worldSettings), mEntityManager(mMemoryManager.getHeapAllocator()), mDebugRenderer(mMemoryManager.getHeapAllocator()),
61 mIsDebugRenderingEnabled(false), mIsGravityEnabled(true), mBodyComponents(mMemoryManager.getHeapAllocator()), mRigidBodyComponents(mMemoryManager.getHeapAllocator()),
62 mTransformComponents(mMemoryManager.getHeapAllocator()), mCollidersComponents(mMemoryManager.getHeapAllocator()),
63 mJointsComponents(mMemoryManager.getHeapAllocator()), mBallAndSocketJointsComponents(mMemoryManager.getHeapAllocator()),
64 mFixedJointsComponents(mMemoryManager.getHeapAllocator()), mHingeJointsComponents(mMemoryManager.getHeapAllocator()),
65 mSliderJointsComponents(mMemoryManager.getHeapAllocator()), mCollisionDetection(this, mCollidersComponents, mTransformComponents, mBodyComponents, mRigidBodyComponents,
66 mMemoryManager, physicsCommon.mTriangleShapeHalfEdgeStructure),
67 mCollisionBodies(mMemoryManager.getHeapAllocator()), mEventListener(nullptr),
68 mName(worldSettings.worldName), mIslands(mMemoryManager.getSingleFrameAllocator()), mProcessContactPairsOrderIslands(mMemoryManager.getSingleFrameAllocator()),
69 mContactSolverSystem(mMemoryManager, *this, mIslands, mBodyComponents, mRigidBodyComponents,
70 mCollidersComponents, mConfig.restitutionVelocityThreshold),
71 mConstraintSolverSystem(*this, mIslands, mRigidBodyComponents, mTransformComponents, mJointsComponents,
72 mBallAndSocketJointsComponents, mFixedJointsComponents, mHingeJointsComponents,
73 mSliderJointsComponents),
74 mDynamicsSystem(*this, mBodyComponents, mRigidBodyComponents, mTransformComponents, mCollidersComponents, mIsGravityEnabled, mConfig.gravity),
75 mNbVelocitySolverIterations(mConfig.defaultVelocitySolverNbIterations),
76 mNbPositionSolverIterations(mConfig.defaultPositionSolverNbIterations),
77 mIsSleepingEnabled(mConfig.isSleepingEnabled), mRigidBodies(mMemoryManager.getPoolAllocator()),
78 mSleepLinearVelocity(mConfig.defaultSleepLinearVelocity),
79 mSleepAngularVelocity(mConfig.defaultSleepAngularVelocity), mTimeBeforeSleep(mConfig.defaultTimeBeforeSleep) {
80
81 // Automatically generate a name for the world
82 if (mName == "") {
83
84 std::stringstream ss;
85 ss << "world";
86
87 if (mNbWorlds > 0) {
88 ss << mNbWorlds;
89 }
90
91 mName = ss.str();
92 }
93
94#ifdef IS_RP3D_PROFILING_ENABLED
95
96
97 assert(profiler != nullptr);
98 mProfiler = profiler;
99
100 // Set the profiler
101 mConstraintSolverSystem.setProfiler(mProfiler);
102 mContactSolverSystem.setProfiler(mProfiler);
103 mDynamicsSystem.setProfiler(mProfiler);
104 mCollisionDetection.setProfiler(mProfiler);
105
106#endif
107
108 mNbWorlds++;
109
110 mTransformComponents.init();
111 mCollidersComponents.init();

Callers

nothing calls this directly

Calls 3

setProfilerMethod · 0.45
initMethod · 0.45
to_stringMethod · 0.45

Tested by

no test coverage detected