physics_types.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. /*
  2. * Copyright (c) 2012-2014 Daniele Bartolini and individual contributors.
  3. * License: https://github.com/taylor001/crown/blob/master/LICENSE
  4. */
  5. #pragma once
  6. #include "vector3.h"
  7. namespace crown
  8. {
  9. typedef Id ActorId;
  10. typedef Id ControllerId;
  11. typedef Id JointId;
  12. typedef Id RaycastId;
  13. struct Actor;
  14. struct Controller;
  15. struct Joint;
  16. struct Raycast;
  17. class PhysicsWorld;
  18. struct ActorType
  19. {
  20. enum Enum
  21. {
  22. STATIC,
  23. DYNAMIC_PHYSICAL,
  24. DYNAMIC_KINEMATIC
  25. };
  26. };
  27. struct ShapeType
  28. {
  29. enum Enum
  30. {
  31. SPHERE,
  32. CAPSULE,
  33. BOX,
  34. PLANE,
  35. CONVEX_MESH
  36. };
  37. };
  38. struct JointType
  39. {
  40. enum Enum
  41. {
  42. FIXED,
  43. SPHERICAL,
  44. REVOLUTE,
  45. PRISMATIC,
  46. DISTANCE,
  47. D6
  48. };
  49. };
  50. struct CollisionGroup
  51. {
  52. enum Enum
  53. {
  54. GROUP_0 = (1<<0), // Collisions disabled
  55. GROUP_1 = (1<<1),
  56. GROUP_2 = (1<<2),
  57. GROUP_3 = (1<<3),
  58. GROUP_4 = (1<<4),
  59. GROUP_5 = (1<<5),
  60. GROUP_6 = (1<<6),
  61. GROUP_7 = (1<<7),
  62. GROUP_8 = (1<<8),
  63. GROUP_9 = (1<<9),
  64. GROUP_10 = (1<<10),
  65. GROUP_11 = (1<<11),
  66. GROUP_12 = (1<<12),
  67. GROUP_13 = (1<<13),
  68. GROUP_14 = (1<<14),
  69. GROUP_15 = (1<<15),
  70. GROUP_16 = (1<<16),
  71. GROUP_17 = (1<<17),
  72. GROUP_18 = (1<<18),
  73. GROUP_19 = (1<<19),
  74. GROUP_20 = (1<<20),
  75. GROUP_21 = (1<<21),
  76. GROUP_22 = (1<<22),
  77. GROUP_23 = (1<<23),
  78. GROUP_24 = (1<<24),
  79. GROUP_25 = (1<<25),
  80. GROUP_26 = (1<<26),
  81. GROUP_27 = (1<<27),
  82. GROUP_28 = (1<<28),
  83. GROUP_29 = (1<<29),
  84. GROUP_30 = (1<<30),
  85. GROUP_31 = (1<<31)
  86. };
  87. };
  88. struct CollisionType
  89. {
  90. enum Enum
  91. {
  92. STATIC,
  93. DYNAMIC,
  94. BOTH
  95. };
  96. };
  97. struct CollisionMode
  98. {
  99. enum Enum
  100. {
  101. CLOSEST,
  102. ANY,
  103. ALL
  104. };
  105. };
  106. namespace physics_world
  107. {
  108. struct EventType
  109. {
  110. enum Enum
  111. {
  112. COLLISION,
  113. TRIGGER
  114. };
  115. };
  116. struct CollisionEvent
  117. {
  118. enum Type { BEGIN_TOUCH, END_TOUCH } type;
  119. Actor* actors[2];
  120. Vector3 where;
  121. Vector3 normal;
  122. };
  123. struct TriggerEvent
  124. {
  125. enum Type { BEGIN_TOUCH, END_TOUCH } type;
  126. Actor* trigger;
  127. Actor* other;
  128. };
  129. } // namespace physics_world
  130. } // namespace crown