MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / UpdateActor

Method UpdateActor

Source/Engine/Level/Scene/SceneRendering.cpp:193–215  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

191}
192
193void SceneRendering::UpdateActor(Actor* a, int32& key, ISceneRenderingListener::UpdateFlags flags)
194{
195 const int32 category = a->_drawCategory;
196 bool lock = !_isRendering || ((int32)flags & (int32)ISceneRenderingListener::AutoDelayDuringRendering) == 0; // Allow updating actors during rendering
197 if (lock)
198 Locker.ReadLock(); // Read-access only as list doesn't get resized (like Add/Remove do) so allow updating actors from different threads at once
199 auto& list = Actors[category];
200 if (list.Count() > key && key >= 0) // Ignore invalid key softly
201 {
202 auto& e = list[key];
203 if (e.Actor == a)
204 {
205 for (auto* listener : _listeners)
206 listener->OnSceneRenderingUpdateActor(a, e.Bounds, flags);
207 if (flags & ISceneRenderingListener::Layer)
208 e.LayerMask = a->GetLayerMask();
209 if (flags & ISceneRenderingListener::Bounds)
210 e.Bounds = a->GetSphere();
211 }
212 }
213 if (lock)
214 Locker.ReadUnlock();
215}
216
217void SceneRendering::RemoveActor(Actor* a, int32& key)
218{

Callers 15

InitTypeMethod · 0.80
RebuildClustersMethod · 0.80
OnLayerChangedMethod · 0.80
UpdateBoundsMethod · 0.80
OnLayerChangedMethod · 0.80
OnLayerChangedMethod · 0.80
OnTransformChangedMethod · 0.80
UpdateLayoutMethod · 0.80
OnLayerChangedMethod · 0.80
OnTransformChangedMethod · 0.80
UpdateBoundsMethod · 0.80

Calls 3

GetSphereMethod · 0.80
CountMethod · 0.45

Tested by

no test coverage detected