ShitEngine
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
载入中...
搜索中...
未找到
Shit 命名空间参考

struct  ActionBinding
 动作绑定配置 更多...
class  Animation
 逐帧动画数据 更多...
class  AnimationComponent
 动画组件 更多...
class  AudioManager
class  AudioPlayer
class  AudioTrack
class  AudioTrackGroup
struct  AxisBinding
 轴绑定配置 更多...
class  Behavior
 行为基类 —— 用于编写自定义游戏逻辑 更多...
class  BehaviorSystem
 Behavior 驱动系统 更多...
class  BoxCollider2D
 盒子碰撞体组件 更多...
class  CameraComponent
 相机组件,定义"从哪个角度观察世界" 更多...
class  CircleCollider2D
 圆形碰撞体组件 更多...
struct  Color
 RGBA 颜色(每通道 8 位) 更多...
class  Component
 组件基类 更多...
class  Config
 配置管理类 更多...
class  EngineContext
 引擎上下文:持有全部子系统实例 更多...
struct  EnumValue
 枚举常量 更多...
struct  Event
 事件基类,所有自定义事件须继承此结构体 更多...
class  EventBus
 事件总线,缓冲队列模式 更多...
struct  FieldInfo
struct  FieldMeta
class  FontManager
 字体缓存管理器(按路径+字号复合键缓存 TTF_Font) 更多...
class  Game
 引擎主控类 更多...
class  GameObject
 游戏物体类 更多...
class  Input
 输入管理(单例) 更多...
struct  InputMappingsConfig
 输入映射配置 更多...
class  Log
 日志封装类 更多...
class  PhysicsSystem2D
 2D 物理系统 更多...
class  PluginManager
 动态插件管理器(引擎级共享:Runtime 与编辑器共用) 更多...
class  Prefab
 预制体,可重复生成相同配置的 GameObject 更多...
struct  ProjectConfig
 项目配置 更多...
struct  RangeMeta
 字段元数据(由 SHIT_META 生成,供编辑器属性面板用) 更多...
class  Renderer
 渲染器,封装 SDL3 绘制 API 更多...
class  RendererComponent
 渲染组件基类 更多...
class  RenderSystem
 渲染系统 更多...
class  ResourceManager
 资源管理器(单例) 更多...
class  RigidBody2D
 刚体组件 更多...
class  Scene
 场景类 更多...
class  SceneManager
 场景管理器(单例) 更多...
class  SceneSerializer
 全场景序列化器 —— .scene 文件的事实标准(v2) 更多...
class  Sprite
 精灵数据,描述"画什么" 更多...
class  SpriteRenderer
 精灵组件 更多...
class  SpriteSheet
 精灵图集(sprite-sheet)网格切割器 更多...
class  System
 System 基类 更多...
class  TextInputGate
 文本输入聚焦门(进程级单例) 更多...
class  TextureManager
 纹理管理器 更多...
class  Time
 时间管理类 更多...
class  TransformComponent
 变换组件,决定 GameObject 的位置 / 缩放 / 旋转 更多...
struct  TypeInfo
class  TypeInfoBuilder
class  TypeRegistry
class  UIButton
 UI 按钮控件,基于鼠标 Raycasting 触发交互 更多...
class  UICanvas
 UI 层级根节点 更多...
class  UIImage
 UI 图片控件,在屏幕空间绘制一张精灵 更多...
class  UIRendererComponent
 UI 渲染控件基类(对应游戏世界的 RendererComponent) 更多...
class  UIRenderSystem
 UI 渲染系统 更多...
class  UIText
 UI 文字控件,使用 SDL_ttf 渲染文字到纹理 更多...
class  UITextArea
 多行文本输入区域 更多...
class  UITextBox
 单行文本输入框 更多...
class  UITextInput
 文本输入控件抽象基类 更多...
class  UITransform
 UI 专用变换组件(参考 Unity RectTransform,但不引入 Canvas Scaler) 更多...
class  WeakComponentRef
 组件弱引用 更多...
class  Window
 窗口管理类 更多...
struct  WindowConfig
 窗口配置 更多...

类型定义

using Json = nlohmann::json
using Vector2 = glm::vec2

枚举

