// Copyright (C) 2023 Jérôme "Lynix" Leclercq (lynix680@gmail.com) // This file is part of the "Nazara Engine - Utility module" // For conditions of distribution and use, see copyright notice in Config.hpp #pragma once #ifndef NAZARA_UTILITY_FORMATS_MD2CONSTANTS_HPP #define NAZARA_UTILITY_FORMATS_MD2CONSTANTS_HPP #include #include namespace Nz { struct MD2_Header { UInt32 ident; // nombre magique : "IDP2" UInt32 version; // version du format : 8 UInt32 skinwidth; // largeur texture UInt32 skinheight; // hauteur texture UInt32 framesize; // taille d'une frame en octets UInt32 num_skins; // nombre de skins UInt32 num_vertices; // nombre de vertices par frame UInt32 num_st; // nombre de coordonnées de texture UInt32 num_tris; // nombre de triangles UInt32 num_glcmds; // nombre de commandes opengl UInt32 num_frames; // nombre de frames UInt32 offset_skins; // offset données skins UInt32 offset_st; // offset données coordonnées de texture UInt32 offset_tris; // offset données triangles UInt32 offset_frames; // offset données frames UInt32 offset_glcmds; // offset données commandes OpenGL UInt32 offset_end; // offset fin de fichier }; static_assert(sizeof(MD2_Header) == 17*sizeof(UInt32), "MD2_Header must be packed"); struct MD2_Vertex { UInt8 x, y, z; UInt8 n; }; static_assert(sizeof(MD2_Vertex) == 4*sizeof(UInt8), "MD2_Vertex must be packed"); struct MD2_TexCoord { Int16 u, v; }; static_assert(sizeof(MD2_TexCoord) == 2*sizeof(Int16), "MD2_TexCoord must be packed"); struct MD2_Triangle { UInt16 vertices[3]; UInt16 texCoords[3]; }; static_assert(sizeof(MD2_Triangle) == 2*3*sizeof(UInt16), "MD2_Triangle must be packed"); extern const UInt32 md2Ident; extern const Vector3f md2Normals[162]; } #endif // NAZARA_UTILITY_FORMATS_MD2CONSTANTS_HPP