Fix existing nested prefabs sync applying when updating base prefab changes
#1015
This commit is contained in:
@@ -7,17 +7,14 @@
|
||||
Actor* SceneQuery::RaycastScene(const Ray& ray)
|
||||
{
|
||||
PROFILE_CPU();
|
||||
|
||||
#if SCENE_QUERIES_WITH_LOCK
|
||||
ScopeLock lock(Level::ScenesLock);
|
||||
#endif
|
||||
|
||||
Actor* target;
|
||||
Actor* minTarget = nullptr;
|
||||
Real distance;
|
||||
Vector3 normal;
|
||||
Real minDistance = MAX_Real;
|
||||
|
||||
for (int32 i = 0; i < Level::Scenes.Count(); i++)
|
||||
{
|
||||
target = Level::Scenes[i]->Intersects(ray, distance, normal);
|
||||
@@ -30,7 +27,6 @@ Actor* SceneQuery::RaycastScene(const Ray& ray)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return minTarget;
|
||||
}
|
||||
|
||||
@@ -38,16 +34,13 @@ bool GetAllSceneObjectsQuery(Actor* actor, Array<SceneObject*>& objects)
|
||||
{
|
||||
objects.Add(actor);
|
||||
objects.Add(reinterpret_cast<SceneObject* const*>(actor->Scripts.Get()), actor->Scripts.Count());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void SceneQuery::GetAllSceneObjects(Actor* root, Array<SceneObject*>& objects)
|
||||
{
|
||||
ASSERT(root);
|
||||
|
||||
PROFILE_CPU();
|
||||
|
||||
Function<bool(Actor*, Array<SceneObject*>&)> func(GetAllSceneObjectsQuery);
|
||||
root->TreeExecuteChildren<Array<SceneObject*>&>(func, objects);
|
||||
}
|
||||
@@ -56,19 +49,15 @@ bool GetAllSerializableSceneObjectsQuery(Actor* actor, Array<SceneObject*>& obje
|
||||
{
|
||||
if (EnumHasAnyFlags(actor->HideFlags, HideFlags::DontSave))
|
||||
return false;
|
||||
|
||||
objects.Add(actor);
|
||||
objects.Add(reinterpret_cast<SceneObject* const*>(actor->Scripts.Get()), actor->Scripts.Count());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void SceneQuery::GetAllSerializableSceneObjects(Actor* root, Array<SceneObject*>& objects)
|
||||
{
|
||||
ASSERT(root);
|
||||
|
||||
PROFILE_CPU();
|
||||
|
||||
Function<bool(Actor*, Array<SceneObject*>&)> func(GetAllSerializableSceneObjectsQuery);
|
||||
root->TreeExecute<Array<SceneObject*>&>(func, objects);
|
||||
}
|
||||
@@ -82,9 +71,7 @@ bool GetAllActorsQuery(Actor* actor, Array<Actor*>& actors)
|
||||
void SceneQuery::GetAllActors(Actor* root, Array<Actor*>& actors)
|
||||
{
|
||||
PROFILE_CPU();
|
||||
|
||||
ASSERT(root);
|
||||
|
||||
Function<bool(Actor*, Array<Actor*>&)> func(GetAllActorsQuery);
|
||||
root->TreeExecuteChildren<Array<Actor*>&>(func, actors);
|
||||
}
|
||||
@@ -92,11 +79,9 @@ void SceneQuery::GetAllActors(Actor* root, Array<Actor*>& actors)
|
||||
void SceneQuery::GetAllActors(Array<Actor*>& actors)
|
||||
{
|
||||
PROFILE_CPU();
|
||||
|
||||
#if SCENE_QUERIES_WITH_LOCK
|
||||
ScopeLock lock(Level::ScenesLock);
|
||||
#endif
|
||||
|
||||
for (int32 i = 0; i < Level::Scenes.Count(); i++)
|
||||
GetAllActors(Level::Scenes[i], actors);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user