#include "LifeWorldEditor.h" #include #include #include #include #include #include #include #include LifeWorldEditor::LifeWorldEditor(void){ } LifeWorldEditor::~LifeWorldEditor(void){ } int32 LifeWorldEditor::Load(){ int32 window_width = 1024; int32 window_height = 600; main_window = new RenderWindowWin(); main_window->SetSize(window_width, window_height); main_window->CenterWindow(); game = new LifeGame::Game(); game->SetResourcesPath(STR("D:\\!development\\Programming\\Projects\\Data\\")); game->InitInput(window_width, window_height, main_window); game->InitVideo(LifeGraphics::RT_DIRECTX_11, window_width, window_height); main_out = game->GetGraphics()->CreateRenderOutput(main_window); editor_scene = new LifeGame::World(game, new LifeGame::IPhysicsWorld(), main_out); game->GetInput()->AddListener(editor_scene); LifeGUI::GUIOverlay* ovrl = editor_scene->GetGUI()->GetOverlay("MainGui", true); editor_scene->GetGUI()->SwitchOverlay("MainGui"); LifeGUI::GUIToolStrip* main_menu = new LifeGUI::GUIToolStrip(); main_menu->SetDock(LifeGUI::DOCK_TOP); main_menu->SetHeight(20); ovrl->AddChild(main_menu); LifeGUI::GUIToolStripMenu* menu1 = new LifeGUI::GUIToolStripMenu(); menu1->SetCaption("Trololo"); menu1->GetMenu()->AddItem("OMFG",false); main_menu->AddItem(menu1); LifeGUI::GUISplitPanel* split_container = new LifeGUI::GUISplitPanel(); split_container->SetDock(LifeGUI::DOCK_FILL); split_container->SetSplitterHorisontal(false); ovrl->AddChild(split_container); LifeGUI::GUIRenderWindow* wnd = new LifeGUI::GUIRenderWindow(); wnd->GetGUIWindow()->SetDock(LifeGUI::DOCK_FILL); split_container->GetContainer1()->AddChild(wnd->GetGUIWindow()); LifeGame::GUIOutput* scene_out = LifeGame::GUIOutput::Create(wnd, game->GetGraphics()->GetRenderer()); wnd->GetGUIWindow()->SetPicture( LifeGUI::GUIManager::me()->GetDataManager()->getImage("alpha.bmp")); game_scene = new LifeGame::World(game, new LifeGame::IPhysicsWorld(), scene_out); wnd->GetInputSystem()->AddListener(game_scene); LifeGUI::GUIOverlay* hud = game_scene->GetGUI()->GetOverlay("HUD", true); game_scene->GetGUI()->SwitchOverlay("HUD"); LifeGUI::GUIToolStrip* main_game_menu = new LifeGUI::GUIToolStrip(); main_game_menu->SetDock(LifeGUI::DOCK_TOP); main_game_menu->SetHeight(20); hud->AddChild(main_game_menu); LifeGUI::GUIToolStripMenu* menu = new LifeGUI::GUIToolStripMenu(); menu->SetCaption("Trololo"); menu->GetMenu()->AddItem("OMFG",false); main_game_menu->AddItem(menu); /* LifeGame::Player* player = (LifeGame::Player*)LifeGame::EntityFactory::me()->BuildEntity(AS_STRING("root/Data/Entities/thing.xml"), game); player->GetTransform()->SetPosition(LifeMath::float3(0.3f,0.5f,0.2f)); player->GetTransform()->SetRotation(LifeMath::float3(0.0f,1.0f,0.0f), 1.0f); game_scene->AddEntity(player);*/ LifeGraphics::Light* l = new LifeGraphics::Light(LifeGraphics::LT_POINT); l->setRange(20); game_scene->GetGraphicsScene()->PushNode(l); l->getTransform()->SetPosition(LifeMath::float3(4,0.5f,-4.0f)); l->color = LifeMath::float3(1,1,1); l->intensity = 1.0f; LifeGraphics::IObjectMesh* tower = new LifeGraphics::IObjectMesh("root/Data/Objects/Tower_opt.vmf"); game_scene->GetGraphicsScene()->PushNode(tower); tower->getTransform()->SetPosition(LifeMath::float3(0,0,0)); LifeGame::GameCamera* mainCamera = new LifeGame::GameCamera(1.33f); mainCamera->GetTransform()->SetPosition(LifeMath::float3(0.3f,0.5f,-0.5f)); mainCamera->getCam()->setDirection(LifeMath::float3(0,0.5f, 0)); //mainCamera->GetTransform()->SetRotation(LifeMath::float3(0.0f,1.0f,0.0f), 1.0f); game_scene->AddEntity(mainCamera); game_scene->SetMainCamera(mainCamera); LifeGame::ActionSystem::me()->AddAction("MoveForward"); LifeGame::ActionSystem::me()->AddAction("MoveBackward"); LifeGame::ActionSystem::me()->AddAction("MoveLeft"); LifeGame::ActionSystem::me()->AddAction("MoveRight"); LifeGame::ActionSystem::me()->AddAction("RotateYaw"); LifeGame::ActionSystem::me()->AddAction("RotatePitch"); LifeGame::InputActionProvider* input_action = new LifeGame::InputActionProvider(); input_action->Map(LifeCore::KEY_W, LifeCore::KA_HOLD, "MoveForward"); input_action->Map(LifeCore::KEY_A, LifeCore::KA_HOLD, "MoveLeft"); input_action->Map(LifeCore::KEY_D, LifeCore::KA_HOLD, "MoveRight"); input_action->Map(LifeCore::KEY_S, LifeCore::KA_HOLD, "MoveBackward"); input_action->Map(LifeCore::MOUSE_AXIS_X, "RotateYaw"); input_action->Map(LifeCore::MOUSE_AXIS_Y, "RotatePitch"); game_scene->AddActionProvider(input_action); input_action->SetInputSystem(wnd->GetInputSystem()); LifeGame::Entity* editor_player = new LifeGame::Entity(); LifeGame::GOCCameraFree* editor_player_controller = new LifeGame::GOCCameraFree(); editor_player_controller->SetCamera(mainCamera); editor_player->AddLogicEntity(editor_player_controller); game_scene->AddEntity(editor_player); LifeGame::ActionSystem::me()->GetAction("MoveForward")->AddListener(editor_player_controller); LifeGame::ActionSystem::me()->GetAction("MoveLeft")->AddListener(editor_player_controller); LifeGame::ActionSystem::me()->GetAction("MoveBackward")->AddListener(editor_player_controller); LifeGame::ActionSystem::me()->GetAction("MoveRight")->AddListener(editor_player_controller); LifeGame::ActionSystem::me()->GetAction("RotateYaw")->AddListener(editor_player_controller); LifeGame::ActionSystem::me()->GetAction("RotatePitch")->AddListener(editor_player_controller); return 0; } uint32 LifeWorldEditor::Run(){ while(true){ game->GetInput()->Capture(); game->processWorld(game_scene); game->processWorld(editor_scene); Sleep(1); } return 0; }