Skip to content

Commit c0fa985

Browse files
committed
::Physics FFI
1 parent 2bced17 commit c0fa985

11 files changed

Lines changed: 99 additions & 66 deletions

File tree

3DRadSpace/Engine3DRadSpace/FFI/Core/IDrawable3D.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#pragma once
2-
#include "../Core/Libs.h"
2+
#include "../../Core/Libs.h"
33

44
typedef void* E3DRSP_IDrawable3D;
55

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
#include "IService.hpp"
1+
#include "../../Core/IService.hpp"
22
#include "IService.h"
33

44
using namespace Engine3DRadSpace;
55

66
void E3DRSP_IService_Destroy(E3DRSP_IService* service)
77
{
8-
assert(service != nullptr);
9-
delete reinterpret_cast<IService*>(service);
8+
if(service != nullptr)
9+
delete reinterpret_cast<IService*>(service);
1010
}

3DRadSpace/Engine3DRadSpace/FFI/Game.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
#pragma once
22
#include "../Core/Libs.h"
3-
#include "../Math/Ray.h"
4-
#include "../Math/Vector2.h"
5-
#include "../Math/Vector3.h"
6-
#include "../Math/Matrix4x4.h"
3+
#include "Math/Ray.h"
4+
#include "Math/Vector2.h"
5+
#include "Math/Vector3.h"
6+
#include "Math/Matrix4x4.h"
77

88
typedef void* E3DRSP_Game;
99

3DRadSpace/Engine3DRadSpace/FFI/Graphics/IGPUResource.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#pragma once
2-
#include "../Core/Libs.h"
2+
#include "../../Core/Libs.h"
33

