diff --git a/Source/Editor/Modules/SceneModule.cs b/Source/Editor/Modules/SceneModule.cs
index 954e3bd50..f5471ec33 100644
--- a/Source/Editor/Modules/SceneModule.cs
+++ b/Source/Editor/Modules/SceneModule.cs
@@ -534,6 +534,8 @@ namespace FlaxEditor.Modules
{
node.ParentNode = parentNode;
}
+
+ actor.OnActorSpawned();
}
private void OnActorDeleted(Actor actor)
diff --git a/Source/Engine/Level/Actor.cs b/Source/Engine/Level/Actor.cs
index dbe8a89b5..7c34b5d7e 100644
--- a/Source/Engine/Level/Actor.cs
+++ b/Source/Engine/Level/Actor.cs
@@ -116,6 +116,15 @@ namespace FlaxEngine
LocalTransform = Transform.Identity;
}
+ ///
+ /// Called in-editor when an actor is added to the scene.
+ /// If not in the editor, this function will not be called.
+ ///
+ public virtual void OnActorSpawned()
+ {
+
+ }
+
///
/// Creates a new child actor of the given type.
///
diff --git a/Source/Engine/Level/Actors/BoxCollider.cs b/Source/Engine/Level/Actors/BoxCollider.cs
new file mode 100644
index 000000000..f9343eb74
--- /dev/null
+++ b/Source/Engine/Level/Actors/BoxCollider.cs
@@ -0,0 +1,27 @@
+using System;
+
+namespace FlaxEngine
+{
+ partial class BoxCollider
+ {
+ ///
+ public override void OnActorSpawned()
+ {
+ base.OnActorSpawned();
+ if (Parent is StaticModel model)
+ {
+ Vector3 modelScale = model.Scale;
+ Vector3 modelSize = model.Box.Size;
+ Vector3 modelCenter = model.Box.Center - model.Position;
+ Vector3 colliderSize = modelSize / modelScale;
+ Vector3 colliderCenter = modelCenter / modelScale;
+
+ Size = colliderSize;
+ Center = colliderCenter;
+
+ // Undo Rotation
+ Orientation *= Quaternion.Invert(Orientation);
+ }
+ }
+ }
+}