Files
WickedEngine/Editor/DecalWindow.cpp
T
turanszkij 2314783e55 updates
2018-09-01 21:35:19 +01:00

82 lines
1.9 KiB
C++

#include "stdafx.h"
#include "DecalWindow.h"
using namespace wiECS;
using namespace wiSceneSystem;
DecalWindow::DecalWindow(wiGUI* gui) : GUI(gui)
{
assert(GUI && "Invalid GUI!");
float screenW = (float)wiRenderer::GetDevice()->GetScreenWidth();
float screenH = (float)wiRenderer::GetDevice()->GetScreenHeight();
decalWindow = new wiWindow(GUI, "Decal Window");
decalWindow->SetSize(XMFLOAT2(400, 300));
decalWindow->SetEnabled(false);
GUI->AddWidget(decalWindow);
float x = 200;
float y = 0;
opacitySlider = new wiSlider(0, 1, 1, 100000, "Opacity: ");
opacitySlider->SetSize(XMFLOAT2(100, 30));
opacitySlider->SetPos(XMFLOAT2(x, y += 30));
opacitySlider->OnSlide([&](wiEventArgs args) {
DecalComponent* decal = wiRenderer::GetScene().decals.GetComponent(entity);
if (decal != nullptr)
{
decal->color.w = args.fValue;
}
});
decalWindow->AddWidget(opacitySlider);
emissiveSlider = new wiSlider(0, 100, 0, 100000, "Emissive: ");
emissiveSlider->SetSize(XMFLOAT2(100, 30));
emissiveSlider->SetPos(XMFLOAT2(x, y += 30));
emissiveSlider->OnSlide([&](wiEventArgs args) {
DecalComponent* decal = wiRenderer::GetScene().decals.GetComponent(entity);
if (decal != nullptr)
{
decal->emissive = args.fValue;
}
});
decalWindow->AddWidget(emissiveSlider);
decalWindow->Translate(XMFLOAT3(30, 30, 0));
decalWindow->SetVisible(false);
SetEntity(INVALID_ENTITY);
}
DecalWindow::~DecalWindow()
{
decalWindow->RemoveWidgets(true);
GUI->RemoveWidget(decalWindow);
SAFE_DELETE(decalWindow);
}
void DecalWindow::SetEntity(Entity entity)
{
if (this->entity == entity)
return;
this->entity = entity;
const DecalComponent* decal = wiRenderer::GetScene().decals.GetComponent(entity);
if (decal != nullptr)
{
opacitySlider->SetValue(decal->color.w);
emissiveSlider->SetValue(decal->emissive);
decalWindow->SetEnabled(true);
}
else
{
decalWindow->SetEnabled(false);
}
}