ShitEngine
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
载入中...
搜索中...
未找到
CircleCollider2D.h
浏览该文件的文档.
1#pragma once
2#include "../Core/Core.h"
3#include "../Math.h"
5#include <cstdint>
6
7namespace Shit {
22 class SHIT_API SHIT_REFLECT(BlackList) CircleCollider2D : public Component {
24 public:
26 explicit CircleCollider2D(float radius);
28
29 void onAttach() override;
30 void onDetach() override;
31 void onDestroy() override;
32
35
36 // --- 配置(可在 onAttach 前后调用) ---
37 void setRadius(float radius);
38 float getRadius() const { return m_radius; }
39
40 void setDensity(float density);
41 float getDensity() const { return m_density; }
42
43 void setFriction(float friction);
44 float getFriction() const { return m_friction; }
45
46 void setRestitution(float restitution);
47 float getRestitution() const { return m_restitution; }
48
49 private:
50 SHIT_META(({.displayName = "Radius", .tooltip = "碰撞圆半径(像素)", .range = {1, 1024}, .step = 1}))
51 float m_radius = 16.0f;
52 SHIT_META(({.displayName = "Density", .range = {0, 100}, .step = 0.1}))
53 float m_density = 1.0f;
54 SHIT_META(({.displayName = "Friction", .tooltip = "摩擦系数", .range = {0, 1}, .step = 0.05}))
55 float m_friction = 0.3f;
56 SHIT_META(({.displayName = "Restitution", .tooltip = "弹性系数", .range = {0, 1}, .step = 0.05}))
57 float m_restitution = 0.0f;
58
59 // b2ShapeId = {int32_t index1; uint16_t world0; uint16_t generation;}
60 SHIT_META(Disable)
61 int32_t m_shapeIndex = 0;
62 SHIT_META(Disable)
63 uint16_t m_shapeWorld0 = 0;
64 SHIT_META(Disable)
65 uint16_t m_shapeGeneration = 0;
66 SHIT_META(Disable)
67 bool m_shapeValid = false;
68 };
69}
#define SHIT_API
定义 Core.h:14
#define SHIT_REFLECT_BODY(Type)
定义 Macros.h:62
#define SHIT_REFLECT(Mode)
定义 Macros.h:59
#define SHIT_META(...)
定义 Macros.h:68
void setDensity(float density)
密度,默认 1.0f
~CircleCollider2D() override
void setFriction(float friction)
摩擦系数,默认 0.3f
void setRestitution(float restitution)
弹性系数,默认 0.0f
float getRadius() const
定义 CircleCollider2D.h:38
float getFriction() const
定义 CircleCollider2D.h:44
float getRestitution() const
定义 CircleCollider2D.h:47
float getDensity() const
定义 CircleCollider2D.h:41
void onAttach() override
void setRadius(float radius)
像素半径,默认 16.0f
void onDetach() override
void ensureShape()
内部:若同物体存在有效刚体则创建碰撞形状(幂等)。刚体后置挂载时由物理系统补调。
void onDestroy() override
CircleCollider2D(float radius)
定义 AudioPlayer.h:10