#pragma once #include #include #include #include #include "Engine/Types.h" #include namespace enzo{ namespace ga{ template class AttributeHandle; class Attribute { public: Attribute(std::string name, ga::AttributeType type); 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_; }; } }