34 lines
1.2 KiB
C#
34 lines
1.2 KiB
C#
using RebootKit.Engine.Foundation;
|
|
using RebootKit.Engine.Simulation;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace RebootKit.Editor.Background {
|
|
[InitializeOnLoad]
|
|
public class EnsureUniqueActorID {
|
|
static EnsureUniqueActorID() {
|
|
ObjectChangeEvents.changesPublished += OnObjectChange;
|
|
}
|
|
|
|
static void OnObjectChange(ref ObjectChangeEventStream stream) {
|
|
|
|
for (int i = 0; i < stream.length; ++i) {
|
|
switch (stream.GetEventType(i)) {
|
|
case ObjectChangeKind.CreateGameObjectHierarchy:
|
|
stream.GetCreateGameObjectHierarchyEvent(i, out CreateGameObjectHierarchyEventArgs createEvent);
|
|
|
|
GameObject gameObjectChanged =
|
|
EditorUtility.InstanceIDToObject(createEvent.instanceId) as GameObject;
|
|
|
|
if (gameObjectChanged != null && gameObjectChanged.TryGetComponent(out Actor actor)) {
|
|
actor.ActorStaticID = UniqueID.NewULongFromGuid();
|
|
EditorUtility.SetDirty(actor);
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
} |