diff --git a/Source/Editor/SceneGraph/Actors/StaticModelNode.cs b/Source/Editor/SceneGraph/Actors/StaticModelNode.cs index 845b4fa35..cfd2c754e 100644 --- a/Source/Editor/SceneGraph/Actors/StaticModelNode.cs +++ b/Source/Editor/SceneGraph/Actors/StaticModelNode.cs @@ -1,5 +1,8 @@ // Copyright (c) 2012-2021 Wojciech Figat. All rights reserved. +using System; +using FlaxEditor.Content; +using FlaxEditor.GUI.ContextMenu; using FlaxEngine; namespace FlaxEditor.SceneGraph.Actors @@ -16,5 +19,32 @@ namespace FlaxEditor.SceneGraph.Actors : base(actor) { } + + /// + public override void OnContextMenu(ContextMenu contextMenu) + { + base.OnContextMenu(contextMenu); + + contextMenu.AddButton("Add mesh collider", OnAddMeshCollider).Enabled = ((StaticModel)Actor).Model != null; + } + + private void OnAddMeshCollider() + { + var model = ((StaticModel)Actor).Model; + if (!model) + return; + Action created = collisionData => + { + var actor = new MeshCollider + { + StaticFlags = Actor.StaticFlags, + Transform = Actor.Transform, + CollisionData = collisionData, + }; + Editor.Instance.SceneEditing.Spawn(actor, Actor); + }; + var collisionDataProxy = (CollisionDataProxy)Editor.Instance.ContentDatabase.GetProxy(); + collisionDataProxy.CreateCollisionDataFromModel(model, created); + } } }