From a74117d95f4b0a506f4e67a1a942e854a8ccf333 Mon Sep 17 00:00:00 2001 From: floralrainfall Date: Mon, 17 Jul 2023 19:28:06 -0400 Subject: [PATCH] add addProperties for Workspace --- .../Engine/Header/App/V8/DataModel/Workspace.hpp | 1 + .../Engine/Source/App/Script/ReflectionProperty.cpp | 2 ++ .../Engine/Source/App/V8/DataModel/Workspace.cpp | 12 ++++++++++++ 3 files changed, 15 insertions(+) diff --git a/Projects/Engine/Header/App/V8/DataModel/Workspace.hpp b/Projects/Engine/Header/App/V8/DataModel/Workspace.hpp index 0780ebb..bc19c8d 100644 --- a/Projects/Engine/Header/App/V8/DataModel/Workspace.hpp +++ b/Projects/Engine/Header/App/V8/DataModel/Workspace.hpp @@ -25,6 +25,7 @@ namespace RNR Camera* getCurrentCamera() const; void setCurrentCamera(Camera *value); private: + virtual void addProperties(std::vector& properties); virtual void deserializeProperty(char* prop_name, pugi::xml_node prop); void buildGeomInstance(Instance* instance); diff --git a/Projects/Engine/Source/App/Script/ReflectionProperty.cpp b/Projects/Engine/Source/App/Script/ReflectionProperty.cpp index b528e27..ca3bbb7 100644 --- a/Projects/Engine/Source/App/Script/ReflectionProperty.cpp +++ b/Projects/Engine/Source/App/Script/ReflectionProperty.cpp @@ -26,6 +26,8 @@ namespace RNR std::string ReflectionProperty::toString() { + if(m_getter(m_object) == 0) + return std::string("NULL"); switch(m_type) { case PROPERTY_STD_STRING: diff --git a/Projects/Engine/Source/App/V8/DataModel/Workspace.cpp b/Projects/Engine/Source/App/V8/DataModel/Workspace.cpp index c21b85d..4e05125 100644 --- a/Projects/Engine/Source/App/V8/DataModel/Workspace.cpp +++ b/Projects/Engine/Source/App/V8/DataModel/Workspace.cpp @@ -105,4 +105,16 @@ namespace RNR printf("Workspace::deserializeProperty: camera ref invalid (%s)\n", node.text().as_string()); } } + + void Workspace::addProperties(std::vector& properties) + { + ReflectionProperty _properties[] = { + { this, std::string("CurrentCamera"), std::string(""), + ACCESS_NONE, OPERATION_READWRITE, PROPERTY_INSTANCE, + REFLECTION_GETTER(Workspace* instance = (Workspace*)object; return instance->currentCamera.get(); ), + REFLECTION_SETTER(Workspace* instance = (Workspace*)object; instance->setCurrentCamera((Camera*)value); ) }, + }; + + properties.insert(properties.end(), _properties, _properties+(sizeof(_properties)/sizeof(ReflectionProperty))); + } } \ No newline at end of file