Add model and GaussianSplat asset pipelines
This commit is contained in:
97
tests/Resources/Model/test_model.cpp
Normal file
97
tests/Resources/Model/test_model.cpp
Normal file
@@ -0,0 +1,97 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include <XCEngine/Resources/Model/Model.h>
|
||||
|
||||
using namespace XCEngine::Resources;
|
||||
using namespace XCEngine::Math;
|
||||
|
||||
namespace {
|
||||
|
||||
TEST(Model, DefaultConstructor) {
|
||||
Model model;
|
||||
EXPECT_EQ(model.GetType(), ResourceType::Model);
|
||||
EXPECT_FALSE(model.HasRootNode());
|
||||
EXPECT_EQ(model.GetRootNodeIndex(), kInvalidModelNodeIndex);
|
||||
EXPECT_TRUE(model.GetNodes().Empty());
|
||||
EXPECT_TRUE(model.GetMeshBindings().Empty());
|
||||
EXPECT_TRUE(model.GetMaterialBindings().Empty());
|
||||
EXPECT_EQ(model.GetMemorySize(), 0u);
|
||||
}
|
||||
|
||||
TEST(Model, AddGraphDataUpdatesState) {
|
||||
Model model;
|
||||
|
||||
IResource::ConstructParams params;
|
||||
params.name = "robot.fbx";
|
||||
params.path = "Library/Artifacts/aa/main.xcmodel";
|
||||
params.guid = ResourceGUID::Generate(params.path);
|
||||
model.Initialize(params);
|
||||
|
||||
model.SetRootNodeIndex(0u);
|
||||
|
||||
ModelNode rootNode;
|
||||
rootNode.name = "Root";
|
||||
rootNode.parentIndex = -1;
|
||||
rootNode.meshBindingStart = 0u;
|
||||
rootNode.meshBindingCount = 1u;
|
||||
rootNode.localPosition = Vector3(1.0f, 2.0f, 3.0f);
|
||||
rootNode.localScale = Vector3(1.0f, 1.5f, 2.0f);
|
||||
model.AddNode(rootNode);
|
||||
|
||||
ModelMeshBinding meshBinding;
|
||||
meshBinding.meshLocalID = 11u;
|
||||
meshBinding.materialBindingStart = 0u;
|
||||
meshBinding.materialBindingCount = 2u;
|
||||
model.AddMeshBinding(meshBinding);
|
||||
|
||||
ModelMaterialBinding materialBinding0;
|
||||
materialBinding0.slotIndex = 0u;
|
||||
materialBinding0.materialLocalID = 21u;
|
||||
model.AddMaterialBinding(materialBinding0);
|
||||
|
||||
ModelMaterialBinding materialBinding1;
|
||||
materialBinding1.slotIndex = 1u;
|
||||
materialBinding1.materialLocalID = 22u;
|
||||
model.AddMaterialBinding(materialBinding1);
|
||||
|
||||
ASSERT_TRUE(model.HasRootNode());
|
||||
EXPECT_EQ(model.GetRootNodeIndex(), 0u);
|
||||
ASSERT_EQ(model.GetNodes().Size(), 1u);
|
||||
EXPECT_EQ(model.GetNodes()[0].name, "Root");
|
||||
EXPECT_EQ(model.GetNodes()[0].localPosition, Vector3(1.0f, 2.0f, 3.0f));
|
||||
EXPECT_EQ(model.GetNodes()[0].localScale, Vector3(1.0f, 1.5f, 2.0f));
|
||||
ASSERT_EQ(model.GetMeshBindings().Size(), 1u);
|
||||
EXPECT_EQ(model.GetMeshBindings()[0].meshLocalID, 11u);
|
||||
ASSERT_EQ(model.GetMaterialBindings().Size(), 2u);
|
||||
EXPECT_EQ(model.GetMaterialBindings()[1].materialLocalID, 22u);
|
||||
EXPECT_GT(model.GetMemorySize(), 0u);
|
||||
}
|
||||
|
||||
TEST(Model, ReleaseClearsGraphData) {
|
||||
Model model;
|
||||
|
||||
IResource::ConstructParams params;
|
||||
params.name = "robot.fbx";
|
||||
params.path = "Library/Artifacts/aa/main.xcmodel";
|
||||
params.guid = ResourceGUID::Generate(params.path);
|
||||
model.Initialize(params);
|
||||
|
||||
model.SetRootNodeIndex(0u);
|
||||
|
||||
ModelNode node;
|
||||
node.name = "Root";
|
||||
model.AddNode(node);
|
||||
model.AddMeshBinding(ModelMeshBinding{ 3u, 0u, 0u });
|
||||
model.AddMaterialBinding(ModelMaterialBinding{ 0u, 7u });
|
||||
|
||||
model.Release();
|
||||
|
||||
EXPECT_FALSE(model.IsValid());
|
||||
EXPECT_FALSE(model.HasRootNode());
|
||||
EXPECT_TRUE(model.GetNodes().Empty());
|
||||
EXPECT_TRUE(model.GetMeshBindings().Empty());
|
||||
EXPECT_TRUE(model.GetMaterialBindings().Empty());
|
||||
EXPECT_EQ(model.GetMemorySize(), 0u);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
Reference in New Issue
Block a user