enum class  KeyCode : int {
  Unknown = SDL_SCANCODE_UNKNOWN , A = SDL_SCANCODE_A ,
  B = SDL_SCANCODE_B , C = SDL_SCANCODE_C ,
  D = SDL_SCANCODE_D , E = SDL_SCANCODE_E ,
  F = SDL_SCANCODE_F , G = SDL_SCANCODE_G ,
  H = SDL_SCANCODE_H , I = SDL_SCANCODE_I ,
  J = SDL_SCANCODE_J , K = SDL_SCANCODE_K ,
  L = SDL_SCANCODE_L , M = SDL_SCANCODE_M ,
  N = SDL_SCANCODE_N , O = SDL_SCANCODE_O ,
  P = SDL_SCANCODE_P , Q = SDL_SCANCODE_Q ,
  R = SDL_SCANCODE_R , S = SDL_SCANCODE_S ,
  T = SDL_SCANCODE_T , U = SDL_SCANCODE_U ,
  V = SDL_SCANCODE_V , W = SDL_SCANCODE_W ,
  X = SDL_SCANCODE_X , Y = SDL_SCANCODE_Y ,
  Z = SDL_SCANCODE_Z , Num1 = SDL_SCANCODE_1 ,
  Num2 = SDL_SCANCODE_2 , Num3 = SDL_SCANCODE_3 ,
  Num4 = SDL_SCANCODE_4 , Num5 = SDL_SCANCODE_5 ,
  Num6 = SDL_SCANCODE_6 , Num7 = SDL_SCANCODE_7 ,
  Num8 = SDL_SCANCODE_8 , Num9 = SDL_SCANCODE_9 ,
  Num0 = SDL_SCANCODE_0 , Return = SDL_SCANCODE_RETURN ,
  Escape = SDL_SCANCODE_ESCAPE , Backspace = SDL_SCANCODE_BACKSPACE ,
  Tab = SDL_SCANCODE_TAB , Space = SDL_SCANCODE_SPACE ,
  Minus = SDL_SCANCODE_MINUS , Equals = SDL_SCANCODE_EQUALS ,
  LeftBracket = SDL_SCANCODE_LEFTBRACKET , RightBracket = SDL_SCANCODE_RIGHTBRACKET ,
  Backslash = SDL_SCANCODE_BACKSLASH , NonUSH = SDL_SCANCODE_NONUSHASH ,
  Semicolon = SDL_SCANCODE_SEMICOLON , Apostrophe = SDL_SCANCODE_APOSTROPHE ,
  Grave = SDL_SCANCODE_GRAVE , Comma = SDL_SCANCODE_COMMA ,
  Period = SDL_SCANCODE_PERIOD , Slash = SDL_SCANCODE_SLASH ,
  CapsLock = SDL_SCANCODE_CAPSLOCK , F1 = SDL_SCANCODE_F1 ,
  F2 = SDL_SCANCODE_F2 , F3 = SDL_SCANCODE_F3 ,
  F4 = SDL_SCANCODE_F4 , F5 = SDL_SCANCODE_F5 ,
  F6 = SDL_SCANCODE_F6 , F7 = SDL_SCANCODE_F7 ,
  F8 = SDL_SCANCODE_F8 , F9 = SDL_SCANCODE_F9 ,
  F10 = SDL_SCANCODE_F10 , F11 = SDL_SCANCODE_F11 ,
  F12 = SDL_SCANCODE_F12 , PrintScreen = SDL_SCANCODE_PRINTSCREEN ,
  ScrollLock = SDL_SCANCODE_SCROLLLOCK , Pause = SDL_SCANCODE_PAUSE ,
  Insert = SDL_SCANCODE_INSERT , Home = SDL_SCANCODE_HOME ,
  PageUp = SDL_SCANCODE_PAGEUP , Delete = SDL_SCANCODE_DELETE ,
  End = SDL_SCANCODE_END , PageDown = SDL_SCANCODE_PAGEDOWN ,
  Right = SDL_SCANCODE_RIGHT , Left = SDL_SCANCODE_LEFT ,
  Down = SDL_SCANCODE_DOWN , Up = SDL_SCANCODE_UP ,
  NumLockClear = SDL_SCANCODE_NUMLOCKCLEAR , KP_Divide = SDL_SCANCODE_KP_DIVIDE ,
  KP_Multiply = SDL_SCANCODE_KP_MULTIPLY , KP_Minus = SDL_SCANCODE_KP_MINUS ,
  KP_Plus = SDL_SCANCODE_KP_PLUS , KP_Enter = SDL_SCANCODE_KP_ENTER ,
  KP_1 = SDL_SCANCODE_KP_1 , KP_2 = SDL_SCANCODE_KP_2 ,
  KP_3 = SDL_SCANCODE_KP_3 , KP_4 = SDL_SCANCODE_KP_4 ,
  KP_5 = SDL_SCANCODE_KP_5 , KP_6 = SDL_SCANCODE_KP_6 ,
  KP_7 = SDL_SCANCODE_KP_7 , KP_8 = SDL_SCANCODE_KP_8 ,
  KP_9 = SDL_SCANCODE_KP_9 , KP_0 = SDL_SCANCODE_KP_0 ,
  KP_Period = SDL_SCANCODE_KP_PERIOD , NonUSBackslash = SDL_SCANCODE_NONUSBACKSLASH ,
  Application = SDL_SCANCODE_APPLICATION , Power = SDL_SCANCODE_POWER ,
  KP_Equals = SDL_SCANCODE_KP_EQUALS , F13 = SDL_SCANCODE_F13 ,
  F14 = SDL_SCANCODE_F14 , F15 = SDL_SCANCODE_F15 ,
  F16 = SDL_SCANCODE_F16 , F17 = SDL_SCANCODE_F17 ,
  F18 = SDL_SCANCODE_F18 , F19 = SDL_SCANCODE_F19 ,
  F20 = SDL_SCANCODE_F20 , F21 = SDL_SCANCODE_F21 ,
  F22 = SDL_SCANCODE_F22 , F23 = SDL_SCANCODE_F23 ,
  F24 = SDL_SCANCODE_F24 , Sleep = SDL_SCANCODE_SLEEP ,
  Wake = SDL_SCANCODE_WAKE , MediaPlay = SDL_SCANCODE_MEDIA_PLAY ,
  MediaPause = SDL_SCANCODE_MEDIA_PAUSE , MediaRecord = SDL_SCANCODE_MEDIA_RECORD ,
  MediaNext = SDL_SCANCODE_MEDIA_NEXT_TRACK , MediaPrev = SDL_SCANCODE_MEDIA_PREVIOUS_TRACK ,
  MediaStop = SDL_SCANCODE_MEDIA_STOP , MediaPlayPause = SDL_SCANCODE_MEDIA_PLAY_PAUSE ,
  LCtrl = SDL_SCANCODE_LCTRL , LShift = SDL_SCANCODE_LSHIFT ,
  LAlt = SDL_SCANCODE_LALT , LGui = SDL_SCANCODE_LGUI ,
  RCtrl = SDL_SCANCODE_RCTRL , RShift = SDL_SCANCODE_RSHIFT ,
  RAlt = SDL_SCANCODE_RALT , RGui = SDL_SCANCODE_RGUI ,
  Mode = SDL_SCANCODE_MODE , Reserved = SDL_SCANCODE_RESERVED ,
  Count = SDL_SCANCODE_COUNT
}
enum class  MouseButton : int {
  Left = SDL_BUTTON_LEFT , Right = SDL_BUTTON_RIGHT ,
  Middle = SDL_BUTTON_MIDDLE , XButton1 = SDL_BUTTON_X1 ,
  XButton2 = SDL_BUTTON_X2 , Count = 6
}

