Cogs.Core
Types.h
1#pragma once
2
3#include "EntityPtr.h"
4
5#include "Resources/Buffer.h"
6#include "Resources/MaterialOptions.h"
7
8#include "Rendering/Base.h"
9#include "Rendering/SamplerState.h"
10#include "Rendering/Common.h"
11
12#include "Foundation/Reflection/TypeDatabase.h"
13#include "Foundation/Reflection/Field.h"
14
15#include <glm/glm.hpp>
16
17#include <memory>
18
19namespace Cogs
20{
21 enum class Key; // Defined in Foundation/Platform/Keyboard.h
22 enum class PointerType; // Defined in Foundation/Platform/Gestures.h
23 enum MouseButton : int; // Defined in Foundation/Platform/Mouse.h
24 enum struct FileContentsHints : uint32_t; // Defined in Platform/FileContents.h
25
26 namespace ComponentModel
27 {
28 class Entity;
29 }
30}
31
32template<> inline Cogs::StringView getName<glm::vec2>() { return "vec2"; }
33template<> inline Cogs::StringView getName<glm::vec3>() { return "vec3"; }
34template<> inline Cogs::StringView getName<glm::vec4>() { return "vec4"; }
35template<> inline Cogs::StringView getName<glm::quat>() { return "quat"; }
36template<> inline Cogs::StringView getName<glm::mat4>() { return "mat4"; }
37
38template<> inline Cogs::StringView getName<glm::dvec2>() { return "dvec2"; }
39template<> inline Cogs::StringView getName<glm::dvec3>() { return "dvec3"; }
40template<> inline Cogs::StringView getName<glm::dvec4>() { return "dvec4"; }
41template<> inline Cogs::StringView getName<glm::dquat>() { return "dquat"; }
42template<> inline Cogs::StringView getName<glm::dmat4>() { return "dmat4"; }
43
44template<> inline Cogs::StringView getName<glm::ivec2>() { return "ivec2"; }
45template<> inline Cogs::StringView getName<glm::ivec3>() { return "ivec3"; }
46template<> inline Cogs::StringView getName<glm::ivec4>() { return "ivec4"; }
47
48template<> inline Cogs::StringView getName<glm::uvec2>() { return "uvec2"; }
49template<> inline Cogs::StringView getName<glm::uvec3>() { return "uvec3"; }
50template<> inline Cogs::StringView getName<glm::uvec4>() { return "uvec4"; }
51
52template<> inline Cogs::StringView getName<std::vector<glm::vec2>>() { return "vector<vec2>"; }
53template<> inline Cogs::StringView getName<std::vector<glm::vec3>>() { return "vector<vec3>"; }
54template<> inline Cogs::StringView getName<std::vector<glm::vec4>>() { return "vector<vec4>"; }
55template<> inline Cogs::StringView getName<std::vector<glm::quat>>() { return "vector<quat>"; }
56template<> inline Cogs::StringView getName<std::vector<glm::mat4>>() { return "vector<mat4>"; }
57
58template<> inline Cogs::StringView getName<std::vector<glm::dvec2>>() { return "vector<dvec2>"; }
59template<> inline Cogs::StringView getName<std::vector<glm::dvec3>>() { return "vector<dvec3>"; }
60template<> inline Cogs::StringView getName<std::vector<glm::dvec4>>() { return "vector<dvec4>"; }
61template<> inline Cogs::StringView getName<std::vector<glm::dquat>>() { return "vector<dquat>"; }
62template<> inline Cogs::StringView getName<std::vector<glm::dmat4>>() { return "vector<dmat4>"; }
63
64template<> inline Cogs::StringView getName<Cogs::Core::EntityPtr>() { return "shared_entity"; }
65template<> inline Cogs::StringView getName<Cogs::Core::WeakEntityPtr>() { return "weak_shared_entity"; }
66
67template<> inline Cogs::StringView getName<std::vector<std::shared_ptr<Cogs::ComponentModel::Entity>>>() { return "vector<shared_entity>"; }
68template<> inline Cogs::StringView getName<std::vector<std::weak_ptr<Cogs::ComponentModel::Entity>>>() { return "vector<weak_shared_entity>"; }
69
70template<> inline Cogs::StringView getName<Cogs::Core::ResourceBufferHandle>() { return "ResourceBufferHandle"; }
71template<> inline Cogs::StringView getName<Cogs::Core::MeshHandle>() { return "MeshHandle"; }
72template<> inline Cogs::StringView getName<Cogs::Core::FontHandle>() { return "FontHandle"; }
73template<> inline Cogs::StringView getName<Cogs::Core::ModelHandle>() { return "ModelHandle"; }
74template<> inline Cogs::StringView getName<Cogs::Core::MaterialHandle>() { return "MaterialHandle"; }
75template<> inline Cogs::StringView getName<Cogs::Core::MaterialInstanceHandle>() { return "MaterialInstanceHandle"; }
76template<> inline Cogs::StringView getName<Cogs::Core::TextureHandle>() { return "TextureHandle"; }
77template<> inline Cogs::StringView getName<Cogs::Core::AnimationHandle>() { return "AnimationHandle"; }
78template<> inline Cogs::StringView getName<Cogs::Core::GuiDocumentHandle>() { return "GuiDocumentHandle"; }
79template<> inline Cogs::StringView getName<Cogs::Core::AssetHandle>() { return "AssetHandle"; }
80
81template<> inline Cogs::StringView getName<std::vector<Cogs::Core::TextureHandle>>() { return "vector<TextureHandle>"; }
82template<> inline Cogs::StringView getName<std::vector<Cogs::Core::MaterialHandle>>() { return "vector<MaterialHandle>"; }
83template<> inline Cogs::StringView getName<std::vector<Cogs::Core::MaterialInstanceHandle>>() { return "vector<MaterialInstanceHandle>"; }
84
85template<> inline Cogs::StringView getName<Cogs::Core::BufferView<int>>() { return "BufferView<int>"; }
86template<> inline Cogs::StringView getName<Cogs::Core::BufferView<float>>() { return "BufferView<float>"; }
87template<> inline Cogs::StringView getName<Cogs::Core::BufferView<glm::vec3>>() { return "BufferView<glm::vec3>"; }
88template<> inline Cogs::StringView getName<Cogs::Core::BufferView<glm::vec4>>() { return "BufferView<glm::vec4>"; }
89
90template<> inline Cogs::StringView getName<Cogs::SamplerState::AddressMode>() { return "AddressMode"; }
91template<> inline Cogs::StringView getName<Cogs::SamplerState::FilterMode>() { return "FilterMode"; }
92template<> inline Cogs::StringView getName<Cogs::PrimitiveType>() { return "PrimitiveType"; }
93
94template<> inline Cogs::StringView getName<Cogs::GraphicsDeviceType>() { return "GraphicsDeviceType"; }
95
96template<> inline Cogs::StringView getName<Cogs::Key>() { return "Key"; }
97template<> inline Cogs::StringView getName<Cogs::PointerType>() { return "PointerType"; }
98template<> inline Cogs::StringView getName<Cogs::MouseButton>() { return "MouseButton"; }
99
100template<> inline Cogs::StringView getName<Cogs::FileContentsHints>() { return "FileContentsHints"; }
101
102template<> inline Cogs::StringView getName<Cogs::ComponentModel::RangeAttribute<glm::vec2>>() { return "RangeAttribute"; }
103template<> inline Cogs::StringView getName<Cogs::ComponentModel::RangeAttribute<glm::vec3>>() { return "RangeAttribute"; }
104template<> inline Cogs::StringView getName<Cogs::ComponentModel::RangeAttribute<glm::vec4>>() { return "RangeAttribute"; }
105
106template<> inline Cogs::StringView getName<Cogs::ComponentModel::RangeAttribute<glm::ivec2>>() { return "RangeAttribute"; }
107template<> inline Cogs::StringView getName<Cogs::ComponentModel::RangeAttribute<glm::ivec3>>() { return "RangeAttribute"; }
108template<> inline Cogs::StringView getName<Cogs::ComponentModel::RangeAttribute<glm::ivec4>>() { return "RangeAttribute"; }
109
110template<> inline Cogs::StringView getName<Cogs::ComponentModel::RangeAttribute<glm::uvec2>>() { return "RangeAttribute"; }
111template<> inline Cogs::StringView getName<Cogs::ComponentModel::RangeAttribute<glm::uvec3>>() { return "RangeAttribute"; }
112template<> inline Cogs::StringView getName<Cogs::ComponentModel::RangeAttribute<glm::uvec4>>() { return "RangeAttribute"; }
113
114namespace Cogs
115{
116 namespace Core
117 {
118 void initializeTypes();
119 void cleanupTypes();
120 }
121}
Provides a weakly referenced view over the contents of a string.
Definition: StringView.h:24
Contains all Cogs related functionality.
Definition: FieldSetter.h:23
FileContentsHints
Definition: FileContents.h:11