#pragma once #include #include "Renderable.h" #include "PoseableBatch.h" #include "VertexFragmentShaderProgram.h" namespace charcoal { namespace builtin { using namespace glm; typedef vec3 Position; typedef vec3 Normal; typedef vec4 ColorRGBA; typedef vec3 ColorRGB; typedef vec2 UV; typedef unsigned int Index; // Generic Vertices struct PVertex { void set_position(const Position& position) { this->position = position; } Position position; }; struct PNVertex { void set_position(const Position& position) { this->position = position; } void set_normal(const Normal& normal) { this->normal = normal; } Position position; Normal normal; }; // Other Data Types struct Light { Light(const ColorRGB& ambient) : ambient(ambient) {} ColorRGB ambient; }; // typedefs for builtin types typedef PVertex BasicVertex; typedef Index BasicIndex; typedef Renderable BasicRenderable; typedef PoseableBatch BasicBatch; typedef PNVertex LitVertex; typedef Index LitIndex; typedef Renderable LitRenderable; typedef PoseableBatch LitBatch; } }