• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 * Copyright 2006 Sony Computer Entertainment Inc.
3 *
4 * Licensed under the MIT Open Source License, for details please see license.txt or the website
5 * http://www.opensource.org/licenses/mit-license.php
6 *
7 */
8 
9 #ifndef __domMesh_h__
10 #define __domMesh_h__
11 
12 #include <dae/daeDocument.h>
13 #include <dom/domTypes.h>
14 #include <dom/domElements.h>
15 
16 #include <dom/domSource.h>
17 #include <dom/domVertices.h>
18 #include <dom/domLines.h>
19 #include <dom/domLinestrips.h>
20 #include <dom/domPolygons.h>
21 #include <dom/domPolylist.h>
22 #include <dom/domTriangles.h>
23 #include <dom/domTrifans.h>
24 #include <dom/domTristrips.h>
25 #include <dom/domExtra.h>
26 class DAE;
27 
28 /**
29  * The mesh element contains vertex and primitive information sufficient to
30  * describe basic geometric meshes.
31  */
32 class domMesh : public daeElement
33 {
34 public:
getElementType()35 	virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::MESH; }
ID()36 	static daeInt ID() { return 614; }
typeID()37 	virtual daeInt typeID() const { return ID(); }
38 
39 protected:  // Elements
40 /**
41  *  The mesh element must contain one or more source elements.  @see domSource
42  */
43 	domSource_Array elemSource_array;
44 /**
45  *  The mesh element must contain one vertices element.  @see domVertices
46  */
47 	domVerticesRef elemVertices;
48 /**
49  *  The mesh element may contain any number of lines elements.  @see domLines
50  */
51 	domLines_Array elemLines_array;
52 /**
53  *  The mesh element may contain any number of linestrips elements.  @see
54  * domLinestrips
55  */
56 	domLinestrips_Array elemLinestrips_array;
57 /**
58  *  The mesh element may contain any number of polygons elements.  @see domPolygons
59  */
60 	domPolygons_Array elemPolygons_array;
61 /**
62  *  The mesh element may contain any number of polylist elements.  @see domPolylist
63  */
64 	domPolylist_Array elemPolylist_array;
65 /**
66  *  The mesh element may contain any number of triangles elements.  @see domTriangles
67  */
68 	domTriangles_Array elemTriangles_array;
69 /**
70  *  The mesh element may contain any number of trifans elements.  @see domTrifans
71  */
72 	domTrifans_Array elemTrifans_array;
73 /**
74  *  The mesh element may contain any number of tristrips elements.  @see domTristrips
75  */
76 	domTristrips_Array elemTristrips_array;
77 /**
78  *  The extra element may appear any number of times.  @see domExtra
79  */
80 	domExtra_Array elemExtra_array;
81 	/**
82 	 * Used to preserve order in elements that do not specify strict sequencing of sub-elements.
83 	 */
84 	daeElementRefArray _contents;
85 	/**
86 	 * Used to preserve order in elements that have a complex content model.
87 	 */
88 	daeUIntArray       _contentsOrder;
89 
90 	/**
91 	 * Used to store information needed for some content model objects.
92 	 */
93 	daeTArray< daeCharArray * > _CMData;
94 
95 
96 public:	//Accessors and Mutators
97 	/**
98 	 * Gets the source element array.
99 	 * @return Returns a reference to the array of source elements.
100 	 */
getSource_array()101 	domSource_Array &getSource_array() { return elemSource_array; }
102 	/**
103 	 * Gets the source element array.
104 	 * @return Returns a constant reference to the array of source elements.
105 	 */
getSource_array()106 	const domSource_Array &getSource_array() const { return elemSource_array; }
107 	/**
108 	 * Gets the vertices element.
109 	 * @return a daeSmartRef to the vertices element.
110 	 */
getVertices()111 	const domVerticesRef getVertices() const { return elemVertices; }
112 	/**
113 	 * Gets the lines element array.
114 	 * @return Returns a reference to the array of lines elements.
115 	 */
getLines_array()116 	domLines_Array &getLines_array() { return elemLines_array; }
117 	/**
118 	 * Gets the lines element array.
119 	 * @return Returns a constant reference to the array of lines elements.
120 	 */
getLines_array()121 	const domLines_Array &getLines_array() const { return elemLines_array; }
122 	/**
123 	 * Gets the linestrips element array.
124 	 * @return Returns a reference to the array of linestrips elements.
125 	 */
getLinestrips_array()126 	domLinestrips_Array &getLinestrips_array() { return elemLinestrips_array; }
127 	/**
128 	 * Gets the linestrips element array.
129 	 * @return Returns a constant reference to the array of linestrips elements.
130 	 */
getLinestrips_array()131 	const domLinestrips_Array &getLinestrips_array() const { return elemLinestrips_array; }
132 	/**
133 	 * Gets the polygons element array.
134 	 * @return Returns a reference to the array of polygons elements.
135 	 */
getPolygons_array()136 	domPolygons_Array &getPolygons_array() { return elemPolygons_array; }
137 	/**
138 	 * Gets the polygons element array.
139 	 * @return Returns a constant reference to the array of polygons elements.
140 	 */
getPolygons_array()141 	const domPolygons_Array &getPolygons_array() const { return elemPolygons_array; }
142 	/**
143 	 * Gets the polylist element array.
144 	 * @return Returns a reference to the array of polylist elements.
145 	 */
getPolylist_array()146 	domPolylist_Array &getPolylist_array() { return elemPolylist_array; }
147 	/**
148 	 * Gets the polylist element array.
149 	 * @return Returns a constant reference to the array of polylist elements.
150 	 */
getPolylist_array()151 	const domPolylist_Array &getPolylist_array() const { return elemPolylist_array; }
152 	/**
153 	 * Gets the triangles element array.
154 	 * @return Returns a reference to the array of triangles elements.
155 	 */
getTriangles_array()156 	domTriangles_Array &getTriangles_array() { return elemTriangles_array; }
157 	/**
158 	 * Gets the triangles element array.
159 	 * @return Returns a constant reference to the array of triangles elements.
160 	 */
getTriangles_array()161 	const domTriangles_Array &getTriangles_array() const { return elemTriangles_array; }
162 	/**
163 	 * Gets the trifans element array.
164 	 * @return Returns a reference to the array of trifans elements.
165 	 */
getTrifans_array()166 	domTrifans_Array &getTrifans_array() { return elemTrifans_array; }
167 	/**
168 	 * Gets the trifans element array.
169 	 * @return Returns a constant reference to the array of trifans elements.
170 	 */
getTrifans_array()171 	const domTrifans_Array &getTrifans_array() const { return elemTrifans_array; }
172 	/**
173 	 * Gets the tristrips element array.
174 	 * @return Returns a reference to the array of tristrips elements.
175 	 */
getTristrips_array()176 	domTristrips_Array &getTristrips_array() { return elemTristrips_array; }
177 	/**
178 	 * Gets the tristrips element array.
179 	 * @return Returns a constant reference to the array of tristrips elements.
180 	 */
getTristrips_array()181 	const domTristrips_Array &getTristrips_array() const { return elemTristrips_array; }
182 	/**
183 	 * Gets the extra element array.
184 	 * @return Returns a reference to the array of extra elements.
185 	 */
getExtra_array()186 	domExtra_Array &getExtra_array() { return elemExtra_array; }
187 	/**
188 	 * Gets the extra element array.
189 	 * @return Returns a constant reference to the array of extra elements.
190 	 */
getExtra_array()191 	const domExtra_Array &getExtra_array() const { return elemExtra_array; }
192 	/**
193 	 * Gets the _contents array.
194 	 * @return Returns a reference to the _contents element array.
195 	 */
getContents()196 	daeElementRefArray &getContents() { return _contents; }
197 	/**
198 	 * Gets the _contents array.
199 	 * @return Returns a constant reference to the _contents element array.
200 	 */
getContents()201 	const daeElementRefArray &getContents() const { return _contents; }
202 
203 protected:
204 	/**
205 	 * Constructor
206 	 */
domMesh(DAE & dae)207 	domMesh(DAE& dae) : daeElement(dae), elemSource_array(), elemVertices(), elemLines_array(), elemLinestrips_array(), elemPolygons_array(), elemPolylist_array(), elemTriangles_array(), elemTrifans_array(), elemTristrips_array(), elemExtra_array() {}
208 	/**
209 	 * Destructor
210 	 */
~domMesh()211 	virtual ~domMesh() { daeElement::deleteCMDataArray(_CMData); }
212 	/**
213 	 * Overloaded assignment operator
214 	 */
215 	virtual domMesh &operator=( const domMesh &cpy ) { (void)cpy; return *this; }
216 
217 public: // STATIC METHODS
218 	/**
219 	 * Creates an instance of this class and returns a daeElementRef referencing it.
220 	 * @return a daeElementRef referencing an instance of this object.
221 	 */
222 	static DLLSPEC daeElementRef create(DAE& dae);
223 	/**
224 	 * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
225 	 * If a daeMetaElement already exists it will return that instead of creating a new one.
226 	 * @return A daeMetaElement describing this COLLADA element.
227 	 */
228 	static DLLSPEC daeMetaElement* registerElement(DAE& dae);
229 };
230 
231 
232 #endif
233