#pragma once #include "Core/IUndoManager.h" #include "ScalarControls.h" #include "StyleTokens.h" #include "VectorControls.h" namespace XCEngine { namespace Editor { namespace UI { inline PropertyLayoutSpec InspectorPropertyLayout() { return MakePropertyLayout(); } template inline bool ApplyPropertyChange( bool changedByWidget, ::XCEngine::Editor::IUndoManager* undoManager, const char* undoLabel, ApplyFn&& apply) { if (!changedByWidget) { return false; } if (undoManager) { undoManager->BeginInteractiveChange(undoLabel); } apply(); return true; } inline bool DrawPropertyFloat( const char* label, float& value, float dragSpeed = 0.1f, float min = 0.0f, float max = 0.0f, const char* format = "%.2f" ) { return DrawFloat(label, value, InspectorPropertyLayout(), dragSpeed, min, max, format); } inline bool DrawPropertyInt( const char* label, int& value, int step = 1, int min = 0, int max = 0 ) { return DrawInt(label, value, InspectorPropertyLayout(), step, min, max); } inline bool DrawPropertyBool( const char* label, bool& value ) { return DrawBool(label, value, InspectorPropertyLayout()); } inline bool DrawPropertyColor3( const char* label, float color[3] ) { return DrawColor3(label, color, InspectorPropertyLayout()); } inline bool DrawPropertyColor4( const char* label, float color[4] ) { return DrawColor4(label, color, InspectorPropertyLayout()); } inline bool DrawPropertySliderFloat( const char* label, float& value, float min, float max, const char* format = "%.2f" ) { return DrawSliderFloat(label, value, min, max, InspectorPropertyLayout(), format); } inline bool DrawPropertySliderInt( const char* label, int& value, int min, int max ) { return DrawSliderInt(label, value, min, max, InspectorPropertyLayout()); } inline int DrawPropertyCombo( const char* label, int currentItem, const char* const items[], int itemCount, int heightInItems = -1 ) { return DrawCombo(label, currentItem, items, itemCount, InspectorPropertyLayout(), heightInItems); } inline bool DrawPropertyVec2( const char* label, ::XCEngine::Math::Vector2& values, float resetValue = 0.0f, float dragSpeed = 0.1f ) { return DrawVec2(label, values, resetValue, InspectorPropertyLayout(), dragSpeed); } inline bool DrawPropertyVec3( const char* label, ::XCEngine::Math::Vector3& values, float resetValue = 0.0f, float dragSpeed = 0.1f, bool* isActive = nullptr ) { return DrawVec3(label, values, resetValue, InspectorPropertyLayout(), dragSpeed, isActive); } inline bool DrawPropertyVec3Input( const char* label, ::XCEngine::Math::Vector3& values, float dragSpeed = 0.1f, bool* isActive = nullptr ) { return DrawVec3Input(label, values, InspectorPropertyLayout(), dragSpeed, isActive); } } } }