Files

151 lines
6.0 KiB
C++
Raw Permalink Normal View History

2025-05-13 02:46:21 +03:00
#include "LifeWorldEditor.h"
#include <GUIMenu.h>
#include <GUIToolStrip.h>
#include <GUIToolStripMenu.h>
#include <GUISplitPanel.h>
#include <GUIOutput.h>
#include <EntityFactory.h>
#include <InputActionProvider.h>
#include <GOCCameraFree.h>
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;
}