dl
dl_physics.h
浏览该文件的文档.
1
12#pragma once
13
14#include <vector>
15#include <unordered_map>
16
17#include "dl_type.h"
18#include "math/dl_transform.h"
19#include "system/dl_time.h"
20#include "dl_rigid_body.h"
21
22namespace JPH
23{
24 class PhysicsSystem;
25 class BodyInterface;
26 class TempAllocatorImpl;
27 class JobSystemThreadPool;
28 class Body;
29 template<typename T>
30 class RefConst;
31 class Shape;
33}
34
35namespace dl
36{
37 struct RigidBodyShape;
38 class RigidBody;
39 struct PhysicsData;
40
43{
44public:
46
53 const Position3& pos, const Position3& rotate,
54 RigidBodyType type, bool active);
55
58
59 // 创建(取得)形状 box
60 // 一般来说一个模型拥有固定的 形状和物理属性()
61 // shape_id 等价模型id
62 // box 大小
63 // scale 缩放
64
74 const Position3& box,
75 const Position3& scale = {1.0f, 1.0f, 1.0f},
76 const Position3& offset = {},
77 const Position3& rotate = {});
78
79 void Update();
81
82 void _delete_rigid_body(RigidBody* rigid_body);
83
85private:
86 PhysicsData* _data;
87 JPH::PhysicsSystem* _system;
88 JPH::BodyInterface* _bodyInterface;
89 JPH::TempAllocatorImpl* _tempMemory;
90 JPH::JobSystemThreadPool* _jobSystem;
91
92 std::unordered_map<size_t, RigidBodyShape*> _allShape;
93
94 float _t;
95};
96
97extern Physics* g_physics;
98
99}
3d刚体物理系统
void RenderDebug()
RigidBody * CreateRigidBody(JPH::ShapeRefC *ref, const Position3 &pos, const Position3 &rotate, RigidBodyType type, bool active)
创建刚体
void Update()
JPH::ShapeRefC * CreateShapeBox(size_t shape_id, const Position3 &box, const Position3 &scale={1.0f, 1.0f, 1.0f}, const Position3 &offset={}, const Position3 &rotate={})
创建(取得)形状 box
RigidBody * CreateRigidBodyDefault(Transform *trans)
创建默认刚体
void _delete_rigid_body(RigidBody *rigid_body)
时间相关
具有矩阵的坐标系
通用类型
RefConst< Shape > ShapeRefC
Array< Float, 3 > Position3
Physics * g_physics