Add Create collision data action to be performed for each model selected in the Content Window
This commit is contained in:
@@ -80,7 +80,8 @@ namespace FlaxEditor.Content
|
||||
/// </summary>
|
||||
/// <param name="model">The associated model.</param>
|
||||
/// <param name="created">The action to call once the collision data gets created (or reused from existing).</param>
|
||||
public void CreateCollisionDataFromModel(Model model, Action<CollisionData> created = null)
|
||||
/// <param name="withRenaming">True if start initial item renaming by user, or tru to skip it.</param>
|
||||
public void CreateCollisionDataFromModel(Model model, Action<CollisionData> created = null, bool withRenaming = true)
|
||||
{
|
||||
// Check if there already is collision data for that model to reuse
|
||||
var modelItem = (AssetItem)Editor.Instance.ContentDatabase.Find(model.ID);
|
||||
@@ -140,7 +141,7 @@ namespace FlaxEditor.Content
|
||||
});
|
||||
};
|
||||
var initialName = (modelItem?.ShortName ?? Path.GetFileNameWithoutExtension(model.Path)) + " Collision";
|
||||
Editor.Instance.Windows.ContentWin.NewItem(this, null, create, initialName);
|
||||
Editor.Instance.Windows.ContentWin.NewItem(this, null, create, initialName, withRenaming);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,9 +47,23 @@ namespace FlaxEditor.Content
|
||||
|
||||
menu.AddButton("Create collision data", () =>
|
||||
{
|
||||
var model = FlaxEngine.Content.LoadAsync<Model>(((ModelItem)item).ID);
|
||||
var collisionDataProxy = (CollisionDataProxy)Editor.Instance.ContentDatabase.GetProxy<CollisionData>();
|
||||
collisionDataProxy.CreateCollisionDataFromModel(model);
|
||||
var selection = Editor.Instance.Windows.ContentWin.View.Selection;
|
||||
if (selection.Count > 1)
|
||||
{
|
||||
// Batch action
|
||||
var items = selection.ToArray(); // Clone to prevent issue when iterating over and content window changes the selection
|
||||
foreach (var contentItem in items)
|
||||
{
|
||||
if (contentItem is ModelItem modelItem)
|
||||
collisionDataProxy.CreateCollisionDataFromModel(FlaxEngine.Content.LoadAsync<Model>(modelItem.ID), null, false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var model = FlaxEngine.Content.LoadAsync<Model>(((ModelItem)item).ID);
|
||||
collisionDataProxy.CreateCollisionDataFromModel(model);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user