diff --git a/assets/games/liminal/prefabs/Button.xml b/assets/games/liminal/prefabs/Button.xml
index 0fdac231..65f2a6a4 100644
--- a/assets/games/liminal/prefabs/Button.xml
+++ b/assets/games/liminal/prefabs/Button.xml
@@ -1,5 +1,20 @@
-
+
+
+
+
+ useEvent([&]{
+ uiItem->color = COLOR_RED;
+ }, menuItem->eventHoveredOn);
+
+ useEvent([&]{
+ uiItem->color = COLOR_BLUE;
+ }, menuItem->eventHoveredOff);
+
+ useEvent([&]{
+ uiItem->color = COLOR_GREEN;
+ }, menuItem->eventSelected);
+
\ No newline at end of file
diff --git a/assets/games/liminal/prefabs/VNTextbox.xml b/assets/games/liminal/prefabs/VNTextbox.xml
index 95abce83..20fa4f01 100644
--- a/assets/games/liminal/prefabs/VNTextbox.xml
+++ b/assets/games/liminal/prefabs/VNTextbox.xml
@@ -24,5 +24,13 @@
/>
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/dawn/state/StateProperty.hpp b/src/dawn/state/StateProperty.hpp
index 10627531..c7cdc69b 100644
--- a/src/dawn/state/StateProperty.hpp
+++ b/src/dawn/state/StateProperty.hpp
@@ -16,7 +16,7 @@ namespace Dawn {
*
* @param val Value that is to be used for this property.
*/
- void setInternal(V val) {
+ void setInternal(const V val) {
if(val == this->_realValue) return;// TODO: can I omit this? kinda bad tbh.
// Run the teardowns
diff --git a/src/dawnshared/display/Color.hpp b/src/dawnshared/display/Color.hpp
index 31613be5..3eeca8fa 100644
--- a/src/dawnshared/display/Color.hpp
+++ b/src/dawnshared/display/Color.hpp
@@ -22,9 +22,16 @@ namespace Dawn {
*/
static struct Color fromString(std::string str);
-
float_t r, g, b, a;
+ const struct Color& operator = (const struct Color &val) {
+ this->r = val.r;
+ this->g = val.g;
+ this->b = val.b;
+ this->a = val.a;
+ return *this;
+ }
+
struct Color operator * (const float_t &x) {
return {
r * x,
@@ -52,6 +59,10 @@ namespace Dawn {
};
}
+ const bool_t operator == (const struct Color &other) {
+ return r == other.r && g == other.g && b == other.b && a == other.a;
+ }
+
operator struct ColorU8() const {
return {
(uint8_t)(r * 255),
diff --git a/src/dawntools/CMakeLists.txt b/src/dawntools/CMakeLists.txt
index 60242593..106d19e3 100644
--- a/src/dawntools/CMakeLists.txt
+++ b/src/dawntools/CMakeLists.txt
@@ -23,7 +23,6 @@ include(util/generator/CMakeLists.txt)
# Tools
add_subdirectory(prefabtool)
-add_subdirectory(propertytool)
add_subdirectory(scenetool)
add_subdirectory(texturetool)
add_subdirectory(truetypetool)
diff --git a/src/dawntools/util/generator/SceneItemGenerator.cpp b/src/dawntools/util/generator/SceneItemGenerator.cpp
index 489388f5..3f7154f6 100644
--- a/src/dawntools/util/generator/SceneItemGenerator.cpp
+++ b/src/dawntools/util/generator/SceneItemGenerator.cpp
@@ -135,6 +135,18 @@ void SceneItemGenerator::generate(
line(initBody, name + "->transform.setLocalPosition(" + item->position + ");", "");
}
+ if(item->alignment.size() > 0) {
+ line(initBody, name + "->uiItem->alignment = " + item->alignment + ";", "");
+ }
+
+ if(item->menuX.size() > 0) {
+ line(initBody, name + "->menuItem->menuX = " + item->menuX + ";", "");
+ }
+
+ if(item->menuY.size() > 0) {
+ line(initBody, name + "->menuItem->menuY = " + item->menuY + ";", "");
+ }
+
if(item->scale.size() > 0) {
line(initBody, name + "->transform.setLocalScale(" + item->scale + ");", "");
}
diff --git a/src/dawntools/util/parser/CMakeLists.txt b/src/dawntools/util/parser/CMakeLists.txt
index 24956fc5..584fb9a9 100644
--- a/src/dawntools/util/parser/CMakeLists.txt
+++ b/src/dawntools/util/parser/CMakeLists.txt
@@ -14,7 +14,6 @@ set(
${D}/SceneCodeParser.cpp
${D}/SceneItemComponentParser.cpp
${D}/SceneItemComponentRegistry.cpp
- ${D}/ScenePropertyParser.cpp
CACHE INTERNAL
${DAWN_CACHE_TARGET}
diff --git a/src/dawntools/util/parser/SceneItemParser.cpp b/src/dawntools/util/parser/SceneItemParser.cpp
index 9e971350..b995d20d 100644
--- a/src/dawntools/util/parser/SceneItemParser.cpp
+++ b/src/dawntools/util/parser/SceneItemParser.cpp
@@ -17,7 +17,10 @@ std::map SceneItemParser::getOptionalAttributes() {
{ "position", "" },
{ "lookAt", "" },
{ "scale", "" },
- { "prefab", "" }
+ { "prefab", "" },
+ { "alignment", "" },
+ { "menuX", "" },
+ { "menuY", "" }
};
}
@@ -34,6 +37,21 @@ int32_t SceneItemParser::onParse(
if(error->size() > 0) return 1;
}
+ if(values["alignment"].size() > 0) {
+ out->alignment = vec4Parser(values["alignment"], error);
+ if(error->size() > 0) return 1;
+ }
+
+ if(values["menuX"].size() > 0) {
+ out->menuX = intParser(values["menuX"], error);
+ if(error->size() > 0) return 1;
+ }
+
+ if(values["menuY"].size() > 0) {
+ out->menuY = intParser(values["menuY"], error);
+ if(error->size() > 0) return 1;
+ }
+
if(values["scale"].size() > 0) {
out->scale = vec3Parser(values["scale"], error);
if(error->size() > 0) return 1;
diff --git a/src/dawntools/util/parser/SceneItemParser.hpp b/src/dawntools/util/parser/SceneItemParser.hpp
index 00678bf3..c6da961f 100644
--- a/src/dawntools/util/parser/SceneItemParser.hpp
+++ b/src/dawntools/util/parser/SceneItemParser.hpp
@@ -24,10 +24,13 @@ namespace Dawn {
struct SceneItemComponentRegistry *registry;
std::string ref;
std::string position;
+ std::string alignment;
std::string lookAtPosition;
std::string lookAtTarget;
std::string scale;
std::string prefab;
+ std::string menuX;
+ std::string menuY;
std::vector components;
std::vector children;
std::vector assets;