//===========================================================================// // Copyright (C) Microsoft Corporation. All rights reserved. // //===========================================================================// #pragma once #define MLR_MLR_I_PMESH_HPP #if !defined(MLR_MLR_HPP) #include #endif #if !defined(MLR_MLRINDEXEDPRIMITIVEBASE_HPP) #include #endif namespace MidLevelRenderer { //########################################################################## //#### MLRIndexedPolyMesh with no color no lighting one texture layer ##### //########################################################################## class MLR_I_PMesh: public MLRIndexedPrimitiveBase { //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Initialization // public: static void InitializeClass(); static void TerminateClass(); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Constructors/Destructors // protected: MLR_I_PMesh( ClassData *class_data, Stuff::MemoryStream *stream, int version ); ~MLR_I_PMesh(); public: MLR_I_PMesh(ClassData *class_data=MLR_I_PMesh::DefaultData); static MLR_I_PMesh* Make( Stuff::MemoryStream *stream, int version ); void Save(Stuff::MemoryStream *stream); public: // void Copy(MLRIndexedPolyMesh*); virtual void InitializeDrawPrimitive(unsigned char, int=0); virtual void SetSubprimitiveLengths(unsigned char *, int); virtual void GetSubprimitiveLengths(unsigned char **, int*); void FindFacePlanes(); virtual int FindBackFace(const Stuff::Point3D&); const Stuff::Plane *GetPolygonPlane(int i) { Check_Object(this); Verify(i testList; Stuff::DynamicArrayOf facePlanes; }; #define ICO_X 0.525731112119133606f #define ICO_Z 0.850650808352039932f extern float vdata[12][3]; extern unsigned int tindices [20][3]; extern long triDrawn; void subdivide ( Stuff::Point3D *coords, Stuff::Point3D& v1, Stuff::Point3D& v2, Stuff::Point3D& v3, long depth, long tri2draw, float rad = 1.0f ); MLR_I_PMesh* CreateIndexedCube_NoColor_NoLit(Stuff::Scalar, MLRState*); MLRShape* CreateIndexedIcosahedron_NoColor_NoLit( IcoInfo&, MLRState* ); }