Opcode.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2. /*
  3. * OPCODE - Optimized Collision Detection
  4. * Copyright (C) 2001 Pierre Terdiman
  5. * Homepage: http://www.codercorner.com/Opcode.htm
  6. */
  7. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  8. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  9. /**
  10. * Main file for Opcode.dll.
  11. * \file Opcode.h
  12. * \author Pierre Terdiman
  13. * \date March, 20, 2001
  14. */
  15. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  16. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  17. // Include Guard
  18. #ifndef __OPCODE_H__
  19. #define __OPCODE_H__
  20. // stddef.h and stdarg.h must be included before Opcode headers
  21. // as they latermay not compile being not able to find types in std::
  22. #include <stddef.h>
  23. #include <stdarg.h>
  24. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  25. // Things to help us compile on non-windows platforms
  26. #if defined(__APPLE__) || defined(__MACOSX__)
  27. #if __APPLE_CC__ < 1495
  28. #define sqrtf sqrt
  29. #define sinf sin
  30. #define cosf cos
  31. #define acosf acos
  32. #define asinf asin
  33. #endif
  34. #endif
  35. #ifndef _MSC_VER
  36. #ifndef __int64
  37. #define __int64 long long int
  38. #endif
  39. #ifndef __stdcall /* this is defined in MinGW and CygWin, so avoid the warning */
  40. #define __stdcall /* */
  41. #endif
  42. #endif
  43. #if defined(__GNUC__)
  44. #define OPCODE_NORETURN __attribute__((noreturn))
  45. #elif defined(_MSC_VER)
  46. #define OPCODE_NORETURN __declspec(noreturn)
  47. #else // #if !defined(_MSC_VER)
  48. #define OPCODE_NORETURN
  49. #endif // #if !defined(__GNUC__)
  50. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  51. // Compilation messages
  52. #ifdef _MSC_VER
  53. #if defined(OPCODE_EXPORTS)
  54. // #pragma message("Compiling OPCODE")
  55. #elif !defined(OPCODE_EXPORTS)
  56. // #pragma message("Using OPCODE")
  57. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  58. // Automatic linking
  59. #ifndef BAN_OPCODE_AUTOLINK
  60. #ifdef _DEBUG
  61. //#pragma comment(lib, "Opcode_D.lib")
  62. #else
  63. //#pragma comment(lib, "Opcode.lib")
  64. #endif
  65. #endif
  66. #endif
  67. #endif
  68. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  69. // Preprocessor
  70. #ifndef ICE_NO_DLL
  71. #ifdef OPCODE_EXPORTS
  72. #define OPCODE_API// __declspec(dllexport)
  73. #else
  74. #define OPCODE_API// __declspec(dllimport)
  75. #endif
  76. #else
  77. #define OPCODE_API
  78. #endif
  79. #include "OPC_Settings.h"
  80. #include "OPC_IceHook.h"
  81. namespace Opcode
  82. {
  83. // Bulk-of-the-work
  84. #include "OPC_Common.h"
  85. #include "OPC_MeshInterface.h"
  86. // Builders
  87. #include "OPC_TreeBuilders.h"
  88. // Trees
  89. #include "OPC_AABBTree.h"
  90. #include "OPC_OptimizedTree.h"
  91. // Models
  92. #include "OPC_BaseModel.h"
  93. #include "OPC_Model.h"
  94. #include "OPC_HybridModel.h"
  95. // Colliders
  96. #include "OPC_Collider.h"
  97. #include "OPC_VolumeCollider.h"
  98. #include "OPC_TreeCollider.h"
  99. #include "OPC_RayCollider.h"
  100. #include "OPC_SphereCollider.h"
  101. #include "OPC_OBBCollider.h"
  102. #include "OPC_AABBCollider.h"
  103. #include "OPC_LSSCollider.h"
  104. #include "OPC_PlanesCollider.h"
  105. // Usages
  106. #include "OPC_Picking.h"
  107. typedef void (*OPCODE_AbortHandler)();
  108. FUNCTION OPCODE_API bool InitOpcode(OPCODE_AbortHandler fnAbortHandler=NULL);
  109. FUNCTION OPCODE_API bool CloseOpcode();
  110. }
  111. #endif // __OPCODE_H__