All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
UnityCallbacks.h
1 #pragma once
2 
3 #include "Graphics.h"
4 #include "VectorMathDecl.h"
5 #include "TransportEventTypes.h"
6 #include "MortonKey.h"
7 #include "Unity.h"
8 
9 
10 namespace Eegeo
11 {
12  namespace Unity
13  {
14  struct UnpackedMesh;
15 
16  // The memory layout of these callbacks classes is important, as they get marshaled over from ApiCallbacks.cs in Unity.
17  // If one is changing, both should change.
19  {
20  public:
21 
22  void AddLabel(const UnityLabelCreateOptions& createOptions) const
23  {
24  m_addLabel(m_labelServiceHandle, createOptions);
25  }
26 
27  void UpdateLabel(const UnityLabelUpdateState& updateState) const
28  {
29  m_updateLabel(m_labelServiceHandle, updateState);
30  }
31 
32  void RemoveLabel(const char* labelId) const
33  {
34  m_removeLabel(m_labelServiceHandle, labelId);
35  }
36 
37  void AddIconTexturePage(const u32 textureId) const
38  {
39  m_addIconTexturePage(m_labelServiceHandle, textureId);
40  }
41 
42  private:
43 
44  typedef void(*AddLabelCallback)(const void* labelServiceHandle, const UnityLabelCreateOptions& createOptions);
45  typedef void(*UpdateLabelCallback)(const void* labelServiceHandle, const UnityLabelUpdateState& updateState);
46  typedef void(*RemoveLabelCallback)(const void* labelServiceHandle, const char* labelId);
47  typedef void(*AddIconTexturePageCallback)(const void* labelServiceHandle, const u32 textureId);
48 
49  const void* m_labelServiceHandle;
50  AddLabelCallback m_addLabel;
51  UpdateLabelCallback m_updateLabel;
52  RemoveLabelCallback m_removeLabel;
53  AddIconTexturePageCallback m_addIconTexturePage;
54  };
55 
57  {
58  public:
59 
60  void* AllocateTextureBuffer(int size, int width, int height, int format, int hasMipMaps) const
61  {
62  return m_allocateTextureBuffer(m_textureServiceHandle, size, width, height, format, hasMipMaps);
63  }
64 
65  GLuint BeginUploadTextureBuffer(const void* buffer) const
66  {
67  return m_beginUploadTextureBuffer(m_textureServiceHandle, buffer);
68  }
69 
70  void OnTextureReceived(const void* requestHandle, const char* textureKey, GLuint textureID) const
71  {
72  m_onTextureReceived(requestHandle, textureKey, textureID);
73  }
74 
75  void ReleaseTexture(GLuint id) const
76  {
77  m_releaseTexture(m_textureServiceHandle, id);
78  }
79 
80  GLuint CreateCubemapFromFaces(const GLuint* faceIDs) const
81  {
82  return m_createCubemapFromFaces(m_textureServiceHandle, faceIDs);
83  }
84 
85  private:
86 
87  typedef void* (*AllocateTextureBufferCallback)(const void* textureServiceHandle, int size, int width, int height, int format, int hasMipMaps);
88  typedef GLuint(*BeginUploadTextureBufferCallback)(const void* textureServiceHandle, const void* buffer);
89  typedef void(*OnTextureReceivedCallback)(const void* requestHandle, const char* textureKey, GLuint textureID);
90  typedef void(*ReleaseTextureCallback)(const void* textureServiceHandle, GLuint id);
91  typedef GLuint(*CreateCubemapFromFacesCallback)(const void* textureServiceHandle, const GLuint* faceIDs);
92 
93  const void* m_textureServiceHandle;
94  AllocateTextureBufferCallback m_allocateTextureBuffer;
95  BeginUploadTextureBufferCallback m_beginUploadTextureBuffer;
96  OnTextureReceivedCallback m_onTextureReceived;
97  ReleaseTextureCallback m_releaseTexture;
98  CreateCubemapFromFacesCallback m_createCubemapFromFaces;
99  };
100 
102  {
103  public:
104  void OnMaterialMadeDirty(const char* textureKey, const char* materialName) const
105  {
106  m_onMaterialMadeDirty(m_materialRepositoryHandle, textureKey, materialName);
107  }
108 
109 
110  private:
111  typedef void(*OnMaterialMadeDirtyCallback)(const void* materialRepositoryHandle, const char* textureKey, const char* materialName);
112 
113  const void* m_materialRepositoryHandle;
114  OnMaterialMadeDirtyCallback m_onMaterialMadeDirty;
115  };
116 
117 
119  {
120  public:
121 
122  typedef void* (*StartThreadCallback)(void* startData);
123 
124  int CreateThread(StartThreadCallback callback, void* startData) const
125  {
126  return m_createThread(m_threadServiceHandle, callback, startData);
127  }
128 
129  void JoinThread(int threadHandle) const
130  {
131  m_joinThread(m_threadServiceHandle, threadHandle);
132  }
133 
134  private:
135 
136  typedef int(*CreateThreadCallback)(const void* threadServiceHandle, StartThreadCallback callback, void* startData);
137  typedef void(*JoinThreadCallback)(const void* threadServiceHandle, int threadHandle);
138 
139  const void* m_threadServiceHandle;
140  CreateThreadCallback m_createThread;
141  JoinThreadCallback m_joinThread;
142  };
143 
145  {
146  // :HACK: :TEMP: not sure about identifying objects by string ID for this sort of purpose.
147  // Think we might be better off using GCHandle IntPtrs
148 
149  public:
150 
151  void SetScale(const char* objectId, const v3& scale) const
152  {
153  m_setScale(m_sceneServiceHandle, objectId, scale);
154  }
155 
156  void SetTranslation(const char* objectId, const v3& translation) const
157  {
158  m_setTranslation(m_sceneServiceHandle, objectId, translation);
159  }
160 
161  void SetOrientation(const char* objectId, const Quaternion& rotation) const
162  {
163  m_setOrientation(m_sceneServiceHandle, objectId, rotation);
164  }
165 
166  void SetColor(const char* objectId, const v4& color) const
167  {
168  m_setColor(m_sceneServiceHandle, objectId, color);
169  }
170 
171  private:
172 
173  typedef void(*SetScaleCallback)(const void* sceneServiceHandle, const char* objectId, const v3& scale);
174  typedef void(*SetTranslationCallback)(const void* sceneServiceHandle, const char* objectId, const v3& translation);
175  typedef void(*SetOrientationCallback)(const void* sceneServiceHandle, const char* objectId, const Quaternion& rotation);
176  typedef void(*SetColorCallback)(const void* sceneServiceHandle, const char* objectId, const v4& color);
177 
178  const void* m_sceneServiceHandle;
179  SetScaleCallback m_setScale;
180  SetTranslationCallback m_setTranslation;
181  SetOrientationCallback m_setOrientation;
182  SetColorCallback m_setColor;
183  };
184 
186  {
187  public:
188 
189  void SetVisible(const char* objectId, bool visible) const
190  {
191  m_setVisible(m_sceneServiceHandle, objectId, visible);
192  }
193 
194  void AddMesh(const char* objectId) const
195  {
196  m_addMesh(m_sceneServiceHandle, objectId);
197  }
198 
199  void DeleteMesh(const char* objectId) const
200  {
201  m_deleteMesh(m_sceneServiceHandle, objectId);
202  }
203 
204  Unity::UnpackedMesh* AllocateUnpackedMesh(int vertexCount, bool hasUVs, bool hasUV2s, bool hasNormals, bool hasColours, int indexCount, const char* meshName, const char* materialName) const
205  {
206  return static_cast<Unity::UnpackedMesh*>(m_allocateUnpackedMesh(vertexCount, hasUVs, hasUV2s, hasNormals, hasColours, indexCount, meshName, materialName));
207  }
208 
209  void UploadUnpackedMesh(const Unity::UnpackedMesh* mesh) const
210  {
211  m_uploadUnpackedMesh(mesh);
212  }
213 
214  void RemoveUnpackedMesh(const char* meshId) const
215  {
216  m_removeUnpackedMesh(meshId);
217  }
218 
219  private:
220 
221  typedef void*(*AllocateUnpackedMeshCallback)(int, bool, bool, bool, bool, int, const void*, const void*);
222  typedef void(*UploadUnpackedMeshCallback)(const void*);
223  typedef void(*RemoveUnpackedMeshCallback)(const char*);
224  typedef void(*AddMeshCallback)(const void* sceneServiceHandle, const char*);
225  typedef void(*DeleteMeshCallback)(const void* sceneServiceHandle, const char*);
226  typedef void(*VisibilityCallback)(const void* sceneServiceHandle, const char*, bool);
227 
228  const void* m_sceneServiceHandle;
229  AllocateUnpackedMeshCallback m_allocateUnpackedMesh;
230  UploadUnpackedMeshCallback m_uploadUnpackedMesh;
231  RemoveUnpackedMeshCallback m_removeUnpackedMesh;
232  AddMeshCallback m_addMesh;
233  DeleteMeshCallback m_deleteMesh;
234  VisibilityCallback m_setVisible;
235  };
236 
240 
242  {
243  public:
244 
245  void OnIndoorMapEntered() const
246  {
247  m_onIndoorMapEnteredCallback(m_indoorMapsApiHandle);
248  }
249 
250  void OnIndoorMapExited() const
251  {
252  m_onIndoorMapExitedCallback(m_indoorMapsApiHandle);
253  }
254 
255  void OnIndoorMapFloorChanged() const
256  {
257  m_onIndoorMapFloorChangedCallback(m_indoorMapsApiHandle);
258  }
259 
260  void OnIndoorMapEntityClicked(const int entityIdsCount, const char** entityIds) const
261  {
262  EntityClickedInterop interop;
263  interop.stringCount = entityIdsCount;
264  interop.stringValues = entityIds;
265 
266  m_onIndoorMapEntityClickedCallback(m_indoorMapsApiHandle, &interop);
267  }
268 
269  void AddIndoorMapRenderable(const char* name, const char* interior, const UnityInteriorFloorRenderable& renderable) const
270  {
271  m_addRenderable(m_indoorMapSceneHandle, name, interior, &renderable);
272  }
273 
274  void AddIndoorMapHighlightRenderable(const char* name, const char* interior, const UnityInteriorHighlightRenderable& renderable) const
275  {
276  m_addHighlightRenderable(m_indoorMapSceneHandle, name, interior, &renderable);
277  }
278 
279  void AddInstancedIndoorMapRenderable(
280  const char* meshId,
281  const char* renderableId,
282  const char* interior,
283  const Eegeo::dv3& originEcef,
284  const int transformCount,
285  const v3* positionOffsets,
286  const Quaternion* orientations,
287  const UnityInstancedInteriorFloorRenderable& renderable,
288  int indexOffset,
289  bool ownsMesh) const
290  {
291  m_addInstancedRenderable(m_indoorMapSceneHandle, meshId, renderableId, interior, &originEcef, transformCount, positionOffsets, orientations, &renderable, indexOffset, ownsMesh);
292  }
293 
294  void OnRenderableStateUpdated(const char* renderableId) const
295  {
296  m_onRenderableStateUpdated(m_indoorMapSceneHandle, renderableId);
297  }
298 
299  void OnHighlightRenderableStateUpdated(const char* renderableId) const
300  {
301  m_onRenderableStateUpdatedForHighlightRenderable(m_indoorMapSceneHandle, renderableId);
302  }
303 
304  void OnInstancedRenderableStateUpdated(const char* renderableId) const
305  {
306  m_onInstancedRenderableStateUpdated(m_indoorMapSceneHandle, renderableId);
307  }
308 
309  void SetMaterial(const char* objectID, const void* materialHandle) const
310  {
311  m_setMaterial(m_indoorMapSceneHandle, objectID, materialHandle);
312  }
313 
314  void SetMaterialForInstancedRenderable(const char* objectID, const void* materialHandle) const
315  {
316  m_setMaterialForInstancedRenderable(m_indoorMapSceneHandle, objectID, materialHandle);
317  }
318 
319  void* CreateMaterial(
320  const char* indoorMapName,
321  const char* materialName,
322  int stringCount, const char** stringKeys, const char** stringValues,
323  int colorCount, const char** colorNames, const Eegeo::v4* colorValues,
324  int scalarCount, const char** scalarNames, const float* scalarValues,
325  int booleanCount, const char** booleanNames, const int* booleanValues) const
326  {
327  MaterialDescriptorInterop interop;
328  interop.indoorMapName = indoorMapName;
329  interop.materialName = materialName;
330  interop.stringCount = stringCount;
331  interop.stringKeys = stringKeys;
332  interop.stringValues = stringValues;
333  interop.colorCount = colorCount;
334  interop.colorNames = colorNames;
335  interop.colorValues = colorValues;
336  interop.scalarCount = scalarCount;
337  interop.scalarNames = scalarNames;
338  interop.scalarValues = scalarValues;
339  interop.booleanCount = booleanCount;
340  interop.booleanNames = booleanNames;
341  interop.booleanValues = booleanValues;
342  interop.materialServiceHandle = m_indoorMapMaterialServiceHandle;
343 
344  return m_createMaterial(&interop);
345  }
346 
347  void DeleteMaterial(const void* materialHandle) const
348  {
349  m_deleteMaterial(m_indoorMapMaterialServiceHandle, materialHandle);
350  }
351 
352  private:
353 
354  struct MaterialDescriptorInterop
355  {
356  const char* indoorMapName;
357  const char* materialName;
358  int stringCount;
359  const char** stringKeys;
360  const char** stringValues;
361  int colorCount;
362  const char** colorNames;
363  const Eegeo::v4* colorValues;
364  int scalarCount;
365  const char** scalarNames;
366  const float* scalarValues;
367  int booleanCount;
368  const char** booleanNames;
369  const int* booleanValues;
370  const void* materialServiceHandle;
371  };
372 
373  struct EntityClickedInterop
374  {
375  int stringCount;
376  const char** stringValues;
377  };
378 
379  typedef void(*OnIndoorMapEnteredCallback)(const void* unityIndoorMapApiHandle);
380  typedef void(*OnIndoorMapExitedCallback)(const void* unityIndoorMapApiHandle);
381  typedef void(*OnIndoorMapFloorChangedCallback)(const void* unityIndoorMapApiHandle);
382  typedef void(*OnIndoorMapEntityClickedCallback)(const void* unityIndoorMapApiHandle, const EntityClickedInterop* entityClickedInterop);
383  typedef void(*AddIndoorMapRenderableCallback)(const void* indoorMapSceneHandle, const char* name, const char* interior, const void* renderable);
384  typedef void(*AddInstancedIndoorMapRenderableCallback)(const void* indoorMapSceneHandle, const char* meshId, const char* renderableId, const char* interior, const Eegeo::dv3* originEcef, const int transformCount, const v3* positionOffsets, const Quaternion* orientations, const void* renderable, int indexOffset, bool ownsMesh);
385  typedef void(*OnRenderStateUpdatedCallback)(const void* indoorMapSceneHandle, const char* objectId);
386  typedef void* (*CreateMaterialCallback)(const MaterialDescriptorInterop* materialDescriptorInterop);
387 
388  typedef void(*SetMaterialCallback)(const void* indoorMapSceneHandle, const char* objectID, const void* materialHandle);
389  typedef void(*DeleteMaterialCallback)(const void* indoorMapMaterialServiceHandle, const void* materialHandle);
390 
391  const void* m_indoorMapsApiHandle;
392  const void* m_indoorMapMaterialServiceHandle;
393  const void* m_indoorMapSceneHandle;
394  AddIndoorMapRenderableCallback m_addRenderable;
395  AddIndoorMapRenderableCallback m_addHighlightRenderable;
396  AddInstancedIndoorMapRenderableCallback m_addInstancedRenderable;
397  OnRenderStateUpdatedCallback m_onRenderableStateUpdated;
398  OnRenderStateUpdatedCallback m_onRenderableStateUpdatedForHighlightRenderable;
399  OnRenderStateUpdatedCallback m_onInstancedRenderableStateUpdated;
400  SetMaterialCallback m_setMaterial;
401  SetMaterialCallback m_setMaterialForInstancedRenderable;
402  OnIndoorMapEnteredCallback m_onIndoorMapEnteredCallback;
403  OnIndoorMapExitedCallback m_onIndoorMapExitedCallback;
404  OnIndoorMapFloorChangedCallback m_onIndoorMapFloorChangedCallback;
405  OnIndoorMapEntityClickedCallback m_onIndoorMapEntityClickedCallback;
406  CreateMaterialCallback m_createMaterial;
407  DeleteMaterialCallback m_deleteMaterial;
408  };
409 
411  {
412  public:
413 
414  void PositionerTransformedPointChanged(int positionerId)
415  {
416  m_positionerTransformedPointChangedCallback(m_positionersApiInternalHandle, positionerId);
417  }
418 
419  void PositionersProjectionChanged()
420  {
421  m_positionersProjectionChangedCallback(m_positionersApiInternalHandle);
422  }
423 
424  private:
425  // these correspond to struct PositionerCallbacks in ApiCallbacks.cs
426  typedef void(*PositionerTransformedPointChangedCallback)(const void* positionersApiInternalHandle, int positionerId);
427  typedef void(*PositionersProjectionChangedCallback)(const void* positionersApiInternalHandle);
428 
429  const void* m_positionersApiInternalHandle;
430  PositionerTransformedPointChangedCallback m_positionerTransformedPointChangedCallback;
431  PositionersProjectionChangedCallback m_positionersProjectionChangedCallback;
432  };
433 
435  {
436  public:
437 
438  void OnCameraEvent(int eventType)
439  {
440  m_cameraEventCallback(m_cameraApiHandle, eventType);
441  }
442 
443  private:
444 
445  typedef void(*CameraEventCallback)(const void* apiHandle, int eventType);
446 
447  const void* m_cameraApiHandle;
448  CameraEventCallback m_cameraEventCallback;
449  };
450 
452  {
453  public:
454 
455  void OnBuildingHighlightChanged(int buildingId)
456  {
457  m_buildingHighlightChanged(m_buildingsApiInternalHandle, buildingId);
458  }
459 
460  void OnBuildingHighlightColorChanged(int buildingId, const v4& color) const
461  {
462  m_buildingHighlightColorChanged(m_buildingsApiInternalHandle, buildingId, color);
463  }
464 
465  void OnBuildingHighlightClipPlanesChanged(int buildingId, const UnityBuildingHighlightClipPlanePairInterop* clipPlanePairs, int size) const
466  {
467  m_buildingHighlightClipPlanesChanged(m_buildingsApiInternalHandle, buildingId, clipPlanePairs, size);
468  }
469 
470  private:
471  typedef void(*BuildingHighlightChangedCallback)(const void* buildingsApiInternalHandle, int buildingId);
472  // Other places in this file use v4 instead of ColorInterop, even though Unity expects the latter.
473  // It works fine as the memory layout is currently the same, but we might want to move ColorInterop to a header this file can include at some point.
474  typedef void(*BuildingHighlightColorChangedCallback)(const void* buildingsApiInternalHandle, int buildingId, const v4& color);
475  typedef void(*BuildingHighlightClipPlanesChangedCallback)(const void* buildingsApiInternalHandle, int buildingId, const UnityBuildingHighlightClipPlanePairInterop* clipPlanePairs, int size);
476 
477  const void* m_buildingsApiInternalHandle;
478  BuildingHighlightChangedCallback m_buildingHighlightChanged;
479  BuildingHighlightColorChangedCallback m_buildingHighlightColorChanged;
480  BuildingHighlightClipPlanesChangedCallback m_buildingHighlightClipPlanesChanged;
481  };
482 
484  {
485  public:
486 
487  void OnPrecacheOperationCompleted(int operationId, bool succeeded)
488  {
489  m_precacheOperationCompletedHandler(m_precacheApiHandle, operationId, succeeded);
490  }
491 
492  private:
493 
494  typedef void(*PrecacheOperationCompletedEventHandler)(const void* precacheApiHandle, int operationId, bool succeeded);
495 
496  const void* m_precacheApiHandle;
497  PrecacheOperationCompletedEventHandler m_precacheOperationCompletedHandler;
498  };
499 
500  namespace Interop
501  {
502  // Workaround to avoid EegeoApi types in this platform header
503  // Todo - needs restructure (move Unity entry point out to eegeo-api-host)
505  {
506  s64 Value;
507  };
508  }
509 
511  {
512  public:
513  void OnTransportPositionerPointOnGraphChanged(int transportPositionerId)
514  {
515  m_transportPositionerPointOnGraphChangedHandler(m_transportApiHandle, transportPositionerId);
516  }
517 
518  void OnTransportGraphChanged(const Eegeo::Transport::TransportGraphChangedMessage& transportGraphChangedMessage)
519  {
520  Interop::MortonKeyInterop cellKeyInterop = {transportGraphChangedMessage.CellKey.RawValue()};
521  m_transportPositionerGraphChangedHandler(m_transportApiHandle, transportGraphChangedMessage.TransportNetworkType, cellKeyInterop, transportGraphChangedMessage.ChangeReason);
522  }
523 
524  private:
525  typedef void(*TransportPositionerPointOnGraphChangedHandler)(const void* transportApiHandle, int transportPositionerId);
526  typedef void(*TransportPositionerGraphChangedHandler)(
527  const void* transportApiHandle,
528  Eegeo::Transport::TransportNetwork::Type transportNetworkType,
530  Eegeo::Transport::TransportGraphChangeReason::Type changeReason
531  );
532 
533  const void* m_transportApiHandle;
534  TransportPositionerPointOnGraphChangedHandler m_transportPositionerPointOnGraphChangedHandler;
535  TransportPositionerGraphChangedHandler m_transportPositionerGraphChangedHandler;
536 
537  };
538 
540  {
541  public:
542  void OnIndoorMapEntityInformationChanged(int indoorMapEntityInformationId)
543  {
544  m_indoorMapEntityInformationChangedHandler(m_indoorMapEntityInformationApiInternalHandle, indoorMapEntityInformationId);
545  }
546 
547  private:
548  typedef void(*IndoorMapEntityInformationChangedHandler)(const void* indoorMapEntityInformationApiInternalHandle, int indoorMapEntityInformationId);
549 
550  const void* m_indoorMapEntityInformationApiInternalHandle;
551  IndoorMapEntityInformationChangedHandler m_indoorMapEntityInformationChangedHandler;
552  };
553 
554 
556  {
557  public:
558  void OnInitialStreamingComplete()
559  {
560  m_initialStreamingCompleteHandler(m_mapApiInternalHandle);
561  }
562 
563  private:
564  typedef void(*InitialStreamingCompleteHandler)(const void* mapApiInternalHandle);
565 
566  const void* m_mapApiInternalHandle;
567  InitialStreamingCompleteHandler m_initialStreamingCompleteHandler;
568  };
569 
571  {
572  public:
573  void OnStreamingStarted()
574  {
575  m_streamingStartHandler(m_streamingApiInternalHandle);
576  }
577  void OnStreamingComplete()
578  {
579  m_streamingCompleteHandler(m_streamingApiInternalHandle);
580  }
581 
582  private:
583  typedef void(*StreamingStartedHandler)(const void* streamingApiInternalHandle);
584  typedef void(*StreamingCompleteHandler)(const void* streamingApiInternalHandle);
585 
586  const void* m_streamingApiInternalHandle;
587  StreamingStartedHandler m_streamingStartHandler;
588  StreamingCompleteHandler m_streamingCompleteHandler;
589  };
590 
591  // This type must be manually maintained to match c# Wrld.ApiCallback
592  // An instance is aggregated in AppRunner, constructed from a copy of value passed through from Unity
593  // in UNITY_INTERFACE_API Initialize() (PlugInPointsApi.cpp)
595  {
596  typedef void (*AssertHandlerCallback)(const char*, const char*, int);
597  typedef void(*FatalErrorHandlerCallback)(const char*);
598 #ifdef EMSCRIPTEN
599  typedef bool (*UnityResourcesWrapperLoadResourceCallback)(const char*, char**, int32_t*);
600  typedef void (*UnityResourcesWrapperFreeResourceBufferCallback)(char*);
601  typedef bool (*UnityResourcesWrapperResourceExistsCallback)(const char*);
602 #endif
603 
604  static AssertHandlerCallback assertHandler;
605  static FatalErrorHandlerCallback fatalErrorHandler;
606 
607  MeshCallbacks meshCallbacks;
608  CameraCallbacks cameraCallbacks;
609  AssertHandlerCallback assertHandlerCallback;
610  FatalErrorHandlerCallback fatalErrorHandlerCallback;
611  TextureCallbacks textureCallbacks;
612  MaterialCallbacks materialCallbacks;
613  ThreadServiceCallbacks threadServiceCallbacks;
614  BuildingHighlightCallbacks buildingHighlightCallbacks;
615  SceneCallbacks sceneCallbacks;
616  IndoorMapCallbacks indoorMapCallbacks;
617  PositionerCallbacks positionerCallbacks;
618  LabelCallbacks labelCallbacks;
619  PrecacheCallbacks precacheCallbacks;
620  TransportCallbacks transportCallbacks;
621  IndoorEntityInformationCallbacks indoorEntityInformationCallbacks;
622  StreamingCallbacks streamingCallbacks;
623  StreamingApiCallbacks streamingApiCallbacks;
624 #ifdef EMSCRIPTEN
625  UnityResourcesWrapperLoadResourceCallback loadResourceCallback;
626  UnityResourcesWrapperFreeResourceBufferCallback freeResourceBufferCallback;
627  UnityResourcesWrapperResourceExistsCallback resourceExistsCallback;
628 #endif
629  };
630  }
631 }
632