PGR Copakond OpenGL Engine - Bowling
Loading...
Searching...
No Matches
levelEditor.h
Go to the documentation of this file.
1#ifndef PGR_SEM_COPAKOND_LEVELEDITOR_H
2#define PGR_SEM_COPAKOND_LEVELEDITOR_H
3
4#include <map>
5
6#include "../scene.h"
7
8namespace copakond {
10 enum class EditMode { NONE, TRANSLATE, ROTATE, SCALE };
11
13 enum class EditAxe { NONE, X, Y, Z };
14
16 struct StateSaved { glm::vec3 position; glm::vec3 rotation; glm::vec3 scale; };
17
20 private:
21 Scene* _scene;
22 Mesh* _selectedMesh = nullptr;
23 EditMode _currentMode = EditMode::NONE;
24 EditAxe _currentAxe = EditAxe::NONE;
25
26 std::map<Mesh*, StateSaved> _modifiedMeshes;
27
28 static std::string floatToString(float value);
29 static std::string vec3ToString(const glm::vec3& v);
30
31 public:
32 LevelEditor(Scene* scene) : _scene(scene) {}
33
35 void onObjectClickedEvent(int id);
36
38 void onKeyboardEvent(unsigned char key, int x, int y, bool isDown);
39 void onMouseWheelEvent(int wheel, int direction, int x, int y);
40
42 void saveSnapshot(std::string filename = "meshes.txt");
43 void undo();
44
45 EditMode getEditMode() const { return _currentMode; }
46 EditAxe getEditAxe() const { return _currentAxe; }
47 };
48}
49
50#endif //PGR_SEM_COPAKOND_LEVELEDITOR_H
LevelEditor(Scene *scene)
Definition levelEditor.h:32
EditAxe getEditAxe() const
Definition levelEditor.h:46
void saveSnapshot(std::string filename="meshes.txt")
Exports modified mesh transformations to a text file.
Definition levelEditor.cpp:207
void onObjectClickedEvent(int id)
Selects an object based on stencil buffer ID.
Definition levelEditor.cpp:8
void onKeyboardEvent(unsigned char key, int x, int y, bool isDown)
Handles transformation switching and applying delta modifications.
Definition levelEditor.cpp:39
void onMouseWheelEvent(int wheel, int direction, int x, int y)
Definition levelEditor.cpp:104
EditMode getEditMode() const
Definition levelEditor.h:45
void undo()
Definition levelEditor.cpp:183
Base drawable 3D object containing geometry and material data.
Definition mesh.h:19
Base class for all game scenes, managing lifecycle, rendering, and scene entities.
Definition scene.h:32
PGR Semestral work with sample scenes and bowling. doxygen was generated with a help of LLM.
Definition bezier.cpp:3
EditMode
Transformation modes for the runtime level editor.
Definition levelEditor.h:10
@ SCALE
Definition levelEditor.h:10
@ TRANSLATE
Definition levelEditor.h:10
@ ROTATE
Definition levelEditor.h:10
@ NONE
Definition levelEditor.h:10
EditAxe
Axis lock for current transformation.
Definition levelEditor.h:13
@ X
Definition levelEditor.h:13
@ Z
Definition levelEditor.h:13
@ Y
Definition levelEditor.h:13
@ NONE
Definition levelEditor.h:13
Stores a snapshot of object's transform for saving or undo operations.
Definition levelEditor.h:16
glm::vec3 position
Definition levelEditor.h:16
glm::vec3 rotation
Definition levelEditor.h:16
glm::vec3 scale
Definition levelEditor.h:16