Adding a method of rendering GUI's that avoid the whole throwing raw
data around everywhere thing I had going on before
This commit is contained in:
@@ -11,6 +11,7 @@
|
|||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
#include "Logger.h"
|
#include "Logger.h"
|
||||||
#include "map/Map.h"
|
#include "map/Map.h"
|
||||||
|
#include "Gui.h"
|
||||||
|
|
||||||
#ifdef linux
|
#ifdef linux
|
||||||
#include <CL/cl.h>
|
#include <CL/cl.h>
|
||||||
@@ -86,7 +87,7 @@ struct device_info {
|
|||||||
|
|
||||||
struct PackedData;
|
struct PackedData;
|
||||||
|
|
||||||
class CLCaster {
|
class CLCaster : private Gui {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@@ -152,6 +153,11 @@ public:
|
|||||||
void test_edit_viewport(int width, int height, float v_fov, float h_fov);
|
void test_edit_viewport(int width, int height, float v_fov, float h_fov);
|
||||||
|
|
||||||
|
|
||||||
|
// ============= GUI ==============
|
||||||
|
virtual void render_gui() override;
|
||||||
|
virtual void update_gui() override;
|
||||||
|
// ================================
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -4,8 +4,9 @@
|
|||||||
#include "util.hpp"
|
#include "util.hpp"
|
||||||
#include "Pub_Sub.h"
|
#include "Pub_Sub.h"
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
#include "Gui.h"
|
||||||
|
|
||||||
class Camera : public VrEventSubscriber{
|
class Camera : public VrEventSubscriber, private Gui{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
enum DIRECTION { FORWARD, REARWARD, LEFT, RIGHT, UP, DOWN };
|
enum DIRECTION { FORWARD, REARWARD, LEFT, RIGHT, UP, DOWN };
|
||||||
@@ -40,6 +41,10 @@ public:
|
|||||||
|
|
||||||
void recieve_event(VrEventPublisher* publisher, std::unique_ptr<vr::Event> event) override;
|
void recieve_event(VrEventPublisher* publisher, std::unique_ptr<vr::Event> event) override;
|
||||||
|
|
||||||
|
|
||||||
|
virtual void render_gui() override;
|
||||||
|
virtual void update_gui() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
float friction_coefficient = 0.1f;
|
float friction_coefficient = 0.1f;
|
||||||
|
|||||||
66
include/Gui.h
Normal file
66
include/Gui.h
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <mutex>
|
||||||
|
#include <Logger.h>
|
||||||
|
#include <list>
|
||||||
|
|
||||||
|
class Gui {
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
Gui() {
|
||||||
|
container_lock.lock();
|
||||||
|
renderable_container.push_back(this);
|
||||||
|
container_lock.unlock();
|
||||||
|
};
|
||||||
|
virtual ~Gui() {
|
||||||
|
container_lock.lock();
|
||||||
|
renderable_container.remove(this);
|
||||||
|
container_lock.unlock();
|
||||||
|
};
|
||||||
|
|
||||||
|
virtual void render_gui() = 0;
|
||||||
|
virtual void update_gui() = 0;
|
||||||
|
|
||||||
|
// Instead of rendering nil, we can pass our render call if we would like
|
||||||
|
bool renderable() { return rendering; };
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
// Whatever class that wants to call this must be a friend!!!
|
||||||
|
friend class Application;
|
||||||
|
static void do_render() {
|
||||||
|
for (auto i : renderable_container) {
|
||||||
|
i->update_gui();
|
||||||
|
if (i->renderable())
|
||||||
|
i->render_gui();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static std::mutex container_lock;
|
||||||
|
static std::list<Gui*> renderable_container;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool rendering = false;
|
||||||
|
// Derived class will handle imgui calls
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -4,9 +4,11 @@
|
|||||||
#include "Event.hpp"
|
#include "Event.hpp"
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include "Pub_Sub.h"
|
#include "Pub_Sub.h"
|
||||||
|
#include "Gui.h"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
class Input : public VrEventPublisher {
|
class Input : public VrEventPublisher, private Gui{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Input();
|
Input();
|
||||||
@@ -21,6 +23,10 @@ public:
|
|||||||
void handle_held_keys();
|
void handle_held_keys();
|
||||||
void dispatch_events();
|
void dispatch_events();
|
||||||
|
|
||||||
|
|
||||||
|
virtual void render_gui() override;
|
||||||
|
virtual void update_gui() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void transpose_sf_events(std::list<sf::Event> event_queue);
|
void transpose_sf_events(std::list<sf::Event> event_queue);
|
||||||
@@ -33,6 +39,8 @@ private:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
static const std::vector<std::string> key_strings;
|
||||||
|
|
||||||
std::list<std::unique_ptr<vr::Event>> event_queue;
|
std::list<std::unique_ptr<vr::Event>> event_queue;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -4,13 +4,14 @@
|
|||||||
#include <memory>
|
#include <memory>
|
||||||
#include "Pub_Sub.h"
|
#include "Pub_Sub.h"
|
||||||
#include "Vector4.hpp"
|
#include "Vector4.hpp"
|
||||||
|
#include "Gui.h"
|
||||||
|
|
||||||
|
|
||||||
struct LightPrototype;
|
struct LightPrototype;
|
||||||
class LightController;
|
class LightController;
|
||||||
struct PackedData;
|
struct PackedData;
|
||||||
|
|
||||||
class LightHandle : public VrEventSubscriber{
|
class LightHandle : public VrEventSubscriber, private Gui{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@@ -35,6 +36,10 @@ public:
|
|||||||
|
|
||||||
void update(double delta_time);
|
void update(double delta_time);
|
||||||
|
|
||||||
|
|
||||||
|
virtual void render_gui() override;
|
||||||
|
virtual void update_gui() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
LightHandle(LightController *const light_controller, unsigned int light_id, LightPrototype light_prototype, PackedData *const data_reference);
|
LightHandle(LightController *const light_controller, unsigned int light_id, LightPrototype light_prototype, PackedData *const data_reference);
|
||||||
|
|||||||
@@ -145,40 +145,23 @@ bool Application::game_loop() {
|
|||||||
fps.frame(delta_time);
|
fps.frame(delta_time);
|
||||||
fps.draw();
|
fps.draw();
|
||||||
|
|
||||||
|
Gui::do_render();
|
||||||
|
|
||||||
ImGuiWindowFlags window_flags = ImGuiWindowFlags_MenuBar;
|
ImGuiWindowFlags window_flags = ImGuiWindowFlags_MenuBar;
|
||||||
bool window_show = true;
|
bool window_show = true;
|
||||||
ImGui::Begin("Camera", &window_show, window_flags);
|
|
||||||
|
|
||||||
if (ImGui::BeginMenuBar())
|
if (ImGui::BeginMenuBar())
|
||||||
{
|
{
|
||||||
if (ImGui::BeginMenu("Menu"))
|
if (ImGui::BeginMenu("Menu"))
|
||||||
{
|
{
|
||||||
|
ImGui::Button("asdoifjasodif");
|
||||||
ImGui::EndMenu();
|
ImGui::EndMenu();
|
||||||
}
|
}
|
||||||
ImGui::EndMenuBar();
|
ImGui::EndMenuBar();
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::Columns(2);
|
ImGui::Begin("Window");
|
||||||
|
|
||||||
ImGui::Text("Camera Inclination");
|
|
||||||
ImGui::Text("Camera Azimuth");
|
|
||||||
ImGui::Text("Camera Pos_X");
|
|
||||||
ImGui::Text("Camera Poz_Y");
|
|
||||||
ImGui::Text("Camera Poz_Z");
|
|
||||||
|
|
||||||
ImGui::NextColumn();
|
|
||||||
|
|
||||||
sf::Vector2f dir = camera->get_direction();
|
|
||||||
sf::Vector3f pos = camera->get_position();
|
|
||||||
|
|
||||||
ImGui::Text("%f", dir.x);
|
|
||||||
ImGui::Text("%f", dir.y);
|
|
||||||
ImGui::Text("%f", pos.x);
|
|
||||||
ImGui::Text("%f", pos.y);
|
|
||||||
ImGui::Text("%f", pos.z);
|
|
||||||
|
|
||||||
ImGui::NextColumn();
|
|
||||||
|
|
||||||
ImGui::InputText("filename", screenshot_buf, 128);
|
ImGui::InputText("filename", screenshot_buf, 128);
|
||||||
if (ImGui::Button("Take Screen shot")) {
|
if (ImGui::Button("Take Screen shot")) {
|
||||||
|
|
||||||
@@ -197,9 +180,6 @@ bool Application::game_loop() {
|
|||||||
|
|
||||||
ImGui::NextColumn();
|
ImGui::NextColumn();
|
||||||
|
|
||||||
if (ImGui::Button("Recompile kernel")) {
|
|
||||||
while (!raycaster->debug_quick_recompile());
|
|
||||||
}
|
|
||||||
if (ImGui::Button("Pause")) {
|
if (ImGui::Button("Pause")) {
|
||||||
|
|
||||||
paused = !paused;
|
paused = !paused;
|
||||||
@@ -210,35 +190,8 @@ bool Application::game_loop() {
|
|||||||
Logger::log("Unpausing", Logger::LogLevel::INFO);
|
Logger::log("Unpausing", Logger::LogLevel::INFO);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::End();
|
ImGui::End();
|
||||||
|
|
||||||
ImGui::Begin("Lights");
|
|
||||||
|
|
||||||
if (ImGui::SliderFloat4("Color", light_color, 0, 1)) {
|
|
||||||
sf::Vector4f light(light_color[0], light_color[1], light_color[2], light_color[3]);
|
|
||||||
light_handle->set_rgbi(light);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ImGui::SliderFloat("Camera Speed", &camera_speed, 0, 4)) {
|
|
||||||
camera->setSpeed(camera_speed);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ImGui::SliderFloat3("Position", light_pos, 0, MAP_X)) {
|
|
||||||
sf::Vector3f light(light_pos[0], light_pos[1], light_pos[2]);
|
|
||||||
light_handle->set_position(light);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ImGui::CollapsingHeader("Window options"))
|
|
||||||
{
|
|
||||||
if (ImGui::TreeNode("Style"))
|
|
||||||
{
|
|
||||||
ImGui::ShowStyleEditor();
|
|
||||||
ImGui::TreePop();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ImGui::End();
|
|
||||||
|
|
||||||
ImGui::Begin("Controller debugger");
|
ImGui::Begin("Controller debugger");
|
||||||
|
|
||||||
|
|||||||
@@ -335,6 +335,25 @@ bool CLCaster::debug_quick_recompile() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CLCaster::render_gui() {
|
||||||
|
|
||||||
|
ImGui::Begin("CLCaster");
|
||||||
|
|
||||||
|
if (ImGui::Button("Recompile Kernel")) {
|
||||||
|
while (!debug_quick_recompile()) {
|
||||||
|
std::cin.get();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::End();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CLCaster::update_gui() {
|
||||||
|
rendering = true;
|
||||||
|
}
|
||||||
|
|
||||||
bool CLCaster::aquire_hardware() {
|
bool CLCaster::aquire_hardware() {
|
||||||
|
|
||||||
Logger::log("Acquiring OpenCL Hardware", Logger::LogLevel::INFO);
|
Logger::log("Acquiring OpenCL Hardware", Logger::LogLevel::INFO);
|
||||||
|
|||||||
@@ -197,6 +197,39 @@ void Camera::recieve_event(VrEventPublisher* publisher, std::unique_ptr<vr::Even
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Camera::render_gui() {
|
||||||
|
|
||||||
|
ImGui::Begin("Camera");
|
||||||
|
|
||||||
|
ImGui::Columns(2);
|
||||||
|
|
||||||
|
ImGui::Text("Camera Inclination");
|
||||||
|
ImGui::Text("Camera Azimuth");
|
||||||
|
ImGui::Text("Camera Pos_X");
|
||||||
|
ImGui::Text("Camera Poz_Y");
|
||||||
|
ImGui::Text("Camera Poz_Z");
|
||||||
|
|
||||||
|
ImGui::NextColumn();
|
||||||
|
|
||||||
|
ImGui::Text("%f", direction.x);
|
||||||
|
ImGui::Text("%f", direction.y);
|
||||||
|
ImGui::Text("%f", position.x);
|
||||||
|
ImGui::Text("%f", position.y);
|
||||||
|
ImGui::Text("%f", position.z);
|
||||||
|
|
||||||
|
ImGui::Separator();
|
||||||
|
|
||||||
|
ImGui::Columns(1);
|
||||||
|
|
||||||
|
ImGui::SliderFloat("Camera Speed", &default_impulse, 0, 4);
|
||||||
|
|
||||||
|
ImGui::End();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Camera::update_gui() {
|
||||||
|
rendering = true;
|
||||||
|
}
|
||||||
|
|
||||||
void Camera::look_at_center() {
|
void Camera::look_at_center() {
|
||||||
|
|
||||||
direction = CartToNormalizedSphere(sf::Vector3f(60, 60, 35) - position);
|
direction = CartToNormalizedSphere(sf::Vector3f(60, 60, 35) - position);
|
||||||
|
|||||||
4
src/Gui.cpp
Normal file
4
src/Gui.cpp
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
#include "Gui.h"
|
||||||
|
|
||||||
|
std::mutex Gui::container_lock;
|
||||||
|
std::list<Gui*> Gui::renderable_container;
|
||||||
172
src/Input.cpp
172
src/Input.cpp
@@ -1,8 +1,10 @@
|
|||||||
#include "Input.h"
|
#pragma once
|
||||||
|
#include "Input.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include "imgui/imgui-SFML.h"
|
|
||||||
#include "Logger.h"
|
#include "Logger.h"
|
||||||
|
#include "LightHandle.h"
|
||||||
|
#include "imgui/imgui-SFML.h"
|
||||||
|
|
||||||
|
|
||||||
Input::Input() :
|
Input::Input() :
|
||||||
@@ -119,6 +121,67 @@ void Input::dispatch_events() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Input::render_gui() {
|
||||||
|
|
||||||
|
ImGui::Begin("Input Debugger");
|
||||||
|
|
||||||
|
ImDrawList* draw_list = ImGui::GetWindowDrawList();
|
||||||
|
static ImVec4 col = ImVec4(1.0f, 0.0f, 1.0f, 1.0f);
|
||||||
|
const ImVec2 p = ImGui::GetCursorScreenPos();
|
||||||
|
const ImU32 col32 = ImColor(col);
|
||||||
|
|
||||||
|
std::vector<float> axis_values = {
|
||||||
|
sf::Joystick::getAxisPosition(0, sf::Joystick::Axis::X) / 2,
|
||||||
|
sf::Joystick::getAxisPosition(0, sf::Joystick::Axis::Y) / 2,
|
||||||
|
sf::Joystick::getAxisPosition(0, sf::Joystick::Axis::U) / 2,
|
||||||
|
sf::Joystick::getAxisPosition(0, sf::Joystick::Axis::R) / 2,
|
||||||
|
sf::Joystick::getAxisPosition(0, sf::Joystick::Axis::Z) / 2,
|
||||||
|
sf::Joystick::getAxisPosition(0, sf::Joystick::Axis::V) / 2
|
||||||
|
};
|
||||||
|
|
||||||
|
ImGui::Columns(3, "Axis's"); // 4-ways, with border
|
||||||
|
ImGui::Separator();
|
||||||
|
ImGui::Text("X Y"); ImGui::NextColumn();
|
||||||
|
ImGui::Text("U R"); ImGui::NextColumn();
|
||||||
|
ImGui::Text("Z V"); ImGui::NextColumn();
|
||||||
|
ImGui::Separator();
|
||||||
|
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
|
||||||
|
|
||||||
|
float offset = ImGui::GetColumnWidth(i);
|
||||||
|
|
||||||
|
draw_list->AddLine(ImVec2(p.x + 0 + offset * i, p.y + 50), ImVec2(p.x + 100 + offset * i, p.y + 50), col32, 1.0);
|
||||||
|
draw_list->AddLine(ImVec2(p.x + 50 + offset * i, p.y + 0), ImVec2(p.x + 50 + offset * i, p.y + 100), col32, 1.0);
|
||||||
|
draw_list->AddCircleFilled(ImVec2(p.x + axis_values[2 * i] + 50 + offset * i, p.y + axis_values[2 * i + 1] + 50), 6, col32, 32);
|
||||||
|
|
||||||
|
ImGui::Dummy(ImVec2(100, 100));
|
||||||
|
ImGui::NextColumn();
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::Text("Pressed Keyboard Keys");
|
||||||
|
|
||||||
|
ImGui::Separator();
|
||||||
|
|
||||||
|
ImGui::Columns(6);
|
||||||
|
|
||||||
|
for (auto i : held_keys) {
|
||||||
|
ImGui::Text(key_strings.at(i).c_str());
|
||||||
|
ImGui::NextColumn();
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::Separator();
|
||||||
|
|
||||||
|
ImGui::End();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Input::update_gui() {
|
||||||
|
rendering = true;
|
||||||
|
}
|
||||||
|
|
||||||
void Input::transpose_sf_events(std::list<sf::Event> sf_event_queue) {
|
void Input::transpose_sf_events(std::list<sf::Event> sf_event_queue) {
|
||||||
|
|
||||||
|
|
||||||
@@ -229,3 +292,108 @@ void Input::transpose_sf_events(std::list<sf::Event> sf_event_queue) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const std::vector<std::string> Input::key_strings = {
|
||||||
|
"A",
|
||||||
|
"B",
|
||||||
|
"C",
|
||||||
|
"D",
|
||||||
|
"E",
|
||||||
|
"F",
|
||||||
|
"G",
|
||||||
|
"H",
|
||||||
|
"I",
|
||||||
|
"J",
|
||||||
|
"K",
|
||||||
|
"L",
|
||||||
|
"M",
|
||||||
|
"N",
|
||||||
|
"O",
|
||||||
|
"P",
|
||||||
|
"Q",
|
||||||
|
"R",
|
||||||
|
"S",
|
||||||
|
"T",
|
||||||
|
"U",
|
||||||
|
"V",
|
||||||
|
"W",
|
||||||
|
"X",
|
||||||
|
"Y",
|
||||||
|
"Z",
|
||||||
|
"Num0",
|
||||||
|
"Num1",
|
||||||
|
"Num2",
|
||||||
|
"Num3",
|
||||||
|
"Num4",
|
||||||
|
"Num5",
|
||||||
|
"Num6",
|
||||||
|
"Num7",
|
||||||
|
"Num8",
|
||||||
|
"Num9",
|
||||||
|
"Escape",
|
||||||
|
"LControl",
|
||||||
|
"LShift",
|
||||||
|
"LAlt",
|
||||||
|
"LSystem",
|
||||||
|
"RControl",
|
||||||
|
"RShift",
|
||||||
|
"RAlt",
|
||||||
|
"RSystem",
|
||||||
|
"Menu",
|
||||||
|
"LBracket",
|
||||||
|
"RBracket",
|
||||||
|
"SemiColon",
|
||||||
|
"Comma",
|
||||||
|
"Period",
|
||||||
|
"Quote",
|
||||||
|
"Slash",
|
||||||
|
"BackSlash",
|
||||||
|
"Tilde",
|
||||||
|
"Equal",
|
||||||
|
"Dash",
|
||||||
|
"Space",
|
||||||
|
"Return",
|
||||||
|
"BackSpace",
|
||||||
|
"Tab",
|
||||||
|
"PageUp",
|
||||||
|
"PageDown",
|
||||||
|
"End",
|
||||||
|
"Home",
|
||||||
|
"Insert",
|
||||||
|
"Delete",
|
||||||
|
"Add",
|
||||||
|
"Subtract",
|
||||||
|
"Multiply",
|
||||||
|
"Divide",
|
||||||
|
"Left",
|
||||||
|
"Right",
|
||||||
|
"Up",
|
||||||
|
"Down",
|
||||||
|
"Numpad0",
|
||||||
|
"Numpad1",
|
||||||
|
"Numpad2",
|
||||||
|
"Numpad3",
|
||||||
|
"Numpad4",
|
||||||
|
"Numpad5",
|
||||||
|
"Numpad6",
|
||||||
|
"Numpad7",
|
||||||
|
"Numpad8",
|
||||||
|
"Numpad9",
|
||||||
|
"F1" ,
|
||||||
|
"F2" ,
|
||||||
|
"F3" ,
|
||||||
|
"F4" ,
|
||||||
|
"F5" ,
|
||||||
|
"F6" ,
|
||||||
|
"F7" ,
|
||||||
|
"F8" ,
|
||||||
|
"F9" ,
|
||||||
|
"F10",
|
||||||
|
"F11",
|
||||||
|
"F12",
|
||||||
|
"F13",
|
||||||
|
"F14",
|
||||||
|
"F15",
|
||||||
|
"Pause"
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -95,3 +95,20 @@ void LightHandle::update(double delta_time) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LightHandle::render_gui() {
|
||||||
|
ImGui::Begin("Lights");
|
||||||
|
|
||||||
|
// Well I'm noooot reaallly supposed to do this. But I've been doing with the caster for
|
||||||
|
// a wile with no problems....
|
||||||
|
ImGui::SliderFloat4("Color", reinterpret_cast<float*>(&data_reference->rgbi), 0, 1);
|
||||||
|
ImGui::SliderFloat3("Position", reinterpret_cast<float*>(&data_reference->position), 0, 256);
|
||||||
|
|
||||||
|
ImGui::Separator();
|
||||||
|
|
||||||
|
ImGui::End();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LightHandle::update_gui() {
|
||||||
|
rendering = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user