add NewLevel action
This commit is contained in:
parent
8dd179e784
commit
f2f4c3b036
|
|
@ -3,6 +3,7 @@
|
||||||
#include <NazaraEditor/Core/Core.hpp>
|
#include <NazaraEditor/Core/Core.hpp>
|
||||||
#include <NazaraEditor/Core/Application/Action.hpp>
|
#include <NazaraEditor/Core/Application/Action.hpp>
|
||||||
#include <NazaraEditor/Core/Application/ActionStack.hpp>
|
#include <NazaraEditor/Core/Application/ActionStack.hpp>
|
||||||
|
#include <NazaraEditor/Core/Application/Actions/EditorAction_Level_New.hpp>
|
||||||
#include <NazaraEditor/Core/Application/Actions/EditorAction_Log_Clear.hpp>
|
#include <NazaraEditor/Core/Application/Actions/EditorAction_Log_Clear.hpp>
|
||||||
#include <NazaraEditor/Core/Application/Actions/EditorAction_Log_CopyToClipboard.hpp>
|
#include <NazaraEditor/Core/Application/Actions/EditorAction_Log_CopyToClipboard.hpp>
|
||||||
#include <NazaraEditor/Core/Application/BaseApplication.hpp>
|
#include <NazaraEditor/Core/Application/BaseApplication.hpp>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <NazaraEditor/Core/Application/Action.hpp>
|
||||||
|
|
||||||
|
namespace Nz
|
||||||
|
{
|
||||||
|
class NAZARAEDITOR_CORE_API EditorAction_Level_New final
|
||||||
|
: public EditorAction
|
||||||
|
{
|
||||||
|
EDITORACTION_BODY(EditorAction_Level_New, false);
|
||||||
|
|
||||||
|
public:
|
||||||
|
void Execute() override;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -39,10 +39,11 @@ namespace Nz
|
||||||
|
|
||||||
void SetResourceFolder(const std::filesystem::path& path) { m_resourceFolder = path; }
|
void SetResourceFolder(const std::filesystem::path& path) { m_resourceFolder = path; }
|
||||||
std::filesystem::path GetResourceFolder() const { return m_resourceFolder; }
|
std::filesystem::path GetResourceFolder() const { return m_resourceFolder; }
|
||||||
|
|
||||||
Nz::Level& GetLevel();
|
Nz::Level& GetLevel();
|
||||||
bool NewLevel();
|
virtual bool NewLevel();
|
||||||
bool CloseLevel();
|
virtual bool CloseLevel() { return false; }
|
||||||
bool OpenLevel(const std::filesystem::path& path);
|
virtual bool OpenLevel(const std::filesystem::path& /*path*/) { return false; }
|
||||||
|
|
||||||
entt::handle CreateEntity(const std::string& name);
|
entt::handle CreateEntity(const std::string& name);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ namespace NzEditor
|
||||||
class Application
|
class Application
|
||||||
: public Nz::EditorBaseApplication
|
: public Nz::EditorBaseApplication
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
virtual bool NewLevel() override;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
#include <NazaraEditor/Core/Application/Actions/EditorAction_Level_New.hpp>
|
||||||
|
#include <NazaraEditor/Core/Application/BaseApplication.hpp>
|
||||||
|
|
||||||
|
namespace Nz
|
||||||
|
{
|
||||||
|
void EditorAction_Level_New::Execute()
|
||||||
|
{
|
||||||
|
Nz::EditorBaseApplication::Instance()->NewLevel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -81,6 +81,15 @@ namespace Nz
|
||||||
bool bRes = m_level.CreateNewLevel();
|
bool bRes = m_level.CreateNewLevel();
|
||||||
if (bRes)
|
if (bRes)
|
||||||
{
|
{
|
||||||
|
// configure camera
|
||||||
|
auto camera = CreateEntity("Camera");
|
||||||
|
auto& cmp = camera.get<Nz::EditorNameComponent>();
|
||||||
|
//cmp.SetFlags(EditorEntityFlags_Hidden);
|
||||||
|
|
||||||
|
auto& cameraComponent = camera.emplace<Nz::CameraComponent>(m_windowSwapchain.get(), Nz::ProjectionType::Perspective);
|
||||||
|
cameraComponent.UpdateFOV(70.f);
|
||||||
|
cameraComponent.UpdateClearColor(Nz::Color(0.46f, 0.48f, 0.84f, 1.f));
|
||||||
|
|
||||||
OnLevelChanged(m_level);
|
OnLevelChanged(m_level);
|
||||||
}
|
}
|
||||||
return bRes;
|
return bRes;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
#include <NazaraEditor/Editor/Application.hpp>
|
||||||
|
|
||||||
|
namespace NzEditor
|
||||||
|
{
|
||||||
|
bool Application::NewLevel()
|
||||||
|
{
|
||||||
|
bool bResult = EditorBaseApplication::NewLevel();
|
||||||
|
if (!bResult)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
{
|
||||||
|
auto directional = CreateEntity("SunLight");
|
||||||
|
Nz::LightComponent& lightComponent = directional.emplace<Nz::LightComponent>();
|
||||||
|
Nz::DirectionalLight& light = lightComponent.AddLight<Nz::DirectionalLight>();
|
||||||
|
light.UpdateRotation(Nz::EulerAnglesf(-45.f, 0.f, 0.f));
|
||||||
|
}
|
||||||
|
{
|
||||||
|
auto cube = CreateEntity("Cube");
|
||||||
|
Nz::GraphicsComponent& graphicsComponent = cube.emplace<Nz::GraphicsComponent>();
|
||||||
|
|
||||||
|
std::shared_ptr<Nz::GraphicalMesh> boxMesh = Nz::GraphicalMesh::Build(Nz::Primitive::Box(Nz::Vector3f(4.f), Nz::Vector3ui::Zero(), Nz::Matrix4f::Scale(Nz::Vector3f(-1.f)), Nz::Rectf(0.f, 0.f, 2.f, 2.f)));
|
||||||
|
|
||||||
|
std::shared_ptr<Nz::MaterialInstance> boxMat = Nz::MaterialInstance::Instantiate(Nz::MaterialType::Phong);
|
||||||
|
boxMat->DisablePass("ShadowPass");
|
||||||
|
boxMat->UpdatePassesStates([&](Nz::RenderStates& states)
|
||||||
|
{
|
||||||
|
states.frontFace = Nz::FrontFace::Clockwise;
|
||||||
|
});
|
||||||
|
std::shared_ptr<Nz::Model> boxModel = std::make_shared<Nz::Model>(std::move(boxMesh));
|
||||||
|
boxModel->SetMaterial(0, std::move(boxMat));
|
||||||
|
graphicsComponent.AttachRenderable(boxModel);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -46,6 +46,14 @@ int WinMain(int argc, char* argv[])
|
||||||
Nz::TextureParams texParams;
|
Nz::TextureParams texParams;
|
||||||
texParams.renderDevice = Nz::Graphics::Instance()->GetRenderDevice();
|
texParams.renderDevice = Nz::Graphics::Instance()->GetRenderDevice();
|
||||||
texParams.loadFormat = Nz::PixelFormat::RGBA8_SRGB;
|
texParams.loadFormat = Nz::PixelFormat::RGBA8_SRGB;
|
||||||
|
|
||||||
|
app.RegisterAction<Nz::EditorAction_Level_New>({
|
||||||
|
.description = "Create new level",
|
||||||
|
.path = "File|Level|New",
|
||||||
|
.category = "General",
|
||||||
|
.shortcut = Nz::Shortcut::Create(Nz::Keyboard::VKey::N, true, true),
|
||||||
|
.icon = Nz::Texture::LoadFromFile(app.GetResourceFolder() / "file_new.png", texParams)
|
||||||
|
});
|
||||||
app.RegisterAction<Nz::EditorAction_Log_Clear>({
|
app.RegisterAction<Nz::EditorAction_Log_Clear>({
|
||||||
.description = "Clears log output",
|
.description = "Clears log output",
|
||||||
.path = "Clear",
|
.path = "Clear",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue