20 friend class ::plWorld;
21 friend class ::plComponentManagerBase;
67 friend class ::plWorld;
71 ObjectStorage::ConstIterator m_Iterator;
92 friend class ::plWorld;
96 ObjectStorage::Iterator m_Iterator;
119 Hierarchy m_Hierarchies[HierarchyType::COUNT];
121 static HierarchyType::Enum GetHierarchyType(
bool bDynamic);
123 plGameObject::TransformationData* CreateTransformationData(
bool bDynamic, plUInt32 uiHierarchyLevel);
125 void DeleteTransformationData(
bool bDynamic, plUInt32 uiHierarchyLevel, plGameObject::TransformationData* pData);
127 template <
typename VISITOR>
128 static plVisitorExecution::Enum TraverseHierarchyLevel(Hierarchy::DataBlockArray& blocks,
void* pUserData =
nullptr);
129 template <
typename VISITOR>
130 plVisitorExecution::Enum TraverseHierarchyLevelMultiThreaded(Hierarchy::DataBlockArray& blocks,
void* pUserData =
nullptr);
133 void TraverseBreadthFirst(VisitorFunc& func);
134 void TraverseDepthFirst(VisitorFunc& func);
137 static void UpdateGlobalTransform(plGameObject::TransformationData* pData, plUInt32 uiUpdateCounter);
138 static void UpdateGlobalTransformWithParent(plGameObject::TransformationData* pData, plUInt32 uiUpdateCounter);
140 static void UpdateGlobalTransformAndSpatialData(plGameObject::TransformationData* pData, plUInt32 uiUpdateCounter,
plSpatialSystem& spatialSystem);
141 static void UpdateGlobalTransformWithParentAndSpatialData(plGameObject::TransformationData* pData, plUInt32 uiUpdateCounter,
plSpatialSystem& spatialSystem);
143 void UpdateGlobalTransforms();
163 bool m_bMustFinishWithinOneFrame =
true;
164 bool m_bIsReady =
false;
166 plUInt32 m_uiNextComponentToInitialize = 0;
167 plUInt32 m_uiNextComponentToStartSimulation = 0;
172 plTime m_MaxInitializationTimePerFrame;
174 InitBatch* m_pDefaultInitBatch =
nullptr;
175 InitBatch* m_pCurrentInitBatch =
nullptr;
177 struct RegisteredUpdateFunction
182 plUInt16 m_uiGranularity;
183 bool m_bOnlyUpdateWhenSimulating;
186 bool operator<(
const RegisteredUpdateFunction& other)
const;
189 struct UpdateTask final :
public plTask
191 virtual void Execute()
override;
194 plUInt32 m_uiStartIndex;
210 struct QueuedMsgMetaData
212 PL_DECLARE_POD_TYPE();
214 PL_ALWAYS_INLINE QueuedMsgMetaData()
215 : m_uiReceiverData(0)
223 plUInt64 m_uiReceiverObjectOrComponent : 62;
224 plUInt64 m_uiReceiverIsComponent : 1;
225 plUInt64 m_uiRecursive : 1;
228 plUInt64 m_uiReceiverData;
235 mutable MessageQueue m_MessageQueues[plObjectMsgQueueType::COUNT];
236 mutable MessageQueue m_TimedMessageQueues[plObjectMsgQueueType::COUNT];
239 plThreadID m_WriteThreadID;
240 plInt32 m_iWriteCounter = 0;
243 plUInt32 m_uiUpdateCounter = 0;
244 bool m_bSimulateWorld =
true;
245 bool m_bReportErrorWhenStaticObjectMoves =
true;
250 struct ResourceReloadContext
254 void* m_pUserData =
nullptr;
257 using ResourceReloadFunc =
plDelegate<void(ResourceReloadContext&)>;
259 struct ResourceReloadFunctionData
262 void* m_pUserData =
nullptr;
263 ResourceReloadFunc m_Func;
269 ReloadFunctionList m_TempReloadFunctions;
279 friend class ::plInternal::WorldData;
292 friend class ::plInternal::WorldData;
302 void* m_pUserData =
nullptr;
A clock that can be speed up, slowed down, paused, etc. Useful for updating game logic,...
Definition Clock.h:15