Merge branch 'collisiondata-from-model' of git://github.com/jb-perrier/FlaxEngine into jb-perrier-collisiondata-from-model
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
// Copyright (c) 2012-2020 Wojciech Figat. All rights reserved.
|
||||
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using FlaxEditor.Windows;
|
||||
using FlaxEditor.Windows.Assets;
|
||||
using FlaxEngine;
|
||||
@@ -40,5 +41,29 @@ namespace FlaxEditor.Content
|
||||
if (Editor.CreateAsset(Editor.NewAssetType.CollisionData, outputPath))
|
||||
throw new Exception("Failed to create new asset.");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create collision data from model.
|
||||
/// </summary>
|
||||
/// <param name="model">The associated model.</param>
|
||||
public void CreateCollisionDataFromModel(Model model)
|
||||
{
|
||||
Action<ContentItem> created = contentItem =>
|
||||
{
|
||||
var ai = (AssetItem)contentItem;
|
||||
var cd = FlaxEngine.Content.LoadAsync<CollisionData>(ai.ID);
|
||||
if (cd == null || cd.WaitForLoaded())
|
||||
{
|
||||
Editor.LogError("Failed to load created collision data.");
|
||||
return;
|
||||
}
|
||||
|
||||
Task.Run(() =>
|
||||
{
|
||||
Editor.CookMeshCollision(ai.Path, CollisionDataType.TriangleMesh, model);
|
||||
});
|
||||
};
|
||||
Editor.Instance.Windows.ContentWin.NewItem(this, null, created);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,6 +89,15 @@ namespace FlaxEditor.Windows
|
||||
if (item is AssetItem assetItem)
|
||||
{
|
||||
cm.AddButton("Copy asset ID", () => Clipboard.Text = JsonSerializer.GetStringID(assetItem.ID));
|
||||
if (item is ModelAssetItem modelAssetItem)
|
||||
{
|
||||
cm.AddButton("Generate collision data", () =>
|
||||
{
|
||||
var model = FlaxEngine.Content.Load<Model>(modelAssetItem.ID);
|
||||
var cdProxy = (CollisionDataProxy)Editor.Instance.ContentDatabase.GetProxy<CollisionData>();
|
||||
cdProxy.CreateCollisionDataFromModel(model);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (Editor.CanExport(item.Path))
|
||||
|
||||
Reference in New Issue
Block a user