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

Function LinkPrefab

Source/Engine/Level/Actor.cpp:75–103  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

73 }
74
75 void LinkPrefab(SceneObject* object, Prefab* linkPrefab)
76 {
77 // Find prefab object that is used by this object in a given prefab
78 Guid currentPrefabId = object->GetPrefabID(), currentObjectId = object->GetPrefabObjectID();
79 RETRY:
80 auto prefab = Content::Load<Prefab>(currentPrefabId);
81 Guid nestedPrefabId, nestedObjectId;
82 if (prefab && prefab->GetNestedObject(currentObjectId, nestedPrefabId, nestedObjectId))
83 {
84 auto nestedPrefab = Content::Load<Prefab>(nestedPrefabId);
85 if (nestedPrefab)
86 {
87 auto nestedObject = (Actor*)nestedPrefab->GetDefaultInstance(nestedObjectId);
88 if (nestedObject && nestedPrefab == linkPrefab)
89 {
90 object->LinkPrefab(nestedPrefabId, nestedObjectId);
91 return;
92 }
93 }
94
95 // Try deeper
96 currentPrefabId = nestedPrefabId;
97 currentObjectId = nestedObjectId;
98 goto RETRY;
99 }
100
101 // Failed to resolve properly object from a given prefab
102 object->BreakPrefabLink();
103 }
104
105 void LinkPrefabRecursive(Actor* actor, Prefab* linkPrefab)
106 {

Callers 1

LinkPrefabRecursiveFunction · 0.85

Calls 4

GetNestedObjectMethod · 0.80
GetDefaultInstanceMethod · 0.45
LinkPrefabMethod · 0.45
BreakPrefabLinkMethod · 0.45

Tested by

no test coverage detected