Add Collision Meshes Postfix to filter collision meshes inside imported model via ending
#3792
This commit is contained in:
@@ -567,6 +567,7 @@ void ModelTool::Options::Serialize(SerializeStream& stream, const void* otherObj
|
||||
SERIALIZE(CalculateBoneOffsetMatrices);
|
||||
SERIALIZE(LightmapUVsSource);
|
||||
SERIALIZE(CollisionMeshesPrefix);
|
||||
SERIALIZE(CollisionMeshesPostfix);
|
||||
SERIALIZE(CollisionType);
|
||||
SERIALIZE(PositionFormat);
|
||||
SERIALIZE(TexCoordFormat);
|
||||
@@ -621,6 +622,7 @@ void ModelTool::Options::Deserialize(DeserializeStream& stream, ISerializeModifi
|
||||
DESERIALIZE(CalculateBoneOffsetMatrices);
|
||||
DESERIALIZE(LightmapUVsSource);
|
||||
DESERIALIZE(CollisionMeshesPrefix);
|
||||
DESERIALIZE(CollisionMeshesPostfix);
|
||||
DESERIALIZE(CollisionType);
|
||||
DESERIALIZE(PositionFormat);
|
||||
DESERIALIZE(TexCoordFormat);
|
||||
@@ -1830,7 +1832,7 @@ bool ModelTool::ImportModel(const String& path, ModelData& data, Options& option
|
||||
}
|
||||
|
||||
// Collision mesh output
|
||||
if (options.CollisionMeshesPrefix.HasChars())
|
||||
if (options.CollisionMeshesPrefix.HasChars() || options.CollisionMeshesPostfix.HasChars())
|
||||
{
|
||||
// Extract collision meshes from the model
|
||||
ModelData collisionModel;
|
||||
@@ -1839,7 +1841,8 @@ bool ModelTool::ImportModel(const String& path, ModelData& data, Options& option
|
||||
for (int32 i = lod.Meshes.Count() - 1; i >= 0; i--)
|
||||
{
|
||||
auto mesh = lod.Meshes[i];
|
||||
if (mesh->Name.StartsWith(options.CollisionMeshesPrefix, StringSearchCase::IgnoreCase))
|
||||
if ((options.CollisionMeshesPrefix.HasChars() && mesh->Name.StartsWith(options.CollisionMeshesPrefix, StringSearchCase::IgnoreCase)) ||
|
||||
(options.CollisionMeshesPostfix.HasChars() && mesh->Name.EndsWith(options.CollisionMeshesPostfix, StringSearchCase::IgnoreCase)))
|
||||
{
|
||||
// Remove material slot used by this mesh (if no other mesh else uses it)
|
||||
int32 materialSlotUsageCount = 0;
|
||||
|
||||
@@ -221,6 +221,9 @@ public:
|
||||
// If specified, all meshes that name starts with this prefix in the name will be imported as a separate collision data asset (excluded used for rendering).
|
||||
API_FIELD(Attributes="EditorOrder(100), EditorDisplay(\"Geometry\"), VisibleIf(nameof(ShowGeometry))")
|
||||
String CollisionMeshesPrefix = TEXT("");
|
||||
// If specified, all meshes that name ends with this postfix in the name will be imported as a separate collision data asset (excluded used for rendering).
|
||||
API_FIELD(Attributes="EditorOrder(101), EditorDisplay(\"Geometry\"), VisibleIf(nameof(ShowGeometry))")
|
||||
String CollisionMeshesPostfix = TEXT("");
|
||||
// The type of collision that should be generated if the mesh has a collision prefix specified.
|
||||
API_FIELD(Attributes="EditorOrder(105), EditorDisplay(\"Geometry\"), VisibleIf(nameof(ShowGeometry))")
|
||||
CollisionDataType CollisionType = CollisionDataType::ConvexMesh;
|
||||
|
||||
Reference in New Issue
Block a user