// C #include // System (C) #include #include #include #include #include // Misc (C) #include #include // C++ std #include #include #include #include #include #include #include #include #include #include using std::swap; // ImGui #include // GLM #include #include // EBCL #include #include #include using ebcl::T_OwnPtr; using ebcl::NewOwned; using ebcl::T_SharedPtr; using ebcl::NewShared; using ebcl::T_Flags; using ebcl::T_Optional; using ebcl::T_Union; using ebcl::T_Variant; using ebcl::T_Array; using ebcl::T_AutoArray; using ebcl::T_StaticArray; using ebcl::T_MultiArray; using ebcl::T_String; using ebcl::T_StringBuilder; using ebcl::T_HashIndex; using ebcl::T_ObjectTable; using ebcl::T_KeyValueTable; // Silly decoration macros I use everywhere #define __rd__ #define __wr__ #define __rw__ // Macros that enable/disable copying/moving #define NO_COPY( CLS ) \ CLS( CLS const& ) = delete; \ CLS& operator =( CLS const& ) = delete #define NO_MOVE( CLS ) \ CLS( CLS&& ) = delete; \ CLS& operator =( CLS&& ) = delete #define DEF_COPY( CLS ) \ CLS( CLS const& ) = default; \ CLS& operator =( CLS const& ) = default #define DEF_MOVE( CLS ) \ CLS( CLS&& ) noexcept = default; \ CLS& operator =( CLS&& ) noexcept = default #define COPY( CLS ) \ CLS( CLS const& ); \ CLS& operator =( CLS const& ) #define MOVE( CLS ) \ CLS( CLS&& ) noexcept; \ CLS& operator =( CLS&& ) noexcept