44
typedef void* E3DRSP_IGraphicsDevice;
55
typedef void* E3DRSP_IGPUResource;
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#include "ICollider.h"
2+
#include "../../Objects/Impl/ICollider.hpp"
3+
4+
using namespace Engine3DRadSpace::Physicsl
5+
6+
float E3DRSP_ICollider_GetMass(E3DRSP_ICollider* collider)
7+
{
8+
return reinterpret_cast<ICollider*>(collider)->Mass;
9+
}
10+
11+
void E3DRSP_ICollider_SetMass(E3DRSP_ICollider* collider, float mass)
12+
{
13+
reinterpret_cast<ICollider*>(collider)->Mass = mass;
14+
}
15+
16+
E3DRSP_IPhysicsEngine E3DRSP_ICollider_GetPhysics(const E3DRSP_ICollider* collider)
17+
{
18+
return reinterpret_cast<const ICollider*>(collider)->GetPhysics();
19+
}
20+
21+
float E3DRSP_ICollider_Intersects(E3DRSP_ICollider* collider, const E3DRSP_Ray* r)
22+
{
23+
auto dst = reinterpret_cast<ICollider*>(collider)->Intersects(
24+
Ray
25+
{
26+
.Origin = {r->Origin.X, r->Origin.Y, r->Origin.Z},
27+
.Direction = {r->Direction.X, r->Direction.Y, r->Direction.Z}
28+
}
29+
);
30+
31+
return dst.has_value() ? dst.value() : std::numeric_limits<float>::signaling_NaN();
32+
}
33+
34+
void E3DRSP_ICollider_Destroy(E3DRSP_ICollider* collider)
35+
{
36+
delete reinterpret_cast<ICollider*>(collider);
37+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#pragma once
2+
#include "IPhysicsEngine.h"
3+
#include "../Math/Vector3.h"
4+
#include "../Math/Ray.h"
5+
6+
typedef void* E3DRSP_ICollider;
7+
8+
#ifdef __cplusplus
9+
extern "C"
10+
{
11+
#endif
12+
E3DRSP_PHYSICS_EXPORT float E3DRSP_ICollider_GetMass(E3DRSP_ICollider* collider);
13+
E3DRSP_PHYSICS_EXPORT void E3DRSP_ICollider_SetMass(E3DRSP_ICollider* collider, float mass);
14+
15+
E3DRSP_PHYSICS_EXPORT float E3DRSP_ICollider_GetLinearDamping(E3DRSP_ICollider* collider);
16+
E3DRSP_PHYSICS_EXPORT void E3DRSP_ICollider_SetLinearDamping(E3DRSP_ICollider* collider, float linearDamping);
17+
18+
E3DRSP_PHYSICS_EXPORT float E3DRSP_ICollider_GetAngularDamping(E3DRSP_ICollider* collider);
19+
E3DRSP_PHYSICS_EXPORT void E3DRSP_ICollider_SetAngularDamping(E3DRSP_ICollider* collider, float angularDamping);
20+
21+
E3DRSP_PHYSICS_EXPORT float E3DRSP_ICollider_GetStaticFriction(E3DRSP_ICollider* collider);
22+
E3DRSP_PHYSICS_EXPORT void E3DRSP_ICollider_SetStaticFriction(E3DRSP_ICollider* collider, float staticFriction);
23+
24+
E3DRSP_PHYSICS_EXPORT float E3DRSP_ICollider_GetDynamicFriction(E3DRSP_ICollider* collider);
25+
E3DRSP_PHYSICS_EXPORT void E3DRSP_ICollider_SetDynamicFriction(E3DRSP_ICollider* collider, float dynFriction);
26+
27+
E3DRSP_PHYSICS_EXPORT float E3DRSP_ICollider_GetRestitution(E3DRSP_ICollider* collider);
28+
E3DRSP_PHYSICS_EXPORT void E3DRSP_ICollider_SetRestitution(E3DRSP_ICollider* collider, float restitution);
29+
30+
E3DRSP_PHYSICS_EXPORT E3DRSP_Vector3 E3DRSP_ICollider_GetLinearVelocity(E3DRSP_ICollider* collider);
31+
E3DRSP_PHYSICS_EXPORT void E3DRSP_ICollider_SetLinearVelocity(E3DRSP_ICollider* collider, const E3DRSP_Vector3* vel);
32+
33+
E3DRSP_PHYSICS_EXPORT E3DRSP_Vector3 E3DRSP_ICollider_GetAngularVelocity(E3DRSP_ICollider* collider);
34+
E3DRSP_PHYSICS_EXPORT void E3DRSP_ICollider_SetAngularVelocity(E3DRSP_ICollider* collider, const E3DRSP_Vector3* vel);
35+
36+
E3DRSP_PHYSICS_EXPORT E3DRSP_Vector3 E3DRSP_ICollider_GetMaxAngularVelocity(E3DRSP_ICollider* collider);
37+
E3DRSP_PHYSICS_EXPORT void E3DRSP_ICollider_SetMaxAngularVelocity(E3DRSP_ICollider* collider, const E3DRSP_Vector3* vel);
38+
39+
E3DRSP_PHYSICS_EXPORT E3DRSP_IPhysicsEngine E3DRSP_ICollider_GetPhysics(const E3DRSP_ICollider* collider);
40+
41+
E3DRSP_PHYSICS_EXPORT bool E3DRSP_ICollider_ApplyForce(E3DRSP_ICollider* collider, const E3DRSP_Vector3* force);
42+
E3DRSP_PHYSICS_EXPORT bool E3DRSP_ICollider_ApplyForce2(E3DRSP_ICollider* collider, const E3DRSP_Vector3* force, const E3DRSP_Vector3* center);
43+
E3DRSP_PHYSICS_EXPORT bool E3DRSP_ICollider_ApplyTorque(E3DRSP_ICollider* collider, const E3DRSP_Vector3* force);
44+
45+
E3DRSP_PHYSICS_EXPORT bool E3DRSP_ICollider_ApplyAcceleration(E3DRSP_ICollider* collider, E3DRSP_Vector3* acc);
46+
E3DRSP_PHYSICS_EXPORT bool E3DRSP_ICollider_ApplyAngularAcceleration(E3DRSP_ICollider* collider, E3DRSP_Vector3* acc);
47+
48+
E3DRSP_PHYSICS_EXPORT float E3DRSP_ICollider_Intersects(E3DRSP_ICollider* collider, const E3DRSP_Ray* r);
49+
50+
E3DRSP_PHYSICS_EXPORT void E3DRSP_ICollider_Destroy(E3DRSP_ICollider* collider);
51+
#ifdef __cplusplus
52+
}
53+
#endif

3DRadSpace/Engine3DRadSpace/Physics/IPhysicsEngine.cpp renamed to 3DRadSpace/Engine3DRadSpace/FFI/Physics/IPhysicsEngine.cpp

File renamed without changes.

3DRadSpace/Engine3DRadSpace/Physics/IPhysicsEngine.h renamed to 3DRadSpace/Engine3DRadSpace/FFI/Physics/IPhysicsEngine.h

File renamed without changes.

3DRadSpace/Engine3DRadSpace/Physics/CMakeLists.txt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,9 @@ add_library(3DRadSpace.Physics SHARED
66
"Collider.hpp"
77
"ICollider.hpp"
88
"ICollider.cpp"
9-
"ICollider.h"
109
"IDynamicCollider.hpp"
1110
"IDynamicCollider.cpp"
1211
"IPhysicsEngine.hpp"
13-
"IPhysicsEngine.cpp"
14-
"IPhysicsEngine.h"
1512
"IStaticCollider.hpp"
1613
"IStaticCollider.cpp"
1714
"PhysicsSettings.hpp"

3DRadSpace/Engine3DRadSpace/Physics/ICollider.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#include "ICollider.hpp"
2-
#include "ICollider.h"
32
#include "IPhysicsEngine.hpp"
43

54
using namespace Engine3DRadSpace::Math;

0 commit comments

Comments
 (0)