ShitEngine
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
Toggle main menu visibility
载入中...
搜索中...
未找到
CircleCollider2D.h
浏览该文件的文档.
1
#pragma once
2
#include "
../Core/Core.h
"
3
#include "
../Math.h
"
4
#include "
../Component/Component.h
"
5
#include <cstdint>
6
7
namespace
Shit
{
22
class
SHIT_API
SHIT_REFLECT
(BlackList)
CircleCollider2D
:
public
Component
{
23
SHIT_REFLECT_BODY
(
CircleCollider2D
)
24
public
:
25
CircleCollider2D
();
26
explicit
CircleCollider2D
(
float
radius);
27
~CircleCollider2D
()
override
;
28
29
void
onAttach
()
override
;
30
void
onDetach
()
override
;
31
void
onDestroy
()
override
;
32
34
void
ensureShape
();
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
}
Component.h
Core.h
SHIT_API
#define SHIT_API
定义
Core.h:14
SHIT_REFLECT_BODY
#define SHIT_REFLECT_BODY(Type)
定义
Macros.h:62
SHIT_REFLECT
#define SHIT_REFLECT(Mode)
定义
Macros.h:59
SHIT_META
#define SHIT_META(...)
定义
Macros.h:68
Math.h
Shit::CircleCollider2D::setDensity
void setDensity(float density)
密度,默认 1.0f
Shit::CircleCollider2D::~CircleCollider2D
~CircleCollider2D() override
Shit::CircleCollider2D::setFriction
void setFriction(float friction)
摩擦系数,默认 0.3f
Shit::CircleCollider2D::setRestitution
void setRestitution(float restitution)
弹性系数,默认 0.0f
Shit::CircleCollider2D::getRadius
float getRadius() const
定义
CircleCollider2D.h:38
Shit::CircleCollider2D::getFriction
float getFriction() const
定义
CircleCollider2D.h:44
Shit::CircleCollider2D::getRestitution
float getRestitution() const
定义
CircleCollider2D.h:47
Shit::CircleCollider2D::getDensity
float getDensity() const
定义
CircleCollider2D.h:41
Shit::CircleCollider2D::onAttach
void onAttach() override
Shit::CircleCollider2D::setRadius
void setRadius(float radius)
像素半径,默认 16.0f
Shit::CircleCollider2D::onDetach
void onDetach() override
Shit::CircleCollider2D::ensureShape
void ensureShape()
内部:若同物体存在有效刚体则创建碰撞形状(幂等)。刚体后置挂载时由物理系统补调。
Shit::CircleCollider2D::CircleCollider2D
CircleCollider2D()
Shit::CircleCollider2D::onDestroy
void onDestroy() override
Shit::CircleCollider2D::CircleCollider2D
CircleCollider2D(float radius)
Shit::Component::Component
Component()
Shit
定义
AudioPlayer.h:10
include
ShitEngine
Physics
CircleCollider2D.h
制作者
1.17.0