CommonGUIHelperInterface.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. #ifndef GUI_HELPER_INTERFACE_H
  2. #define GUI_HELPER_INTERFACE_H
  3. class btRigidBody;
  4. class btVector3;
  5. class btCollisionObject;
  6. class btDiscreteDynamicsWorld;
  7. class btCollisionShape;
  8. struct Common2dCanvasInterface;
  9. struct CommonParameterInterface;
  10. struct CommonRenderInterface;
  11. struct CommonGraphicsApp;
  12. ///The Bullet 2 GraphicsPhysicsBridge let's the graphics engine create graphics representation and synchronize
  13. struct GUIHelperInterface
  14. {
  15. virtual ~GUIHelperInterface() {}
  16. virtual void createRigidBodyGraphicsObject(btRigidBody* body,const btVector3& color) = 0;
  17. virtual void createCollisionObjectGraphicsObject(btCollisionObject* obj,const btVector3& color) = 0;
  18. virtual void createCollisionShapeGraphicsObject(btCollisionShape* collisionShape)=0;
  19. virtual void syncPhysicsToGraphics(const btDiscreteDynamicsWorld* rbWorld)=0;
  20. virtual void render(const btDiscreteDynamicsWorld* rbWorld)=0;
  21. virtual void createPhysicsDebugDrawer( btDiscreteDynamicsWorld* rbWorld)=0;
  22. virtual int registerTexture(const unsigned char* texels, int width, int height)=0;
  23. virtual int registerGraphicsShape(const float* vertices, int numvertices, const int* indices, int numIndices,int primitiveType, int textureId) = 0;
  24. virtual int registerGraphicsInstance(int shapeIndex, const float* position, const float* quaternion, const float* color, const float* scaling) =0;
  25. virtual void removeAllGraphicsInstances()=0;
  26. virtual Common2dCanvasInterface* get2dCanvasInterface()=0;
  27. virtual CommonParameterInterface* getParameterInterface()=0;
  28. virtual CommonRenderInterface* getRenderInterface()=0;
  29. virtual CommonGraphicsApp* getAppInterface()=0;
  30. virtual void setUpAxis(int axis)=0;
  31. virtual void resetCamera(float camDist, float pitch, float yaw, float camPosX,float camPosY, float camPosZ)=0;
  32. virtual void copyCameraImageData(const float viewMatrix[16], const float projectionMatrix[16],
  33. unsigned char* pixelsRGBA, int rgbaBufferSizeInPixels,
  34. float* depthBuffer, int depthBufferSizeInPixels,
  35. int startPixelIndex, int destinationWidth, int destinationHeight, int* numPixelsCopied)
  36. {
  37. copyCameraImageData(viewMatrix,projectionMatrix,pixelsRGBA,rgbaBufferSizeInPixels,
  38. depthBuffer,depthBufferSizeInPixels,
  39. 0,0,
  40. startPixelIndex,destinationWidth,
  41. destinationHeight,numPixelsCopied);
  42. }
  43. virtual void copyCameraImageData(const float viewMatrix[16], const float projectionMatrix[16],
  44. unsigned char* pixelsRGBA, int rgbaBufferSizeInPixels,
  45. float* depthBuffer, int depthBufferSizeInPixels,
  46. int* segmentationMaskBuffer, int segmentationMaskBufferSizeInPixels,
  47. int startPixelIndex, int destinationWidth, int destinationHeight, int* numPixelsCopied)=0;
  48. virtual void autogenerateGraphicsObjects(btDiscreteDynamicsWorld* rbWorld) =0;
  49. virtual void drawText3D( const char* txt, float posX, float posZY, float posZ, float size)=0;
  50. };
  51. ///the DummyGUIHelper does nothing, so we can test the examples without GUI/graphics (in 'console mode')
  52. struct DummyGUIHelper : public GUIHelperInterface
  53. {
  54. DummyGUIHelper() {}
  55. virtual ~DummyGUIHelper() {}
  56. virtual void createRigidBodyGraphicsObject(btRigidBody* body,const btVector3& color){}
  57. virtual void createCollisionObjectGraphicsObject(btCollisionObject* obj,const btVector3& color) {}
  58. virtual void createCollisionShapeGraphicsObject(btCollisionShape* collisionShape){}
  59. virtual void syncPhysicsToGraphics(const btDiscreteDynamicsWorld* rbWorld){}
  60. virtual void render(const btDiscreteDynamicsWorld* rbWorld) {}
  61. virtual void createPhysicsDebugDrawer( btDiscreteDynamicsWorld* rbWorld){}
  62. virtual int registerTexture(const unsigned char* texels, int width, int height){return -1;}
  63. virtual int registerGraphicsShape(const float* vertices, int numvertices, const int* indices, int numIndices,int primitiveType, int textureId){return -1;}
  64. virtual int registerGraphicsInstance(int shapeIndex, const float* position, const float* quaternion, const float* color, const float* scaling) {return -1;}
  65. virtual void removeAllGraphicsInstances(){}
  66. virtual Common2dCanvasInterface* get2dCanvasInterface()
  67. {
  68. return 0;
  69. }
  70. virtual CommonParameterInterface* getParameterInterface()
  71. {
  72. return 0;
  73. }
  74. virtual CommonRenderInterface* getRenderInterface()
  75. {
  76. return 0;
  77. }
  78. virtual CommonGraphicsApp* getAppInterface()
  79. {
  80. return 0;
  81. }
  82. virtual void setUpAxis(int axis)
  83. {
  84. }
  85. virtual void resetCamera(float camDist, float pitch, float yaw, float camPosX,float camPosY, float camPosZ)
  86. {
  87. }
  88. virtual void copyCameraImageData(const float viewMatrix[16], const float projectionMatrix[16],
  89. unsigned char* pixelsRGBA, int rgbaBufferSizeInPixels,
  90. float* depthBuffer, int depthBufferSizeInPixels,
  91. int* segmentationMaskBuffer, int segmentationMaskBufferSizeInPixels,
  92. int startPixelIndex, int width, int height, int* numPixelsCopied)
  93. {
  94. if (numPixelsCopied)
  95. *numPixelsCopied = 0;
  96. }
  97. virtual void autogenerateGraphicsObjects(btDiscreteDynamicsWorld* rbWorld)
  98. {
  99. }
  100. virtual void drawText3D( const char* txt, float posX, float posZY, float posZ, float size)
  101. {
  102. }
  103. };
  104. #endif //GUI_HELPER_INTERFACE_H