3es  0.7
3esservermacros.h
1 //
2 // author Kazys Stepanas
3 //
4 // Copyright (c) Kazys Stepanas 2014
5 //
6 
7 #ifdef TES_ENABLE
8 
9 #include "3es-core.h"
10 
11 #include "3esconnectionmonitor.h"
12 #include "3esserver.h"
13 #include "3esserverutil.h"
14 
15 #include "3escolour.h"
16 #include "3escoordinateframe.h"
17 #include "3esfeature.h"
18 #include "3esmessages.h"
19 #include "3esmeshmessages.h"
20 #include "shapes/3esshapes.h"
21 
22 //-----------------------------------------------------------------------------
23 // General macros.
24 //-----------------------------------------------------------------------------
25 
32 
38 #define TES_STMT(statement) statement
39 
44 #define TES_IF(condition) if (condition)
45 
50 #define TES_PTR_ID(ptr) static_cast<uint32_t>(reinterpret_cast<uint64_t>(ptr))
51 
57 #define TES_RGB(r, g, b) tes::Colour(r, g, b)
58 #define TES_RGBA(r, g, b, a) tes::Colour(r, g, b, a)
65 
69 #define TES_COLOUR(name) tes::Colour::Colours[tes::Colour::name]
70 
74 #define TES_COLOUR_I(index) tes::Colour::Colours[index]
75 
80 #define TES_COLOUR_A(name, a) tes::Colour(tes::Colour::Colours[tes::Colour::name], a)
81 
82 //-----------------------------------------------------------------------------
83 // Server setup macros
84 //-----------------------------------------------------------------------------
85 
93 #define TES_CATEGORY(server, _name, _categoryId, _parentId, _active) \
94  if (server) \
95  { \
96  tes::CategoryNameMessage msg; \
97  msg.categoryId = _categoryId; \
98  msg.parentId = _parentId; \
99  msg.defaultActive = (_active) ? 1 : 0; \
100  const size_t nameLen = (_name) ? strlen(_name) : 0u; \
101  msg.nameLength = (uint16_t)((nameLen <= 0xffffu) ? nameLen : 0xffffu); \
102  msg.name = _name; \
103  tes::sendMessage(*(server), tes::MtCategory, tes::CategoryNameMessage::MessageId, msg); \
104  }
105 
110 #define TES_SERVER_DECL(server) tes::Server *server = nullptr;
111 
117 #define TES_SETTINGS(settings, ...) tes::ServerSettings settings = tes::ServerSettings(__VA_ARGS__);
118 #define TES_SERVER_INFO(info, infoCoordinateFrame) \
126  tes::ServerInfoMessage info; \
127  tes::initDefaultServerInfo(&info); \
128  info.coordinateFrame = infoCoordinateFrame;
129 
135 #define TES_SERVER_INFO_TIME(info, timeUnit, defaultFrameTime) \
136  info.timeUnit = timeUnit; \
137  info.defaultFrameTime = defaultFrameTime;
138 
145 #define TES_SERVER_CREATE(server, settings, info) server = tes::Server::create(settings, info);
146 
153 #define TES_SERVER_START(server, mode) if (server) { (server)->connectionMonitor()->start(mode); }
154 
169 #define TES_SERVER_UPDATE(server, ...) \
170  if (server) \
171  { \
172  (server)->updateTransfers(0); \
173  (server)->updateFrame(__VA_ARGS__); \
174  tes::ConnectionMonitor *_conMon = (server)->connectionMonitor(); \
175  if (_conMon->mode() == tes::ConnectionMonitor::Synchronous) \
176  { \
177  _conMon->monitorConnections(); \
178  } \
179  _conMon->commitConnections(); \
180  }
181 
187 #define TES_SERVER_START_WAIT(server, timems) \
188  if ((server) && (server)->connectionMonitor()->waitForConnection(timems) > 0) \
189  { \
190  (server)->connectionMonitor()->commitConnections(); \
191  }
192 
195 #define TES_SET_CONNECTION_CALLBACK(server, ...) \
196  if (server) { (server)->connectionMonitor()->setConnectionCallback(__VA_ARGS__); }
197 
204 #define TES_SERVER_STOP(server) \
205  if (server) \
206  { \
207  (server)->close(); \
208  (server)->dispose(); \
209  (server) = nullptr; \
210  }
211 
215 #define TES_ACTIVE(server) ((server) != nullptr && (server)->active())
216 #define TES_SET_ACTIVE(server, _active) if (server) { (server)->setActive(_active) }
221 
225 #define TES_FEATURE(feature) tes::checkFeature(feature)
226 #define TES_FEATURE_FLAG(feature) tes::featureFlag(feature)
230 #define TES_FEATURES(featureFlags) tes::checkFeatures(featureFlags)
234 
239 #define TES_IF_FEATURES(featureFlags, expression) \
240  if (tes::checkFeatures(featureFlags)) \
241  { \
242  expression; \
243  }
244 
245 //-----------------------------------------------------------------------------
246 // Shape macros
247 //-----------------------------------------------------------------------------
248 
253 #define TES_REFERENCE_RESOURCE(server, resource) if (server) { (server)->referenceResource(resource); }
254 
259 #define TES_RELEASE_RESOURCE(server, resource) if (server) { (server)->releaseResource(resource); }
260 
265 #define TES_MESH_PLACEHOLDER(id) tes::MeshPlaceholder(id)
266 
272 #define TES_ARROW(server, colour, ...) if (server) { (server)->create(tes::Arrow(__VA_ARGS__).setColour(colour)); }
273 #define TES_ARROW_T(server, colour, ...) if (server) { (server)->create(tes::Arrow(__VA_ARGS__).setColour(colour).setTransparent(true)); }
279 #define TES_ARROW_W(server, colour, ...) if (server) { (server)->create(tes::Arrow(__VA_ARGS__).setColour(colour).setWireframe(true)); }
285 
291 #define TES_BOX(server, colour, ...) if (server) { (server)->create(tes::Box(__VA_ARGS__).setColour(colour)); }
292 #define TES_BOX_T(server, colour, ...) if (server) { (server)->create(tes::Box(__VA_ARGS__).setColour(colour).setTransparent(true)); }
298 #define TES_BOX_W(server, colour, ...) if (server) { (server)->create(tes::Box(__VA_ARGS__).setColour(colour).setWireframe(true)); }
304 
310 #define TES_CAPSULE(server, colour, ...) if (server) { (server)->create(tes::Capsule(__VA_ARGS__).setColour(colour)); }
311 #define TES_CAPSULE_T(server, colour, ...) if (server) { (server)->create(tes::Capsule(__VA_ARGS__).setColour(colour).setTransparent(true)); }
317 #define TES_CAPSULE_W(server, colour, ...) if (server) { (server)->create(tes::Capsule(__VA_ARGS__).setColour(colour).setWireframe(true)); }
323 
329 #define TES_CONE(server, colour, ...) if (server) { (server)->create(tes::Cone(__VA_ARGS__).setColour(colour)); }
330 #define TES_CONE_T(server, colour, ...) if (server) { (server)->create(tes::Cone(__VA_ARGS__).setColour(colour).setTransparent(true)); }
336 #define TES_CONE_W(server, colour, ...) if (server) { (server)->create(tes::Cone(__VA_ARGS__).setColour(colour).setWireframe(true)); }
342 
348 #define TES_CYLINDER(server, colour, ...) if (server) { (server)->create(tes::Cylinder(__VA_ARGS__).setColour(colour)); }
349 #define TES_CYLINDER_T(server, colour, ...) if (server) { (server)->create(tes::Cylinder(__VA_ARGS__).setColour(colour).setTransparent(true)); }
355 #define TES_CYLINDER_W(server, colour, ...) if (server) { (server)->create(tes::Cylinder(__VA_ARGS__).setColour(colour).setWireframe(true)); }
361 
367 #define TES_LINES(server, colour, ...) if (server) { (server)->create(tes::MeshShape(tes::DtLines, ##__VA_ARGS__).setColour(colour)); }
368 
374 #define TES_LINES_E(server, colour, ...) if (server) { (server)->create(tes::MeshShape(tes::DtLines, ##__VA_ARGS__).expandVertices().setColour(colour)); }
375 
382 #define TES_LINE(server, colour, v0, v1, ...) \
383  if (server) \
384  { \
385  const tes::Vector3f _line[2] = { tes::Vector3f(v0), tes::Vector3f(v1) }; \
386  tes::MeshShape shape(tes::DtLines, _line[0].v, 2, sizeof(_line[0]), ##__VA_ARGS__); shape.setColour(colour); \
387  (server)->create(shape); \
388  }
389 
394 #define TES_MESHSET(server, ...) if (server) { (server)->create(tes::MeshSet(__VA_ARGS__)); }
395 
401 #define TES_PLANE(server, colour, ...) if (server) { (server)->create(tes::Plane(__VA_ARGS__).setColour(colour)); }
402 #define TES_PLANE_T(server, colour, ...) if (server) { (server)->create(tes::Plane(__VA_ARGS__).setColour(colour).setTransparent(true)); }
408 #define TES_PLANE_W(server, colour, ...) if (server) { (server)->create(tes::Plane(__VA_ARGS__).setColour(colour).setWireframe(true)); }
414 
420 #define TES_POINTCLOUDSHAPE(server, colour, ...) if (server) { (server)->create(tes::PointCloudShape(__VA_ARGS__).setColour(colour)); }
421 
427 #define TES_POINTS(server, colour, ...) if (server) { (server)->create(tes::MeshShape(tes::DtPoints, ##__VA_ARGS__).setColour(colour)); }
428 
434 #define TES_POINTS_E(server, colour, ...) if (server) { (server)->create(tes::MeshShape(tes::DtPoints, ##__VA_ARGS__).expandVertices().setColour(colour)); }
435 
442 #define TES_VOXELS(server, colour, resolution, ...) if (server) { (server)->create(tes::MeshShape(tes::DtVoxels, ##__VA_ARGS__).setUniformNormal(tes::Vector3f(0.5f * resolution)).setColour(colour)); }
443 
449 #define TES_SPHERE(server, colour, ...) if (server) { (server)->create(tes::Sphere(__VA_ARGS__).setColour(colour)); }
450 #define TES_SPHERE_T(server, colour, ...) if (server) { (server)->create(tes::Sphere(__VA_ARGS__).setColour(colour).setTransparent(true)); }
456 #define TES_SPHERE_W(server, colour, ...) if (server) { (server)->create(tes::Sphere(__VA_ARGS__).setColour(colour).setWireframe(true)); }
462 
468 #define TES_STAR(server, colour, ...) if (server) { (server)->create(tes::Star(__VA_ARGS__).setColour(colour)); }
469 #define TES_STAR_T(server, colour, ...) if (server) { (server)->create(tes::Star(__VA_ARGS__).setColour(colour).setTransparent(true)); }
475 #define TES_STAR_W(server, colour, ...) if (server) { (server)->create(tes::Star(__VA_ARGS__).setColour(colour).setWireframe(true)); }
481 
487 #define TES_TEXT2D_SCREEN(server, colour, ...) if (server) { (server)->create(tes::Text2D(__VA_ARGS__).setColour(colour)); }
488 #define TES_TEXT2D_WORLD(server, colour, ...) if (server) { (server)->create(tes::Text2D(__VA_ARGS__).setInWorldSpace(true).setColour(colour)); }
494 
500 #define TES_TEXT3D(server, colour, ...) if (server) { (server)->create(tes::Text3D(__VA_ARGS__).setColour(colour)); }
501 
507 #define TES_TEXT3D_FACING(server, colour, ...) if (server) { (server)->create(tes::Text3D(__VA_ARGS__).setScreenFacing(true).setColour(colour); }
508 
514 #define TES_TRIANGLES(server, colour, ...) \
515  if (server) { tes::MeshShape shape(tes::DtTriangles, ##__VA_ARGS__); shape.setColour(colour); (server)->create(shape); }
516 
522 #define TES_TRIANGLES_E(server, colour, ...) \
523  if (server) { tes::MeshShape shape(tes::DtTriangles, ##__VA_ARGS__); shape.expandVertices().setColour(colour); (server)->create(shape); }
524 
530 #define TES_TRIANGLES_N(server, colour, ...) \
531  if (server) { tes::MeshShape shape(tes::DtTriangles, ##__VA_ARGS__); shape.setCalculateNormals(true).setColour(colour); (server)->create(shape); }
532 
538 #define TES_TRIANGLES_NE(server, colour, ...) \
539  if (server) { tes::MeshShape shape(tes::DtTriangles, ##__VA_ARGS__); shape.expandVertices().setCalculateNormals(true).setColour(colour); (server)->create(shape); }
540 
546 #define TES_TRIANGLES_W(server, colour, ...) \
547  if (server) { tes::MeshShape shape(tes::DtTriangles, ##__VA_ARGS__); shape.setWireframe(true); shape.setColour(colour); (server)->create(shape); }
548 
554 #define TES_TRIANGLES_WE(server, colour, ...) \
555  if (server) { tes::MeshShape shape(tes::DtTriangles, ##__VA_ARGS__); shape.expandVertices().setWireframe(true); shape.setColour(colour); (server)->create(shape); }
556 
562 #define TES_TRIANGLES_T(server, colour, ...) \
563  if (server) { tes::MeshShape shape(tes::DtTriangles, ##__VA_ARGS__); shape.setTransparent(true); shape.setColour(colour); (server)->create(shape); }
564 
570 #define TES_TRIANGLES_TE(server, colour, ...) \
571  if (server) { tes::MeshShape shape(tes::DtTriangles, ##__VA_ARGS__); shape.expandVertices().setTransparent(true); shape.setColour(colour); (server)->create(shape); }
572 
584 #define TES_TRIANGLE(server, colour, v0, v1, v2, ...) \
585  if (server) \
586  { \
587  const tes::Vector3f _tri[3] = { tes::Vector3f(v0), tes::Vector3f(v1), tes::Vector3f(v2) }; \
588  tes::MeshShape shape(tes::DtTriangles, _tri[0].v, 3, sizeof(tes::Vector3f), ##__VA_ARGS__); \
589  shape.setColour(colour).setTwoSided(true); \
590  (server)->create(shape); \
591  }
592 
601 #define TES_TRIANGLE_W(server, colour, v0, v1, v2, ...) \
602 if (server) \
603 { \
604  const tes::Vector3f _tri[3] = { tes::Vector3f(v0), tes::Vector3f(v1), tes::Vector3f(v2) }; \
605  tes::MeshShape shape(tes::DtTriangles, _tri[0].v, 3, sizeof(_tri[0]), ##__VA_ARGS__); shape.setColour(colour); \
606  shape.setWireframe(true); \
607  (server)->create(shape); \
608 }
609 #define TES_TRIANGLE_T(server, colour, v0, v1, v2, ...) \
618  { \
619  const tes::Vector3f _tri[3] = { tes::Vector3f(v0), tes::Vector3f(v1), tes::Vector3f(v2) }; \
620  tes::MeshShape shape(tes::DtTriangles, _tri[0].v, 3, sizeof(_tri[0]), ##__VA_ARGS__); \
621  shape.setColour(colour); \
622  shape.setTransparent(true).setTwoSided(true); \
623  (server)->create(shape); \
624  }
625 
640 #define TES_TRIANGLE_I(server, colour, verts, i0, i1, i2, ...) \
641  if (server) \
642  { \
643  const tes::Vector3f _tri[3] = { tes::Vector3f((verts) + (i0 * 3)), tes::Vector3f((verts) + (i1 * 3)), tes::Vector3f((verts) + (i2 * 3)) }; \
644  tes::MeshShape shape(tes::DtTriangles, _tri[0].v, 3, sizeof(_tri[0]), ##__VA_ARGS__); \
645  shape.setColour(colour); \
646  (server)->create(shape); \
647  }
648 
663 #define TES_TRIANGLE_IW(server, colour, verts, i0, i1, i2, ...) \
664  if (server) \
665  { \
666  const tes::Vector3f _tri[3] = { tes::Vector3f((verts) + (i0 * 3)), tes::Vector3f((verts) + (i1 * 3)), tes::Vector3f((verts) + (i2 * 3)) }; \
667  tes::MeshShape shape(tes::DtTriangles, _tri[0].v, 3, sizeof(_tri[0]), ##__VA_ARGS__); \
668  shape.setColour(colour); \
669  shape.setWireframe(true); \
670  (server)->create(shape); \
671  }
672 
687 #define TES_TRIANGLE_IT(server, colour, verts, i0, i1, i2, ...) \
688  if (server) \
689  { \
690  const tes::Vector3f _tri[3] = { tes::Vector3f((verts) + (i0 * 3)), tes::Vector3f((verts) + (i1 * 3)), tes::Vector3f((verts) + (i2 * 3)) }; \
691  tes::MeshShape shape(tes::DtTriangles, _tri[0].v, 3, sizeof(_tri[0]), ##__VA_ARGS__); \
692  shape.setColour(colour); \
693  shape.setTransparent(true).setTwoSided(true); \
694  (server)->create(shape); \
695  }
696 
701 #define TES_ARROW_END(server, id) if (server) { (server)->destroy(tes::Arrow(static_cast<uint32_t>(id))); }
702 #define TES_BOX_END(server, id) if (server) { (server)->destroy(tes::Box(static_cast<uint32_t>(id))); }
707 #define TES_CAPSULE_END(server, id) if (server) { (server)->destroy(tes::Capsule(static_cast<uint32_t>(id))); }
712 #define TES_CONE_END(server, id) if (server) { (server)->destroy(tes::Cone(static_cast<uint32_t>(id))); }
717 #define TES_CYLINDER_END(server, id) if (server) { (server)->destroy(tes::Cylinder(static_cast<uint32_t>(id))); }
722 #define TES_LINES_END(server, id) if (server) { (server)->destroy(tes::MeshShape(tes::DtLines, nullptr, 0, 0, static_cast<uint32_t>(id))); }
727 #define TES_MESHSET_END(server, id, resource) if (server) { (server)->destroy(tes::MeshSet(static_cast<uint32_t>(resource, id))); }
734 #define TES_PLANE_END(server, id) if (server) { (server)->destroy(tes::Plane(static_cast<uint32_t>(id))); }
739 #define TES_POINTCLOUDSHAPE_END(server, cloud, id) if (server) { (server)->destroy(tes::PointCloudShape(cloud, static_cast<uint32_t>(id))); }
745 #define TES_POINTS_END(server, id) if (server) { (server)->destroy(tes::MeshShape(tes::DtPoints, nullptr, 0, 0, static_cast<uint32_t>(id))); }
750 #define TES_VOXELS_END(server, id) if (server) { (server)->destroy(tes::MeshShape(tes::DtVoxels, nullptr, 0, 0, static_cast<uint32_t>(id))); }
755 #define TES_SPHERE_END(server, id) if (server) { (server)->destroy(tes::Sphere(static_cast<uint32_t>(id))); }
760 #define TES_STAR_END(server, id) if (server) { (server)->destroy(tes::Star(static_cast<uint32_t>(id))); }
765 #define TES_TEXT2D_END(server, id) if (server) { (server)->destroy(tes::Text2D("", static_cast<uint32_t>(id))); }
770 #define TES_TEXT3D_END(server, id) if (server) { (server)->destroy(tes::Text3D("", static_cast<uint32_t>(id))); }
775 #define TES_TRIANGLES_END(server, id) if (server) { (server)->destroy(tes::MeshShape(tes::DtTriangles, nullptr, 0, 0, static_cast<uint32_t>(id))); }
780 #define TES_TRIANGLE_END(server, id) if (server) { (server)->destroy(tes::MeshShape(tes::DtTriangles, nullptr, 0, 0, static_cast<uint32_t>(id))); }
785 
786 
787 //-----------------------------------------------------------------------------
788 // Shape update macros
789 //-----------------------------------------------------------------------------
796 #define TES_POS_UPDATE(server, ShapeType, objectID, pos) \
797  if (server) { (server)->update(tes::ShapeType(objectID, 0).setPosition(pos).setFlags(tes::OFUpdateMode | tes::OFPosition)); }
798 
805 #define TES_ROT_UPDATE(server, ShapeType, objectID, quaternion) \
806  if (server) { (server)->update(tes::ShapeType(objectID, 0).setRotation(quaternion).setFlags(tes::OFUpdateMode | tes::OFRotation)); }
807 
814 #define TES_SCALE_UPDATE(server, ShapeType, objectID, scale) \
815  if (server) { (server)->update(tes::ShapeType(objectID, 0).setScale(scale).setFlags(tes::OFUpdateMode | tes::OFScale)); }
816 
823 #define TES_COLOUR_UPDATE(server, ShapeType, objectID, colour) \
824  if (server) { (server)->update(tes::ShapeType(objectID, 0).setColour(colour).setFlags(tes::OFUpdateMode | tes::OFColour)); }
825 
832 #define TES_COLOR_UPDATE(server, ShapeType, objectID, colour) \
833  if (server) { (server)->update(tes::ShapeType(objectID, 0).setColour(colour).setFlags(tes::OFUpdateMode | tes::OFColour)); }
834 
842 #define TES_POSROT_UPDATE(server, ShapeType, objectID, pos, quaternion) \
843  if (server) { (server)->update(tes::ShapeType(objectID, 0).setPosition(pos).setRotation(quaternion).setFlags(tes::OFUpdateMode | tes::OFPosition | tes::OFRotation)); }
844 
852 #define TES_POSSCALE_UPDATE(server, ShapeType, objectID, pos, scale) \
853  if (server) { (server)->update(tes::ShapeType(objectID, 0).setPosition(pos).setScale(scale).setFlags(tes::OFUpdateMode | tes::OFPosition | tes::OFRotation)); }
854 
862 #define TES_ROTSCALE_UPDATE(server, ShapeType, objectID, quaternion, scale) \
863  if (server) { (server)->update(tes::ShapeType(objectID, 0).setRotation(quaternion).setScale(scale).setFlags(tes::OFUpdateMode | tes::OFRotation | tes::OFScale )); }
864 
873 #define TES_PRS_UPDATE(server, ShapeType, objectID, pos, quaternion, scale) \
874  if (server) { (server)->update(tes::ShapeType(objectID, 0).setPosition(pos).setRotation(quaternion).setScale(scale).setFlags(tes::OFUpdateMode | tes::OFPosition | tes::OFRotation | tes::OFScale )); }
875 
884 #define TES_PRC_UPDATE(server, ShapeType, objectID, pos, quaternion, colour) \
885  if (server) { (server)->update(tes::ShapeType(objectID, 0).setPosition(pos).setRotation(quaternion).setColour(colour).setFlags(tes::OFUpdateMode | tes::OFPosition | tes::OFRotation | tes::OFColour )); }
886 
895 #define TES_PSC_UPDATE(server, ShapeType, objectID, pos, scale, colour) \
896  if (server) { (server)->update(tes::ShapeType(objectID, 0).setPosition(pos).setScale(scale).setColour(colour).setFlags(tes::OFUpdateMode | tes::OFPosition | tes::OFScale | tes::OFColour )); }
897 
906 #define TES_RSC_UPDATE(server, ShapeType, objectID, quaternion, scale, colour) \
907  if (server) { (server)->update(tes::ShapeType(objectID, 0).setRotation(quaternion).setScale(scale).setColour(colour).setFlags(tes::OFUpdateMode | tes::OFRotation | tes::OFScale | tes::OFColour )); }
908 
918 #define TES_PRSC_UPDATE(server, ShapeType, objectID, pos, quaternion, scale, colour) \
919  if (server) { (server)->update(tes::ShapeType(objectID, 0).setPosition(pos).setRotation(quaternion).setScale(scale).setColour(colour) )); }
920 
921 #else // !TES_ENABLE
922 
923 #define TES_STMT(...)
924 #define TES_IF(...) if (false)
925 #define TES_PTR_ID(...)
926 #define TES_RGB(...)
927 #define TES_RGBA(...)
928 #define TES_COLOUR(...)
929 #define TES_COLOUR_I(...)
930 #define TES_COLOUR_A(...)
931 
932 #define TES_CATEGORY(...)
933 #define TES_SERVER_DECL(...)
934 #define TES_SETTINGS(...)
935 #define TES_SERVER_INFO(...)
936 #define TES_SERVER_INFO_TIME(...)
937 #define TES_SERVER_CREATE(...)
938 #define TES_SERVER_START(...)
939 #define TES_SERVER_START_WAIT(...)
940 #define TES_SET_CONNECTION_CALLBACK(...)
941 #define TES_SERVER_UPDATE(...)
942 #define TES_SERVER_STOP(...)
943 #define TES_ACTIVE(...) false
944 #define TES_SET_ACTIVE(...)
945 
946 #define TES_FEATURE(...) false
947 #define TES_FEATURE_FLAG(...) 0
948 #define TES_FEATURES(...)
949 #define TES_IF_FEATURES(...)
950 
951 #define TES_REFERENCE_RESOURCE(...)
952 #define TES_RELEASE_RESOURCE(...)
953 #define TES_MESH_PLACEHOLDER(...)
954 
955 #define TES_ARROW(...)
956 #define TES_ARROW_T(...)
957 #define TES_ARROW_W(...)
958 #define TES_BOX(...)
959 #define TES_BOX_T(...)
960 #define TES_BOX_W(...)
961 #define TES_CAPSULE(...)
962 #define TES_CAPSULE_T(...)
963 #define TES_CAPSULE_W(...)
964 #define TES_CONE(...)
965 #define TES_CONE_T(...)
966 #define TES_CONE_W(...)
967 #define TES_CYLINDER(...)
968 #define TES_CYLINDER_T(...)
969 #define TES_CYLINDER_W(...)
970 #define TES_LINES(...)
971 #define TES_LINES_E(...)
972 #define TES_LINE(...)
973 #define TES_MESHSET(...)
974 #define TES_PLANE(...)
975 #define TES_PLANE_T(...)
976 #define TES_PLANE_W(...)
977 #define TES_POINTCLOUDSHAPE(...)
978 #define TES_POINTS(...)
979 #define TES_POINTS_E(...)
980 #define TES_VOXELS(...)
981 #define TES_SPHERE(...)
982 #define TES_SPHERE_T(...)
983 #define TES_SPHERE_W(...)
984 #define TES_STAR(...)
985 #define TES_STAR_T(...)
986 #define TES_STAR_W(...)
987 #define TES_TEXT2D_SCREEN(...)
988 #define TES_TEXT2D_WORLD(...)
989 #define TES_TEXT3D(...)
990 #define TES_TEXT3D_FACING(...)
991 #define TES_TRIANGLES(...)
992 #define TES_TRIANGLES_E(...)
993 #define TES_TRIANGLES_N(...)
994 #define TES_TRIANGLES_NE(...)
995 #define TES_TRIANGLES_W(...)
996 #define TES_TRIANGLES_WE(...)
997 #define TES_TRIANGLES_T(...)
998 #define TES_TRIANGLES_TE(...)
999 #define TES_TRIANGLE(...)
1000 #define TES_TRIANGLE_W(...)
1001 #define TES_TRIANGLE_I(...)
1002 #define TES_TRIANGLE_T(...)
1003 #define TES_TRIANGLE_IT(...)
1004 #define TES_TRIANGLE_IW(...)
1005 
1006 #define TES_ARROW_END(...)
1007 #define TES_BOX_END(...)
1008 #define TES_CAPSULE_END(...)
1009 #define TES_CONE_END(...)
1010 #define TES_CYLINDER_END(...)
1011 #define TES_LINES_END(...)
1012 #define TES_MESHSET_END(...)
1013 #define TES_PLANE_END(...)
1014 #define TES_POINTCLOUDSHAPE_END(...)
1015 #define TES_POINTS_END(...)
1016 #define TES_VOXELS_END(...)
1017 #define TES_SPHERE_END(...)
1018 #define TES_STAR_END(...)
1019 #define TES_TEXT2D_END(...)
1020 #define TES_TEXT3D_END(...)
1021 #define TES_TRIANGLES_END(...)
1022 #define TES_TRIANGLE_END(...)
1023 
1024 #define TES_POS_UPDATE(...)
1025 #define TES_ROT_UPDATE(...)
1026 #define TES_SCALE_UPDATE(...)
1027 #define TES_COLOUR_UPDATE(...)
1028 #define TES_COLOR_UPDATE(...)
1029 #define TES_POSROT_UPDATE(...)
1030 #define TES_POSSCALE_UPDATE(...)
1031 #define TES_ROTSCALE_UPDATE(...)
1032 #define TES_PRS_UPDATE(...)
1033 #define TES_PRC_UPDATE(...)
1034 #define TES_PSC_UPDATE(...)
1035 #define TES_RSC_UPDATE(...)
1036 #define TES_PRSC_UPDATE(...)
1037 
1038 #endif // TES_ENABLE