Logo
Physics.h
1#pragma once
2
3#include "Math/Vector3.h"
4
5namespace SharpKmyMath
6{
7 value class Matrix4;
8 value struct Vector3;
9}
10
11namespace SharpKmyPhysics
12{
13 public enum struct DebugDrawError{
14 None,
16 };
17
18 ref class PhysicsNode;
19 ref class Collider;
20 ref class RigidBody;
21 ref class Vehicle;
22 ref class PhysicsBase;
23 ref class PhysicsNotifyTarget;
24
25 public ref class RayCastHit
26 {
27 public:
31 float distance;
33 };
34
35 public ref class PhysicsBase
36 {
37 public:
38
39 PhysicsBase(kmyPhysics::PhysicsBase* p);
40
41 void lockUpdate();
42 void unlockUpdate();
43
44 void setGravity(float x, float y, float z);
46 void removeCollider(Collider ^c);
47 void removeVehicle(Vehicle^ v);
48 bool rayCast(SharpKmyMath::Vector3 from, SharpKmyMath::Vector3 to, unsigned short mask, RayCastHit^ hit);
49 bool rayCast(SharpKmyMath::Vector3 from, SharpKmyMath::Vector3 to, unsigned short mask, RayCastHit^ hit, PhysicsNotifyTarget^ self);
50 bool rayCast(SharpKmyMath::Vector3 from, SharpKmyMath::Vector3 to, unsigned short mask, RayCastHit^ hit, PhysicsNotifyTarget^ self, unsigned short type);
51 bool rayCast(SharpKmyMath::Vector3 from, SharpKmyMath::Vector3 to, unsigned short mask, RayCastHit^ hit, PhysicsNotifyTarget^ self, unsigned short type, int fellowId);
52 bool convexSweepTest(float radius, float height, SharpKmyMath::Vector3 from, SharpKmyMath::Vector3 to, unsigned short mask, RayCastHit^ hit);
53 bool convexSweepTest(float radius, float height, SharpKmyMath::Vector3 from, SharpKmyMath::Vector3 to, unsigned short mask, RayCastHit^ hit, PhysicsNotifyTarget^ self, unsigned short type);
54 bool convexSweepTest(float radius, float height, SharpKmyMath::Vector3 from, SharpKmyMath::Vector3 to, unsigned short mask, RayCastHit^ hit, PhysicsNotifyTarget^ self, unsigned short type, int fellowId);
55
57 float halfWidth, float halfHeight, float halfDepth,
59 unsigned short group,
60 unsigned short mask
61 );
62
64 float radius,
66 unsigned short group,
67 unsigned short mask
68 );
69
71 float radius,
72 float height,
74 unsigned short group,
75 unsigned short mask,
76 int axis
77 );
78
80 array<float> ^vertices,
81 array<unsigned short> ^indices,
84 unsigned short group,
85 unsigned short mask,
86 int verticesCount,
87 int indicesCount
88 );
89
91 System::Guid guid,
94 unsigned short group,
95 unsigned short mask
96 );
97
99 array<float> ^boxes,
102 unsigned short group,
103 unsigned short mask
104 );
105
107 float halfWidth, float halfHeight, float halfDepth,
108 float mass,
109 bool kinematic,
111 unsigned short group,
112 unsigned short mask
113 );
114
116 float radius,
117 float mass,
118 bool kinematic,
120 unsigned short group,
121 unsigned short mask
122 );
123
125 float radius,
126 float height,
127 float mass,
128 bool kinematic,
130 unsigned short group,
131 unsigned short mask,
132 int axis
133 );
134
136 array<float> ^boxes,
137 float mass,
138 bool kinematic,
141 unsigned short group,
142 unsigned short mask
143 );
144
146 System::Guid guid,
147 SharpKmyMath::Vector3 ^massCenter,
148 float mass,
149 bool kinematic,
152 unsigned short group,
153 unsigned short mask
154 );
155
157 float width, float height, float depth
158 , float wheelRadius, float wheelWidth, float wheelFriction
159 , float suspensionRestLength, float connectionHeight
160 , float suspensionStiffness, float suspensionDamping, float suspensionCompression
161 , float rigidbodyOffsetX, float rigidbodyOffsetY, float rigidbodyOffsetZ
162 , float positionX, float positionY, float positionZ
163 , float mass
164 );
165
166 void update(f32 delta);
168
169 private:
170 kmyPhysics::PhysicsBase *obj = nullptr;
171 };
172
173
174
175}
Definition: Matrix4.h:12
Definition: Collider.h:8
Definition: Physics.h:36
Collider createSphereCollider(float radius, SharpKmyMath::Matrix4 ^mtx, unsigned short group, unsigned short mask)
Definition: Physics.cpp:209
PhysicsBase(kmyPhysics::PhysicsBase *p)
Definition: Physics.cpp:5
void removeRigidBody(RigidBody ^r)
Definition: Physics.cpp:33
void removeCollider(Collider ^c)
Definition: Physics.cpp:43
RigidBody createCapsuleRigidBody(float radius, float height, float mass, bool kinematic, SharpKmyMath::Matrix4 ^mtx, unsigned short group, unsigned short mask, int axis)
Definition: Physics.cpp:460
RigidBody createCompoundRigidBody(array< float > ^boxes, float mass, bool kinematic, SharpKmyMath::Matrix4 ^mtx, SharpKmyMath::Vector3 ^scl, unsigned short group, unsigned short mask)
Definition: Physics.cpp:491
RigidBody createSphereRigidBody(float radius, float mass, bool kinematic, SharpKmyMath::Matrix4 ^mtx, unsigned short group, unsigned short mask)
Definition: Physics.cpp:434
void removeVehicle(Vehicle^ v)
Definition: Physics.cpp:53
Collider createBoxCollider(float halfWidth, float halfHeight, float halfDepth, SharpKmyMath::Matrix4 ^mtx, unsigned short group, unsigned short mask)
Definition: Physics.cpp:154
void setGravity(float x, float y, float z)
Definition: Physics.cpp:26
RigidBody createTriMeshRigidBody(System::Guid guid, SharpKmyMath::Vector3 ^massCenter, float mass, bool kinematic, SharpKmyMath::Matrix4 ^mtx, SharpKmyMath::Vector3 ^scl, unsigned short group, unsigned short mask)
Definition: Physics.cpp:528
void lockUpdate()
Definition: Physics.cpp:12
Collider createTriMeshCollider(array< float > ^vertices, array< unsigned short > ^indices, SharpKmyMath::Matrix4 ^mtx, SharpKmyMath::Vector3 ^scl, unsigned short group, unsigned short mask, int verticesCount, int indicesCount)
Definition: Physics.cpp:258
bool rayCast(SharpKmyMath::Vector3 from, SharpKmyMath::Vector3 to, unsigned short mask, RayCastHit^ hit, PhysicsNotifyTarget^ self, unsigned short type)
Collider createCompoundCollider(array< float > ^boxes, SharpKmyMath::Matrix4 ^mtx, SharpKmyMath::Vector3 ^scl, unsigned short group, unsigned short mask)
Definition: Physics.cpp:176
void unlockUpdate()
Definition: Physics.cpp:19
DebugDrawError getDebugDrawError()
Definition: Physics.cpp:675
RigidBody createBoxRigidBody(float halfWidth, float halfHeight, float halfDepth, float mass, bool kinematic, SharpKmyMath::Matrix4 ^mtx, unsigned short group, unsigned short mask)
Definition: Physics.cpp:408
void update(f32 delta)
Definition: Physics.cpp:668
Vehicle createVehicle(float width, float height, float depth, float wheelRadius, float wheelWidth, float wheelFriction, float suspensionRestLength, float connectionHeight, float suspensionStiffness, float suspensionDamping, float suspensionCompression, float rigidbodyOffsetX, float rigidbodyOffsetY, float rigidbodyOffsetZ, float positionX, float positionY, float positionZ, float mass)
Definition: Physics.cpp:638
Collider createCapsuleCollider(float radius, float height, SharpKmyMath::Matrix4 ^mtx, unsigned short group, unsigned short mask, int axis)
Definition: Physics.cpp:231
bool convexSweepTest(float radius, float height, SharpKmyMath::Vector3 from, SharpKmyMath::Vector3 to, unsigned short mask, RayCastHit^ hit)
Definition: Physics.cpp:112
bool rayCast(SharpKmyMath::Vector3 from, SharpKmyMath::Vector3 to, unsigned short mask, RayCastHit^ hit)
Definition: Physics.cpp:63
Definition: PhysicsNode.h:17
Definition: NativePhysicsNotifyTarget.h:26
Definition: Physics.h:26
int triangleIndex
Definition: Physics.h:32
PhysicsNode node
Definition: Physics.h:28
SharpKmyMath::Vector3 position
Definition: Physics.h:29
float distance
Definition: Physics.h:31
SharpKmyMath::Vector3 normal
Definition: Physics.h:30
Definition: RigidBody.h:9
Definition: Vehicle.h:6
Definition: RefCapture.h:3
Definition: Billboard.h:6
DebugDrawError
Definition: Physics.h:13
Definition: Vector3.h:7