use inactive/active color gizmo

This commit is contained in:
Nick Fisher
2024-08-24 15:58:49 +08:00
parent 3512ed6da3
commit f6f12e2566
3 changed files with 69 additions and 17 deletions

View File

@@ -7,6 +7,7 @@
#include <filament/Scene.h>
#include <filament/Camera.h>
#include <filament/View.h>
#include <filament/Viewport.h>
#include <gltfio/AssetLoader.h>
#include <gltfio/FilamentAsset.h>
@@ -20,15 +21,19 @@
#include "Aabb2.h"
namespace thermion_filament {
using namespace filament;
using namespace utils;
class Gizmo {
enum Axis { X, Y, Z};
public:
Gizmo(Engine* const engine);
void updateTransform();
void destroy(Engine* const engine);
Gizmo(Engine& engine);
void updateTransform(Camera& camera, const Viewport& vp);
void destroy();
Entity x() {
return _entities[0];
};
@@ -41,8 +46,24 @@ class Gizmo {
Entity center() {
return _entities[3];
};
void highlight(Entity entity);
void unhighlight();
private:
Engine &_engine;
utils::Entity _entities[4];
Material* _material;
MaterialInstance* _materialInstances[4];
};
math::float3 inactiveColors[3] {
math::float3 { 0.75f, 0.0f, 0.0f },
math::float3 { 0.0f, 0.75f, 0.0f },
math::float3 { 0.0f, 0.0f, 0.75f },
};
math::float3 activeColors[3] {
math::float3 { 1.0f, 0.0f, 0.0f },
math::float3 { 0.0f, 1.0f, 0.0f },
math::float3 { 0.0f, 0.0f, 1.0f },
};
};
}