From 79c3462396fd4e1dcb7d1c9a2ef7bad741afa3e3 Mon Sep 17 00:00:00 2001 From: hop311 Date: Fri, 22 Mar 2024 23:28:28 +0000 Subject: GFX objectTypes loading framework + Actor loading --- src/openvic-simulation/interface/GFXObject.hpp | 81 ++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 src/openvic-simulation/interface/GFXObject.hpp (limited to 'src/openvic-simulation/interface/GFXObject.hpp') diff --git a/src/openvic-simulation/interface/GFXObject.hpp b/src/openvic-simulation/interface/GFXObject.hpp new file mode 100644 index 0000000..840e4a9 --- /dev/null +++ b/src/openvic-simulation/interface/GFXObject.hpp @@ -0,0 +1,81 @@ +#pragma once + +#include "openvic-simulation/interface/LoadBase.hpp" + +namespace OpenVic::GFX { + + class Object : public Named<> { + protected: + Object() = default; + + public: + Object(Object&&) = default; + virtual ~Object() = default; + + OV_DETAIL_GET_BASE_TYPE(Object) + OV_DETAIL_GET_TYPE + + static NodeTools::node_callback_t expect_objects( + NodeTools::length_callback_t length_callback, NodeTools::callback_t&&> callback + ); + }; + + class Actor final : public Object { + friend std::unique_ptr std::make_unique(); + + public: + class Attachment : public Named<> { + friend class LoadBase; + + private: + std::string PROPERTY(node); + int32_t PROPERTY(attach_id); + + protected: + Attachment(); + + bool _fill_key_map(NodeTools::case_insensitive_key_map_t& key_map) override; + + public: + Attachment(Attachment&&) = default; + virtual ~Attachment() = default; + }; + + class Animation : public Named<> { + friend class LoadBase; + + std::string PROPERTY(file); + fixed_point_t PROPERTY(default_time); + + protected: + Animation(); + + bool _fill_key_map(NodeTools::case_insensitive_key_map_t& key_map) override; + + public: + Animation(Animation&&) = default; + virtual ~Animation() = default; + }; + + private: + std::string PROPERTY(model_file); + std::string PROPERTY(idle_animation_file); + std::string PROPERTY(move_animation_file); + std::string PROPERTY(attack_animation_file); + fixed_point_t PROPERTY(scale); + + NamedRegistry IDENTIFIER_REGISTRY(attachment); + NamedRegistry IDENTIFIER_REGISTRY(animation); + + protected: + Actor(); + + bool _fill_key_map(NodeTools::case_insensitive_key_map_t& key_map) override; + + public: + Actor(Actor&&) = default; + virtual ~Actor() = default; + + OV_DETAIL_GET_TYPE + }; +} -- cgit v1.2.3-56-ga3b1