first commit
This commit is contained in:
91
include/engine/core/geometry_template.h
Normal file
91
include/engine/core/geometry_template.h
Normal file
@ -0,0 +1,91 @@
|
||||
/* -----------------------------------------------------------------------------
|
||||
GSFramework
|
||||
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
|
||||
----------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
#ifndef __NGEOMETRYTEMPLATE__
|
||||
#define __NGEOMETRYTEMPLATE__
|
||||
|
||||
|
||||
#include "core/geometry.h"
|
||||
#include "container/nlist.h"
|
||||
|
||||
|
||||
namespace GS {
|
||||
namespace Core {
|
||||
|
||||
/*!
|
||||
@short Geometry template class.
|
||||
@author Thomas Simonnet (scorpheus)
|
||||
@author Emmanuel Julien (ejulien@nworks.fr)
|
||||
*/
|
||||
class GeometryTemplate
|
||||
{
|
||||
/// Polygon template.
|
||||
struct Polygon
|
||||
{
|
||||
List <Vector4> vertex;
|
||||
List <Vector4> normal;
|
||||
List <Color> color;
|
||||
List <Vector2> uv[__UV_PER_GEOMETRY__];
|
||||
ushort material;
|
||||
};
|
||||
|
||||
/// Polygon vertex.
|
||||
struct PolygonVertex
|
||||
{
|
||||
uint ipoly;
|
||||
uint ivertex;
|
||||
};
|
||||
|
||||
Vector4 GetVertex(const PolygonVertex &);
|
||||
Vector4 GetNormal(const PolygonVertex &);
|
||||
Vector2 GetUV(uint channel, const PolygonVertex &);
|
||||
Color GetColor(const Color &);
|
||||
|
||||
float merge_threshold;
|
||||
|
||||
AutoPtr <Polygon> polygon;
|
||||
AutoList <Polygon *> polygons;
|
||||
List <String> materials;
|
||||
|
||||
public:
|
||||
|
||||
/*!
|
||||
@name Polygon declaration.
|
||||
@{
|
||||
*/
|
||||
void Clear();
|
||||
void BeginPolygon();
|
||||
|
||||
void PushVertex(const Vector4 &);
|
||||
void PushNormal(const Vector4 &);
|
||||
void PushUV(uint channel, const Vector2 &);
|
||||
void PushColor(const Color &);
|
||||
|
||||
void EndPolygon(ushort material_index);
|
||||
/*!
|
||||
@}
|
||||
@name Material table declaration.
|
||||
@{
|
||||
*/
|
||||
void ClearMaterials();
|
||||
void PushMaterial(const char *uri);
|
||||
/// @}
|
||||
|
||||
/// Set the vertex merge threshold.
|
||||
void SetVertexMergeThreshold(float threshold)
|
||||
{ merge_threshold = threshold; }
|
||||
|
||||
/// Instantiate the current template description.
|
||||
Geometry *Instantiate(const char *name);
|
||||
|
||||
GeometryTemplate();
|
||||
};
|
||||
|
||||
} // Core
|
||||
} // GS
|
||||
|
||||
|
||||
#endif // __NGEOMETRYTEMPLATE__
|
||||
Reference in New Issue
Block a user