feat: 支持通过创建平面加载 Plane.glb 并重新映射内置 Cube 加载 Cube.glb
This commit is contained in:
parent
a6e7070c41
commit
05157022bd
22
SandboxProject/Assets/Models/Cube.glb.mcmeta
Normal file
22
SandboxProject/Assets/Models/Cube.glb.mcmeta
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"asset_type": "model",
|
||||
"guid": "78fa65d0-3631-4cfc-973d-a4af2962c004",
|
||||
"importer_id": "GltfModelImporter",
|
||||
"package_path": "Assets/Models/Cube.glb.mcasset",
|
||||
"source_hash": 2668036311376285448,
|
||||
"source_path": "Assets/Models/Cube.glb",
|
||||
"sub_assets": [
|
||||
{
|
||||
"guid": "9cd50d41-df30-26ff-da7e-e01bb57f7135",
|
||||
"index": 0,
|
||||
"name": "Cube",
|
||||
"type": "mesh"
|
||||
},
|
||||
{
|
||||
"guid": "20a8eca7-ae5b-8ed9-c7a8-b64b59567283",
|
||||
"index": 0,
|
||||
"name": "Cube_Material",
|
||||
"type": "material"
|
||||
}
|
||||
]
|
||||
}
|
||||
22
SandboxProject/Assets/Models/Plane.glb.mcmeta
Normal file
22
SandboxProject/Assets/Models/Plane.glb.mcmeta
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"asset_type": "model",
|
||||
"guid": "b9ff132c-4c3e-4d51-bf21-eb810482ec51",
|
||||
"importer_id": "GltfModelImporter",
|
||||
"package_path": "Assets/Models/Plane.glb.mcasset",
|
||||
"source_hash": 7189019093832532692,
|
||||
"source_path": "Assets/Models/Plane.glb",
|
||||
"sub_assets": [
|
||||
{
|
||||
"guid": "804bca6d-b9ea-f7af-3f0a-f078d5de0d45",
|
||||
"index": 0,
|
||||
"name": "Plane",
|
||||
"type": "mesh"
|
||||
},
|
||||
{
|
||||
"guid": "6c337003-dc9a-da7c-d685-6d27c673046a",
|
||||
"index": 0,
|
||||
"name": "Plane_Material",
|
||||
"type": "material"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -1655,7 +1655,7 @@ void MetaCoreDrawMeshRendererComponentInspector(MetaCoreEditorContext& editorCon
|
||||
|
||||
if (meshRenderer.MeshSource == MetaCoreMeshSourceKind::Builtin) {
|
||||
int builtinMeshIndex = static_cast<int>(meshRenderer.BuiltinMesh);
|
||||
const char* builtinMeshItems[] = {"Cube"};
|
||||
const char* builtinMeshItems[] = {"Cube", "Plane"};
|
||||
if (ImGui::Combo("Builtin Mesh", &builtinMeshIndex, builtinMeshItems, IM_ARRAYSIZE(builtinMeshItems))) {
|
||||
MetaCoreTrackComponentInspectorEdit(editorContext, "修改检查器属性", false);
|
||||
const MetaCoreBuiltinMeshType builtinMesh = static_cast<MetaCoreBuiltinMeshType>(builtinMeshIndex);
|
||||
@ -5723,7 +5723,12 @@ std::optional<MetaCoreId> MetaCoreBuiltinSceneEditingService::CreateGameObject(
|
||||
|
||||
MetaCoreGameObject object = editorContext.GetScene().CreateGameObject(objectName, parentId);
|
||||
if (withMeshRenderer) {
|
||||
object.AddComponent<MetaCoreMeshRendererComponent>(MetaCoreMeshRendererComponent{});
|
||||
auto& meshRenderer = object.AddComponent<MetaCoreMeshRendererComponent>(MetaCoreMeshRendererComponent{});
|
||||
if (objectName == "Plane") {
|
||||
meshRenderer.BuiltinMesh = MetaCoreBuiltinMeshType::Plane;
|
||||
} else {
|
||||
meshRenderer.BuiltinMesh = MetaCoreBuiltinMeshType::Cube;
|
||||
}
|
||||
object.GetComponent<MetaCoreTransformComponent>().Position = glm::vec3(0.0F, 0.5F, 0.0F);
|
||||
}
|
||||
|
||||
@ -5740,7 +5745,7 @@ std::optional<MetaCoreId> MetaCoreBuiltinSceneEditingService::CreateGameObject(
|
||||
editorContext.AddConsoleMessage(
|
||||
MetaCoreLogLevel::Info,
|
||||
"Scene",
|
||||
withMeshRenderer ? "已创建立方体对象" : "已创建空对象"
|
||||
withMeshRenderer ? (objectName == "Plane" ? "已创建平面对象" : "已创建立方体对象") : "已创建空对象"
|
||||
);
|
||||
return createdObjectId;
|
||||
}
|
||||
|
||||
@ -1907,6 +1907,9 @@ public:
|
||||
if (ImGui::MenuItem("创建立方体")) {
|
||||
(void)MetaCoreCreateObject(editorContext, "Cube", true, std::nullopt);
|
||||
}
|
||||
if (ImGui::MenuItem("创建平面")) {
|
||||
(void)MetaCoreCreateObject(editorContext, "Plane", true, std::nullopt);
|
||||
}
|
||||
ImGui::Separator();
|
||||
if (ImGui::MenuItem("应用当前 Prefab", nullptr, false, editorContext.GetActiveObjectId() != 0)) {
|
||||
(void)MetaCoreApplySelectedPrefabInstance(editorContext);
|
||||
@ -2098,6 +2101,9 @@ private:
|
||||
if (ImGui::MenuItem("创建立方体")) {
|
||||
(void)MetaCoreCreateObject(editorContext, "Cube", true, objectId);
|
||||
}
|
||||
if (ImGui::MenuItem("创建平面")) {
|
||||
(void)MetaCoreCreateObject(editorContext, "Plane", true, objectId);
|
||||
}
|
||||
ImGui::Separator();
|
||||
if (gameObject &&
|
||||
gameObject.HasComponent<MetaCoreMeshRendererComponent>() &&
|
||||
@ -2150,6 +2156,9 @@ private:
|
||||
if (ImGui::MenuItem("创建立方体")) {
|
||||
(void)MetaCoreCreateObject(editorContext, "Cube", true, 0);
|
||||
}
|
||||
if (ImGui::MenuItem("创建平面")) {
|
||||
(void)MetaCoreCreateObject(editorContext, "Plane", true, 0);
|
||||
}
|
||||
ImGui::Separator();
|
||||
if (ImGui::MenuItem("重命名", "F2", false, editorContext.GetActiveObjectId() != 0)) {
|
||||
BeginRename(editorContext, editorContext.GetActiveObjectId());
|
||||
|
||||
@ -401,7 +401,8 @@ public:
|
||||
std::unordered_set<MetaCoreId> activeHostRootIds;
|
||||
for (const auto& renderable : snapshot.Renderables) {
|
||||
if (renderable.MeshSource == MetaCoreMeshSourceKind::Asset ||
|
||||
(renderable.MeshSource == MetaCoreMeshSourceKind::Builtin && renderable.BuiltinMesh == MetaCoreBuiltinMeshType::Cube)) {
|
||||
(renderable.MeshSource == MetaCoreMeshSourceKind::Builtin &&
|
||||
(renderable.BuiltinMesh == MetaCoreBuiltinMeshType::Cube || renderable.BuiltinMesh == MetaCoreBuiltinMeshType::Plane))) {
|
||||
if (renderable.HostRootId != 0) {
|
||||
activeHostRootIds.insert(renderable.HostRootId);
|
||||
}
|
||||
@ -479,8 +480,12 @@ public:
|
||||
if (modelPath.empty() && !renderable.SourceModelPath.empty()) {
|
||||
modelPath = renderable.SourceModelPath;
|
||||
}
|
||||
if (modelPath.empty() && renderable.MeshSource == MetaCoreMeshSourceKind::Builtin && renderable.BuiltinMesh == MetaCoreBuiltinMeshType::Cube) {
|
||||
modelPath = "Assets/Models/box1.glb";
|
||||
if (modelPath.empty() && renderable.MeshSource == MetaCoreMeshSourceKind::Builtin) {
|
||||
if (renderable.BuiltinMesh == MetaCoreBuiltinMeshType::Cube) {
|
||||
modelPath = "Assets/Models/Cube.glb";
|
||||
} else if (renderable.BuiltinMesh == MetaCoreBuiltinMeshType::Plane) {
|
||||
modelPath = "Assets/Models/Plane.glb";
|
||||
}
|
||||
}
|
||||
if (modelPath.empty()) {
|
||||
continue;
|
||||
|
||||
@ -14,7 +14,8 @@ namespace MetaCore {
|
||||
|
||||
MC_ENUM()
|
||||
enum class MetaCoreBuiltinMeshType {
|
||||
Cube
|
||||
Cube, // 立方体网格
|
||||
Plane // 平面网格
|
||||
};
|
||||
|
||||
MC_ENUM()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user