函数

std::string DemangleTypeName (const char *mangled)
template<typename T, typename M>
size_t memberOffset (M T::*member)
 计算成员指针相对于类基址的偏移量(供反射注册代码使用) 用法: memberOffset(&MyClass::myField) 需要通过 friend 声明获取 private/protected 成员的访问权
TypeInfoBuilder ReflectType (const char *name, size_t size)

类型定义说明

◆ Json

using Json = nlohmann::json

◆ Vector2

using Vector2 = glm::vec2

枚举类型说明

◆ KeyCode

enum class KeyCode : int
strong
枚举值
Unknown 
Num1 
Num2 
Num3 
Num4 
Num5 
Num6 
Num7 
Num8 
Num9 
Num0 
Return 
Escape 
Backspace 
Tab 
Space 
Minus 
Equals 
LeftBracket 
RightBracket 
Backslash 
NonUSH 
Semicolon 
Apostrophe 
Grave 
Comma 
Period 
Slash 
CapsLock 
F1 
F2 
F3 
F4 
F5 
F6 
F7 
F8 
F9 
F10 
F11 
F12 
PrintScreen 
ScrollLock 
Pause 
Insert 
Home 
PageUp 
Delete 
End 
PageDown 
Right 
Left 
Down 
Up 
NumLockClear 
KP_Divide 
KP_Multiply 
KP_Minus 
KP_Plus 
KP_Enter 
KP_1 
KP_2 
KP_3 
KP_4 
KP_5 
KP_6 
KP_7 
KP_8 
KP_9 
KP_0 
KP_Period 
NonUSBackslash 
Application 
Power 
KP_Equals 
F13 
F14 
F15 
F16 
F17 
F18 
F19 
F20 
F21 
F22 
F23 
F24 
Sleep 
Wake 
MediaPlay 
MediaPause 
MediaRecord 
MediaNext 
MediaPrev 
MediaStop 
MediaPlayPause 
LCtrl 
LShift 
LAlt 
LGui 
RCtrl 
RShift 
RAlt 
RGui 
Mode 
Reserved 
Count 

◆ MouseButton

enum class MouseButton : int
strong
枚举值
Left 
Right 
Middle 
XButton1 
XButton2 
Count 

函数说明

◆ DemangleTypeName()

std::string DemangleTypeName ( const char * mangled)
inline

◆ memberOffset()

template<typename T, typename M>
size_t memberOffset ( M T::* member)
inline

计算成员指针相对于类基址的偏移量(供反射注册代码使用) 用法: memberOffset(&MyClass::myField) 需要通过 friend 声明获取 private/protected 成员的访问权

◆ ReflectType()

TypeInfoBuilder ReflectType ( const char * name,
size_t size )
inline