3es  0.7
3esmeshmessages.h
1 //
2 // author: Kazys Stepanas
3 //
4 #ifndef _3ESMESHHANDLERMESSAGES_H_
5 #define _3ESMESHHANDLERMESSAGES_H_
6 
7 #include "3es-core.h"
8 
9 #include "3esmessages.h"
10 
11 #include "3espacketreader.h"
12 #include "3espacketwriter.h"
13 
93 
94 namespace tes
95 {
99  {
102  };
103 
107  {
108  MmtInvalid,
109  MmtDestroy,
110  MmtCreate,
131  };
132 
135  enum DrawType
136  {
137  DtPoints,
138  DtLines,
139  DtTriangles,
142  //DtQuads,
143  //DtLineLoop,
144  };
145 
149  {
151  enum { MessageId = MmtCreate };
152 
153  uint32_t meshId;
154  uint32_t vertexCount;
155  uint32_t indexCount;
156  uint8_t drawType;
158 
162  inline bool read(PacketReader &reader)
163  {
164  bool ok = true;
165  ok = reader.readElement(meshId) == sizeof(meshId) && ok;
166  ok = reader.readElement(vertexCount) == sizeof(vertexCount) && ok;
167  ok = reader.readElement(indexCount) == sizeof(indexCount) && ok;
168  ok = reader.readElement(drawType) == sizeof(drawType) && ok;
169  ok = attributes.read(reader) && ok;
170  return ok;
171  }
172 
176  inline bool write(PacketWriter &writer) const
177  {
178  bool ok = true;
179  ok = writer.writeElement(meshId) == sizeof(meshId) && ok;
180  ok = writer.writeElement(vertexCount) == sizeof(vertexCount) && ok;
181  ok = writer.writeElement(indexCount) == sizeof(indexCount) && ok;
182  ok = writer.writeElement(drawType) == sizeof(drawType) && ok;
183  ok = attributes.write(writer) && ok;
184  return ok;
185  }
186  };
187 
191  {
193  enum { MessageId = MmtRedefine };
194  };
195 
199  {
201  enum { MessageId = MmtDestroy };
202 
203  uint32_t meshId;
204 
208  inline bool read(PacketReader &reader)
209  {
210  bool ok = true;
211  ok = reader.readElement(meshId) == sizeof(meshId);
212  return ok;
213  }
214 
218  inline bool write(PacketWriter &writer) const
219  {
220  bool ok = true;
221  ok = writer.writeElement(meshId) == sizeof(meshId);
222  return ok;
223  }
224  };
225 
229  {
230  uint32_t meshId;
231  uint32_t offset;
232  uint32_t reserved;
233  uint16_t count;
234 
238  inline bool read(PacketReader &reader)
239  {
240  bool ok = true;
241  ok = reader.readElement(meshId) == sizeof(meshId) && ok;
242  ok = reader.readElement(offset) == sizeof(offset) && ok;
243  ok = reader.readElement(reserved) == sizeof(reserved) && ok;
244  ok = reader.readElement(count) == sizeof(count) && ok;
245  return ok;
246  }
247 
251  inline bool write(PacketWriter &writer) const
252  {
253  bool ok = true;
254  ok = writer.writeElement(meshId) == sizeof(meshId) && ok;
255  ok = writer.writeElement(offset) == sizeof(offset) && ok;
256  ok = writer.writeElement(reserved) == sizeof(reserved) && ok;
257  ok = writer.writeElement(count) == sizeof(count) && ok;
258  return ok;
259  }
260  };
261 
264  struct Material
265  {
267  enum { MessageId = MmtSetMaterial };
268 
269  uint32_t meshId;
270  uint32_t materialId;
271 
275  inline bool read(PacketReader &reader)
276  {
277  bool ok = true;
278  ok = reader.readElement(meshId) == sizeof(meshId) && ok;
279  ok = reader.readElement(materialId) == sizeof(materialId) && ok;
280  return ok;
281  }
282 
286  inline bool write(PacketWriter &writer) const
287  {
288  bool ok = true;
289  ok = writer.writeElement(meshId) == sizeof(meshId) && ok;
290  ok = writer.writeElement(materialId) == sizeof(materialId) && ok;
291  return ok;
292  }
293  };
294 
298  {
300  enum { MessageId = MmtFinalise };
301 
302  uint32_t meshId;
303  uint32_t flags;
304 
308  inline bool read(PacketReader &reader)
309  {
310  bool ok = true;
311  ok = reader.readElement(meshId) == sizeof(meshId) && ok;
312  ok = reader.readElement(flags) == sizeof(flags) && ok;
313  return ok;
314  }
315 
319  inline bool write(PacketWriter &writer) const
320  {
321  bool ok = true;
322  ok = writer.writeElement(meshId) == sizeof(meshId) && ok;
323  ok = writer.writeElement(flags) == sizeof(flags) && ok;
324  return ok;
325  }
326  };
327 }
328 
329 #endif // _3ESMESHHANDLERMESSAGES_H_
uint32_t indexCount
Total index count.
Definition: 3esmeshmessages.h:155
Add UV coordinates.
Definition: 3esmeshmessages.h:120
MeshResource destruction message.
Definition: 3esmeshmessages.h:198
Define the material for this mesh.
Definition: 3esmeshmessages.h:123
bool read(PacketReader &reader)
Read this message from reader.
Definition: 3esmeshmessages.h:162
bool write(PacketWriter &writer) const
Write this message to writer.
Definition: 3esmessages.h:386
Finalise and build the mesh.
Definition: 3esmeshmessages.h:130
bool write(PacketWriter &writer) const
Write this message to writer.
Definition: 3esmeshmessages.h:319
bool read(PacketReader &reader)
Read this message from reader.
Definition: 3esmeshmessages.h:275
DrawType
Defines the primitives for a mesh.
Definition: 3esmeshmessages.h:135
MeshResource creation message.
Definition: 3esmeshmessages.h:148
Definition: 3esbounds.h:13
bool read(PacketReader &reader)
Read this message from reader.
Definition: 3esmeshmessages.h:238
uint8_t drawType
Topology: see DrawType.
Definition: 3esmeshmessages.h:156
Message structure for adding vertices, colours, indices, or UVs.
Definition: 3esmeshmessages.h:228
bool read(PacketReader &reader)
Read this message from reader.
Definition: 3esmeshmessages.h:308
Redefine the core aspects of the mesh.
Definition: 3esmeshmessages.h:128
Contains core object attributes.
Definition: 3esmessages.h:353
bool write(PacketWriter &writer) const
Write this message to writer.
Definition: 3esmeshmessages.h:286
Add vertices.
Definition: 3esmeshmessages.h:112
bool read(PacketReader &reader)
Read this message from reader.
Definition: 3esmeshmessages.h:208
ObjectAttributes attributes
Core attributes.
Definition: 3esmeshmessages.h:157
MeshBuildFlags
The set of valid flags used in finalise messages.
Definition: 3esmeshmessages.h:98
MeshResource redefinition message.
Definition: 3esmeshmessages.h:190
Calculate normals. Overwrites normals if present.
Definition: 3esmeshmessages.h:101
Geometry shader based voxels. Vertices define the voxel centres, the normals define half extents...
Definition: 3esmeshmessages.h:141
uint32_t flags
MeshBuildFlags
Definition: 3esmeshmessages.h:303
size_t readElement(uint8_t *bytes, size_t elementSize)
Reads a single data element from the current position.
bool read(PacketReader &reader)
Read this message from reader.
Definition: 3esmessages.h:373
Add vertex colours.
Definition: 3esmeshmessages.h:116
bool write(PacketWriter &writer) const
Write this message to writer.
Definition: 3esmeshmessages.h:218
A utility class for writing payload data to a PacketHeader.
Definition: 3espacketwriter.h:34
Add normals.
Definition: 3esmeshmessages.h:118
Add indices.
Definition: 3esmeshmessages.h:114
uint32_t vertexCount
Total count.
Definition: 3esmeshmessages.h:154
size_t writeElement(const uint8_t *bytes, size_t elementSize)
Writes a single data element from the current position.
bool write(PacketWriter &writer) const
Write this message to writer.
Definition: 3esmeshmessages.h:251
uint32_t meshId
Mesh resource ID.
Definition: 3esmeshmessages.h:153
MeshMessageType
Defines the messageIDs for mesh message routing.
Definition: 3esmeshmessages.h:106
bool write(PacketWriter &writer) const
Write this message to writer.
Definition: 3esmeshmessages.h:176
Not ready for use.
Definition: 3esmeshmessages.h:264
Message to finalise a mesh, ready for use.
Definition: 3esmeshmessages.h:297
A utility class for dealing with reading packets.
Definition: 3espacketreader.h:18