Add EditorCollection callback

To be used to re-route contents created/moved in editor.
ipv6
Sven Eberhardt 2017-01-01 16:57:19 -05:00
parent 088fc450d9
commit d46f98fd7b
3 changed files with 14 additions and 1 deletions

View File

@ -1295,7 +1295,13 @@ void C4ControlEMMoveObject::Execute() const
if (pTarget)
for (int i=0; i<iObjectNum; ++i)
if ((pObj = ::Objects.SafeObjectPointer(pObjects[i])))
{
pObj->Enter(pTarget);
if (!pTarget->Status) break;
C4AulParSet pars(C4VObj(pObj));
if (pObj && pObj->Status && pTarget->Status) pTarget->Call(P_EditorCollection, &pars);
if (!pTarget->Status) break;
}
}
break;
case EMMO_Duplicate:
@ -1369,7 +1375,12 @@ void C4ControlEMMoveObject::Execute() const
create_centered = true;
#endif
C4Object *obj = ::Game.CreateObject(iddef, nullptr, NO_OWNER, fixtoi(tx), fixtoi(ty), 0, create_centered);
if (container && obj && container->Status && obj->Status) obj->Enter(container);
if (container && obj && container->Status && obj->Status)
{
obj->Enter(container);
C4AulParSet pars(C4VObj(obj));
if (obj && obj->Status) container->Call(P_EditorCollection, &pars);
}
if (obj && obj->Status) obj->Call(P_EditorInitialize); // specific initialization when placed in editor
}
break;

View File

@ -303,6 +303,7 @@ C4StringTable::C4StringTable()
P[P_AllowEditing] = "AllowEditing";
P[P_EditorInitialize] = "EditorInitialize";
P[P_EditorPlacementLimit] = "EditorPlacementLimit";
P[P_EditorCollection] = "EditorCollection";
P[P_Sorted] = "Sorted";
P[P_Uniforms] = "Uniforms";
P[DFA_WALK] = "WALK";

View File

@ -527,6 +527,7 @@ enum C4PropertyName
P_AllowEditing,
P_EditorInitialize,
P_EditorPlacementLimit,
P_EditorCollection,
P_Sorted,
P_Uniforms,
// Default Action Procedures