#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 Position& position, const ColorRGB& ambient, const ColorRGB& diffuse) : position(position), ambient(ambient), diffuse(diffuse) {} Position position; ColorRGB ambient; ColorRGB diffuse; }; // typedefs for builtin types typedef PVertex BasicVertex; typedef Index BasicIndex; typedef Renderable BasicRenderable; typedef PNVertex LitVertex; typedef Index LitIndex; typedef Renderable LitRenderable; } }