#pragma once #include #include #include #include #include #include "Engine/Types.h" #include namespace enzo{ namespace ga{ template using StoreContainer = std::vector; template class AttributeHandle; class Attribute { public: Attribute(std::string name, ga::AttributeType type); Attribute(const Attribute& other); AttributeType getType(); std::string getName(); template friend class AttributeHandle; private: // private attributes are attributes that are hidden from the user // for internal use bool private_=false; // hidden attributes are user accessible attributes that the user may // or may want to use bool hidden_=false; // allows the user to read the attribute but not modify it bool readOnly_=false; ga::AttributeType type_; std::string name_; // void* data_; // data stores std::shared_ptr> intStore_; std::shared_ptr> floatStore_; std::shared_ptr> vector3Store_; std::shared_ptr> boolStore_; }; } }