fix mesh indexing
This commit is contained in:
@@ -24,7 +24,8 @@ namespace Game
|
||||
{
|
||||
void EntityRenderData::Render(const Model* models, const Material* materials)
|
||||
{
|
||||
if (!Generated::IsValid(ModelH) || MaterialHandle == UINT16_MAX) return;
|
||||
if (models == nullptr || materials == nullptr) return;
|
||||
if (!Generated::IsValid(ModelH) || MaterialHandle == EMaterial::UNDEFINED) return;
|
||||
if (!Visible) return;
|
||||
auto& rendering = GameRendering::Get();
|
||||
|
||||
@@ -32,7 +33,11 @@ namespace Game
|
||||
bgfx::setTransform(Transform.M.M);
|
||||
|
||||
const Model& currentModel = models[ModelH.ModelIdx];
|
||||
const Material& currentMaterial = materials[MaterialHandle];
|
||||
const Material& currentMaterial = materials[(uint16_t)MaterialHandle];
|
||||
|
||||
if (!isValid(currentModel.IndexBuffer) || !isValid(currentModel.VertexBuffer)) return;
|
||||
if (!isValid(currentMaterial.Shader)) return;
|
||||
|
||||
bgfx::setVertexBuffer(0, currentModel.VertexBuffer);
|
||||
bgfx::setIndexBuffer(currentModel.IndexBuffer);
|
||||
bgfx::setState(currentMaterial.State);
|
||||
@@ -79,7 +84,6 @@ namespace Game
|
||||
needReset |= PuzzleTiles.Setup(storagePtr, needReset);
|
||||
needReset |= UIQuads.Setup(storagePtr, needReset);
|
||||
|
||||
UIQuads.IsEnabled = false;
|
||||
Tests.IsEnabled = false;
|
||||
Cubes.IsEnabled = false;
|
||||
|
||||
@@ -269,6 +273,8 @@ namespace Game
|
||||
bgfx::setViewTransform(viewId, player.PlayerCamTransform.M.M, proj);
|
||||
}
|
||||
|
||||
bgfx::touch(viewId);
|
||||
|
||||
Cubes.Render(models, materials);
|
||||
Tests.Render(models, materials);
|
||||
PuzzleTiles.Render(models, materials);
|
||||
@@ -277,7 +283,7 @@ namespace Game
|
||||
|
||||
void Cube::Setup()
|
||||
{
|
||||
EData.MaterialHandle = 0;
|
||||
EData.MaterialHandle = EMaterial::Default;
|
||||
EData.ModelH = GameRendering::Get().GetModelHandleFromPath("models/cube.gltf");
|
||||
}
|
||||
|
||||
@@ -300,7 +306,7 @@ namespace Game
|
||||
|
||||
void TestEntity::Setup()
|
||||
{
|
||||
EData.MaterialHandle = 0;
|
||||
EData.MaterialHandle = EMaterial::Default;
|
||||
EData.ModelH = GameRendering::Get().GetModelHandleFromPath("models/zurg.gltf");
|
||||
|
||||
EData.Transform.Position = {0.0f, 0.0f, 0.0f};
|
||||
@@ -313,8 +319,11 @@ namespace Game
|
||||
{
|
||||
TileHandles[i] = level.PuzzleTiles.New();
|
||||
auto& tile = level.PuzzleTiles.Get(TileHandles[i]);
|
||||
tile.EData.MaterialHandle = 0;
|
||||
tile.EData.MaterialHandle = EMaterial::Default;
|
||||
UIPlacedCards[i] = level.UIQuads.New();
|
||||
auto& quad = level.UIQuads.Get(UIPlacedCards[i]);
|
||||
quad.EData.ModelH = GameRendering::Get().GetModelHandleFromPath("models/plane.glb");
|
||||
quad.EData.MaterialHandle = EMaterial::Default;
|
||||
}
|
||||
IsSetup = true;
|
||||
LOG("finished setup!");
|
||||
@@ -352,8 +361,9 @@ namespace Game
|
||||
tile.EData.Transform.SetPosition(cardPos);
|
||||
bx::mtxRotateY(tile.EData.Transform.Rotation.M, card.Rotation * bx::kPi * 0.5f);
|
||||
|
||||
Vec3 fw = {0, -1, 0};
|
||||
quad.EData.Transform.SetPosition(fw);
|
||||
Vec3 fw = {0, 0, 0};
|
||||
Vec3 pos = {camTransform.Position.x, camTransform.Position.y, camTransform.Position.z};
|
||||
quad.EData.Transform.SetPosition(pos);
|
||||
quad.EData.Transform.Rotation = {};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user