move transform to generated data
This commit is contained in:
@@ -31,7 +31,7 @@ namespace Game
|
||||
if (!Visible) return;
|
||||
auto& rendering = GameRendering::Get();
|
||||
|
||||
Transform.UpdateMatrix();
|
||||
UpdateMatrix(Transform);
|
||||
bgfx::setTransform(Transform.M.M);
|
||||
|
||||
const Model& currentModel = models[ModelH.ModelIdx];
|
||||
@@ -95,6 +95,7 @@ namespace Game
|
||||
needReset |= Tests.Setup(storagePtr, needReset);
|
||||
needReset |= PuzzleTiles.Setup(storagePtr, needReset);
|
||||
needReset |= UIQuads.Setup(storagePtr, needReset);
|
||||
needReset |= LevelEntities.Setup(storagePtr, needReset);
|
||||
|
||||
Puzzle::Setup();
|
||||
|
||||
@@ -214,13 +215,13 @@ namespace Game
|
||||
bx::mtxRotateXYZ(player.FreeflyCamTransform.Rotation.M, player.FreeflyXRot, player.FreeflyYRot, 0.0f);
|
||||
}
|
||||
|
||||
player.FreeflyCamTransform.TranslateLocal({0.0f, 0.0f, inputVec.z});
|
||||
player.FreeflyCamTransform.TranslateLocal({inputVec.x, 0.0f, 0.0f});
|
||||
TranslateLocal(player.FreeflyCamTransform, {0.0f, 0.0f, inputVec.z});
|
||||
TranslateLocal(player.FreeflyCamTransform, {inputVec.x, 0.0f, 0.0f});
|
||||
}
|
||||
else if (player.CameraM == CameraMode::Walk)
|
||||
{
|
||||
player.PlayerCamTransform.TranslateLocal({0.0f, 0.0f, inputVec.z});
|
||||
player.PlayerCamTransform.TranslateLocal({inputVec.x, 0.0f, 0.0f});
|
||||
TranslateLocal(player.PlayerCamTransform, {0.0f, 0.0f, inputVec.z});
|
||||
TranslateLocal(player.PlayerCamTransform, {inputVec.x, 0.0f, 0.0f});
|
||||
player.PlayerCamTransform.Position.y = 3.0f;
|
||||
|
||||
player.WalkXRot += rotInput.x;
|
||||
@@ -261,12 +262,12 @@ namespace Game
|
||||
Cubes.Get(PlayerOutsideViewCube).EData.Visible = isFreefly;
|
||||
if (isFreefly)
|
||||
{
|
||||
player.FreeflyCamTransform.UpdateMatrix();
|
||||
UpdateMatrix(player.FreeflyCamTransform);
|
||||
bgfx::setViewTransform(viewId, player.FreeflyCamTransform.MI.M, &player.Projection.M[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.PlayerCamTransform.UpdateMatrix();
|
||||
UpdateMatrix(player.PlayerCamTransform);
|
||||
bgfx::setViewTransform(viewId, player.PlayerCamTransform.MI.M, &player.Projection.M[0]);
|
||||
}
|
||||
|
||||
@@ -325,15 +326,15 @@ namespace Game
|
||||
auto& visuals = Puzzle::GetStaticPuzzleData().Visuals;
|
||||
|
||||
Transform& camTransform = GetInstance().Player.PlayerCamTransform;
|
||||
camTransform.UpdateMatrix();
|
||||
Vec3 cameraPos = camTransform.GetPosition();
|
||||
UpdateMatrix(camTransform);
|
||||
Vec3 cameraPos = camTransform.Position;
|
||||
|
||||
Transform boardTransform;
|
||||
boardTransform.Rotation = camTransform.Rotation;
|
||||
Vec3 fw = {camTransform.M.M[8], camTransform.M.M[9], camTransform.M.M[10]};
|
||||
Vec3 pos = cameraPos;
|
||||
pos += fw * 1.0f;
|
||||
boardTransform.SetPosition(pos);
|
||||
boardTransform.Position = pos;
|
||||
|
||||
Vec2 mousePos = GetMousePos();
|
||||
mousePos.x = mousePos.x / window.WindowWidth;
|
||||
@@ -348,7 +349,7 @@ namespace Game
|
||||
mousePosCam4.z /= mousePosCam4.w,
|
||||
};
|
||||
|
||||
Vec3 mousePosWorld = camTransform.LocalToGlobalPoint(mousePosCam);
|
||||
Vec3 mousePosWorld = LocalToGlobalPoint(camTransform, mousePosCam);
|
||||
|
||||
for (int8_t y = 0; y < Data.HeightTiles / Puzzle::Config::CardSize; ++y)
|
||||
{
|
||||
@@ -376,7 +377,7 @@ namespace Game
|
||||
{
|
||||
cardPos = {x * Puzzle::Config::CardScaleWorld, -5.0f, y * Puzzle::Config::CardScaleWorld};
|
||||
}
|
||||
tile.EData.Transform.SetPosition(cardPos);
|
||||
tile.EData.Transform.Position = cardPos;
|
||||
bx::mtxRotateY(tile.EData.Transform.Rotation.M, card.Rotation * bx::kPi * 0.5f);
|
||||
|
||||
// Quad
|
||||
@@ -387,19 +388,19 @@ namespace Game
|
||||
: Vec4{1.0f, 1.0f, 1.0f, 1.0f};
|
||||
|
||||
quad.EData.Transform = boardTransform;
|
||||
quad.EData.Transform.TranslateLocal(Vec3{(float)card.Position.X, (float)card.Position.Y, 0.0f} *
|
||||
UICardOffset);
|
||||
TranslateLocal(quad.EData.Transform,
|
||||
Vec3{(float)card.Position.X, (float)card.Position.Y, 0.0f} * UICardOffset);
|
||||
quad.EData.Transform.Scale = {0.1f, 0.1f, 0.1f};
|
||||
quad.EData.Transform.Rotate(Vec3{bx::kPi * 0.5f, 0.0f, (1.0f - card.Rotation * 0.5f) * bx::kPi});
|
||||
Rotate(quad.EData.Transform, Vec3{bx::kPi * 0.5f, 0.0f, (1.0f - card.Rotation * 0.5f) * bx::kPi});
|
||||
|
||||
Vec3 quadPosWorld = quad.EData.Transform.GetPosition();
|
||||
Vec3 quadXWorld = quad.EData.Transform.LocalToGlobalPoint({1, 0, 0});
|
||||
Vec3 quadZWorld = quad.EData.Transform.LocalToGlobalPoint({0, 0, 1});
|
||||
Vec3 quadPosWorld = quad.EData.Transform.Position;
|
||||
Vec3 quadXWorld = LocalToGlobalPoint(quad.EData.Transform, {1, 0, 0});
|
||||
Vec3 quadZWorld = LocalToGlobalPoint(quad.EData.Transform, {0, 0, 1});
|
||||
Vec3 intersectPos;
|
||||
if (RayPlaneIntersect(
|
||||
camTransform.GetPosition(), mousePosWorld, quadPosWorld, quadXWorld, quadZWorld, intersectPos))
|
||||
camTransform.Position, mousePosWorld, quadPosWorld, quadXWorld, quadZWorld, intersectPos))
|
||||
{
|
||||
Vec3 quadSpaceIntersect = quad.EData.Transform.GlobalToLocalPoint(intersectPos);
|
||||
Vec3 quadSpaceIntersect = GlobalToLocalPoint(quad.EData.Transform, intersectPos);
|
||||
if (isValid && quadSpaceIntersect.x >= -1.0f && quadSpaceIntersect.x <= 1.0f &&
|
||||
quadSpaceIntersect.z >= -1.0f && quadSpaceIntersect.z <= 1.0f)
|
||||
{
|
||||
@@ -421,9 +422,9 @@ namespace Game
|
||||
{
|
||||
Vec3 dragPos = intersectPos;
|
||||
dragPos -= fw * 0.01f;
|
||||
quad.EData.Transform.SetPosition(dragPos);
|
||||
quad.EData.Transform.Position = dragPos;
|
||||
|
||||
Vec3 boardPos = boardTransform.GlobalToLocalPoint(intersectPos);
|
||||
Vec3 boardPos = GlobalToLocalPoint(boardTransform, intersectPos);
|
||||
Vec3 boardTilePos = boardPos / UICardOffset;
|
||||
int32_t xPos = (int32_t)bx::round(boardTilePos.x);
|
||||
int32_t yPos = (int32_t)bx::round(boardTilePos.y);
|
||||
|
||||
Reference in New Issue
Block a user