feat(new_editor): wire project, inspector, and viewport runtime

This commit is contained in:
2026-04-19 00:03:25 +08:00
parent 8257403036
commit a57b322bc7
168 changed files with 14829 additions and 2507 deletions

View File

@@ -6,6 +6,10 @@
#include <XCEngine/UI/Widgets/UISelectionModel.h>
#include <XCEditor/Fields/UIEditorColorField.h>
#include <XCEditor/Fields/UIEditorAssetField.h>
#include <XCEditor/Fields/UIEditorVector2Field.h>
#include <XCEditor/Fields/UIEditorVector3Field.h>
#include <XCEditor/Fields/UIEditorVector4Field.h>
#include <XCEditor/Menu/UIEditorMenuPopup.h>
#include <array>
@@ -24,6 +28,7 @@ enum class UIEditorPropertyGridFieldKind : std::uint8_t {
Bool,
Number,
Enum,
Asset,
Color,
Vector2,
Vector3,
@@ -60,6 +65,17 @@ struct UIEditorPropertyGridEnumFieldValue {
std::size_t selectedIndex = 0u;
};
struct UIEditorPropertyGridAssetFieldValue {
std::string assetId = {};
std::string displayName = {};
std::string statusText = {};
std::string emptyText = "None";
::XCEngine::UI::UIColor tint = ::XCEngine::UI::UIColor(0.28f, 0.50f, 0.83f, 1.0f);
bool showPickerButton = true;
bool allowClear = true;
bool showStatusBadge = true;
};
struct UIEditorPropertyGridColorFieldValue {
::XCEngine::UI::UIColor value = {};
bool showAlpha = true;
@@ -111,6 +127,7 @@ struct UIEditorPropertyGridField {
bool boolValue = false;
UIEditorPropertyGridNumberFieldValue numberValue = {};
UIEditorPropertyGridEnumFieldValue enumValue = {};
UIEditorPropertyGridAssetFieldValue assetValue = {};
UIEditorPropertyGridColorFieldValue colorValue = {};
UIEditorPropertyGridVector2FieldValue vector2Value = {};
UIEditorPropertyGridVector3FieldValue vector3Value = {};
@@ -129,6 +146,26 @@ struct UIEditorPropertyGridColorFieldVisualState {
UIEditorColorFieldState state = {};
};
struct UIEditorPropertyGridAssetFieldVisualState {
std::string fieldId = {};
UIEditorAssetFieldState state = {};
};
struct UIEditorPropertyGridVector2FieldVisualState {
std::string fieldId = {};
UIEditorVector2FieldState state = {};
};
struct UIEditorPropertyGridVector3FieldVisualState {
std::string fieldId = {};
UIEditorVector3FieldState state = {};
};
struct UIEditorPropertyGridVector4FieldVisualState {
std::string fieldId = {};
UIEditorVector4FieldState state = {};
};
struct UIEditorPropertyGridState {
std::string hoveredSectionId = {};
std::string hoveredFieldId = {};
@@ -137,7 +174,11 @@ struct UIEditorPropertyGridState {
std::string pressedFieldId = {};
std::string popupFieldId = {};
std::size_t popupHighlightedIndex = UIEditorPropertyGridInvalidIndex;
std::vector<UIEditorPropertyGridAssetFieldVisualState> assetFieldStates = {};
std::vector<UIEditorPropertyGridColorFieldVisualState> colorFieldStates = {};
std::vector<UIEditorPropertyGridVector2FieldVisualState> vector2FieldStates = {};
std::vector<UIEditorPropertyGridVector3FieldVisualState> vector3FieldStates = {};
std::vector<UIEditorPropertyGridVector4FieldVisualState> vector4FieldStates = {};
};
struct UIEditorPropertyGridMetrics {