// Copyright 2013 Dolphin Emulator Project // Licensed under GPLv2 // Refer to the license.txt file included. #ifndef _VERTEXLOADER_NORMAL_H #define _VERTEXLOADER_NORMAL_H #include "Common.h" #include "CommonTypes.h" class VertexLoader_Normal { public: // Init static void Init(void); // GetSize static unsigned int GetSize(unsigned int _type, unsigned int _format, unsigned int _elements, unsigned int _index3); // GetFunction static TPipelineFunction GetFunction(unsigned int _type, unsigned int _format, unsigned int _elements, unsigned int _index3); private: enum ENormalType { NRM_NOT_PRESENT = 0, NRM_DIRECT = 1, NRM_INDEX8 = 2, NRM_INDEX16 = 3, NUM_NRM_TYPE }; enum ENormalFormat { FORMAT_UBYTE = 0, FORMAT_BYTE = 1, FORMAT_USHORT = 2, FORMAT_SHORT = 3, FORMAT_FLOAT = 4, NUM_NRM_FORMAT }; enum ENormalElements { NRM_NBT = 0, NRM_NBT3 = 1, NUM_NRM_ELEMENTS }; enum ENormalIndices { NRM_INDICES1 = 0, NRM_INDICES3 = 1, NUM_NRM_INDICES }; struct Set { template void operator=(const T&) { gc_size = T::size; function = T::function; } int gc_size; TPipelineFunction function; }; static Set m_Table[NUM_NRM_TYPE][NUM_NRM_INDICES][NUM_NRM_ELEMENTS][NUM_NRM_FORMAT]; }; #endif