#include #include #include #include #include #include #include namespace ia::iae::game { RefPtr scene; RefPtr g_player; PhysicsBody2DComponent* g_playerPhysicsBody{}; 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_playerPhysicsBody = g_player->AddComponent(); g_playerPhysicsBody->IsDynamic() = true; const auto collider = g_player->AddComponent(); collider->Rect() = { 0, 0, g_player->DrawnSize().x, g_player->DrawnSize().y, }; collider->IsDebugDrawEnabled() = true; } g_player->Tags() = NODE_TAG_PLAYER; g_player->SetLocalPosition({200, 200}); const auto obstacle = MakeRefPtr(); { const auto t = obstacle->AddComponent(); t->AddAnimation({ .ShouldLoop = true, .Keys = { SpriteRendererComponent::AnimationKeyFrame { .Scale = {3.0f, 0.5f}, .ColorOverlay = {0.75f, 0.0f, 0.0f, 1.0f} } }, }); t->BakeAnimations(); } { obstacle->AddComponent(); const auto collider = obstacle->AddComponent(); collider->Rect() = { 0, 0, obstacle->DrawnSize().x, obstacle->DrawnSize().y }; collider->IsDebugDrawEnabled() = true; } 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() { if(Input::WasKeyPressed(Input::KEY_SPACE)) g_playerPhysicsBody->Jump(200.0f); g_playerPhysicsBody->SetVelocityX(Input::GetDirectionalInput().x * 100.0f); } }