Shkyera Engine
Easy to use, game engine for Python
Loading...
Searching...
No Matches
InspectorWidget.hpp
Go to the documentation of this file.
1#pragma once
2
6#include <UI/Common/AssetSelector.hpp>
7#include <UI/Common/BooleanSelector.hpp>
8#include <UI/Common/ColorSelector.hpp>
9#include <UI/Common/FloatSlider.hpp>
10#include <UI/Widget.hpp>
11
12namespace shkyera {
13
14class InspectorWidget : public Widget {
15 public:
16 using Widget::Widget;
17
18 InspectorWidget(std::string name, std::shared_ptr<Registry> registry);
19
23 virtual void draw() override;
24
25 private:
27
28 template <typename AssetType, typename InspectorType>
30 if (!_selectedAsset) {
32 return false;
33 }
34
36 _assetInspector = std::make_unique<InspectorType>(_registry.get(), *_selectedAsset);
37 return true;
38 }
39
40 return false;
41 }
42
44 public:
45 virtual ~AssetInspector() = default;
46 virtual void draw() = 0;
47 };
48
68
70 public:
72
73 void draw();
74
75 private:
77 };
78
79 std::shared_ptr<Registry> _registry;
80 std::optional<AssetHandle> _selectedAsset;
81 std::unique_ptr<AssetInspector> _assetInspector;
82};
83
84} // namespace shkyera
Definition BooleanSelector.hpp:11
Definition ColorSelector.hpp:11
Definition FloatSlider.hpp:11
Definition InspectorWidget.hpp:43
Definition InspectorWidget.hpp:49
FloatSlider _normalMapStrengthSlider
Definition InspectorWidget.hpp:61
FloatSlider _roughnessSlider
Definition InspectorWidget.hpp:58
TextureAssetSelector _metallicTextureSelector
Definition InspectorWidget.hpp:65
ColorSelector _emissiveColorSelector
Definition InspectorWidget.hpp:56
void draw()
Definition InspectorWidget.cpp:149
ColorSelector _albedoColorSelector
Definition InspectorWidget.hpp:55
FloatSlider _metallicSlider
Definition InspectorWidget.hpp:59
TextureAssetSelector _emissiveTextureSelector
Definition InspectorWidget.hpp:66
BooleanSelector _litMaterialCheckbox
Definition InspectorWidget.hpp:57
TextureAssetSelector _albedoTextureSelector
Definition InspectorWidget.hpp:62
TextureAssetSelector _normalTextureSelector
Definition InspectorWidget.hpp:63
FloatSlider _emissiveStrengthSlider
Definition InspectorWidget.hpp:60
TextureAssetSelector _roughnessTextureSelector
Definition InspectorWidget.hpp:64
Definition InspectorWidget.hpp:69
void draw()
Definition InspectorWidget.cpp:190
AssetRef< Texture > _texture
Definition InspectorWidget.hpp:76
Definition InspectorWidget.hpp:14
std::shared_ptr< Registry > _registry
Definition InspectorWidget.hpp:79
virtual void draw() override
Implementation of the abstract draw method to render the profiler widget.
Definition InspectorWidget.cpp:21
std::optional< AssetHandle > _selectedAsset
Definition InspectorWidget.hpp:80
std::unique_ptr< AssetInspector > _assetInspector
Definition InspectorWidget.hpp:81
bool tryResetInspector()
Definition InspectorWidget.hpp:29
bool updateAssetSelection()
Definition InspectorWidget.cpp:46
Definition Registry.hpp:28
Definition AssetSelector.hpp:113
An abstract base class representing a GUI widget.
Definition Widget.hpp:23
Widget(std::string name)
Constructor to create a widget with a specified name.
Definition Widget.cpp:5
Definition Asset.hpp:6
Entity AssetHandle
Definition Asset.hpp:8
Definition Clock.hpp:9
void reset()
Definition Clock.hpp:13