#include #include #include #include #include #include #include namespace ia::iae::game { RefPtr scene; RefPtr g_player; PhysicsComponent* g_playerPhysics; VOID Game::Initialize() { scene = Engine::CreateScene(); scene->YSortingEnabled() = true; g_player = MakeRefPtr(); { const auto t = g_player->AddComponent(); t->AddAnimation({ .ShouldLoop = true, .Keys = { SpriteRendererComponent::AnimationKeyFrame { .Scale = {0.25f, 0.25f}, .ColorOverlay = {0.0f, 0.75f, 0.0f, 1.0f} } }, }); t->BakeAnimations(); } g_playerPhysics = g_player->AddComponent(); g_playerPhysics->AddCollider({ .IsTrigger = false, .Position = { 0.0f, 0.0f, }, .Size = { 25.0f, 25.0f } }); g_player->Tags() = NODE_TAG_PLAYER; g_player->SetLocalPosition({200, 300}); const auto obstacle = MakeRefPtr(); { const auto t = obstacle->AddComponent(); t->AddAnimation({ .ShouldLoop = true, .Keys = { SpriteRendererComponent::AnimationKeyFrame { .Scale = {1.0f, 0.5f}, .ColorOverlay = {0.75f, 0.0f, 0.0f, 1.0f} } }, }); t->BakeAnimations(); } const auto obstaclePhysics = obstacle->AddComponent(); obstaclePhysics->AddCollider({ .IsTrigger = false, .Position = { 0.0f, 0.0f, }, .Size = { 100.0f, 50.0f } }); obstacle->Tags() = NODE_TAG_GROUND; obstacle->SetLocalSortIndex(20); obstacle->SetLocalPosition({200, 400}); scene->AddNode(g_player); scene->AddNode(obstacle); Engine::ChangeScene(scene.get()); } VOID Game::Terminate() { } VOID Game::Update() { const auto d = Input::GetDirectionalInput(); g_playerPhysics->Move(d); } }