refactor(core): 重命名智能指针类型别名
将 UniquePtr 重命名为 Unique,WeakPtr 重命名为 Weak 更新相关文件和文档中的引用
This commit is contained in:
parent
c61edbb9dd
commit
ec136e42e4
|
|
@ -60,10 +60,10 @@ private:
|
||||||
|
|
||||||
AppConfig config_;
|
AppConfig config_;
|
||||||
|
|
||||||
UniquePtr<Window> window_;
|
Unique<Window> window_;
|
||||||
UniquePtr<Renderer> renderer_;
|
Unique<Renderer> renderer_;
|
||||||
UniquePtr<EventQueue> eventQueue_;
|
Unique<EventQueue> eventQueue_;
|
||||||
UniquePtr<EventDispatcher> eventDispatcher_;
|
Unique<EventDispatcher> eventDispatcher_;
|
||||||
|
|
||||||
bool initialized_ = false;
|
bool initialized_ = false;
|
||||||
bool running_ = false;
|
bool running_ = false;
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
|
||||||
|
|
||||||
namespace extra2d {
|
namespace extra2d {
|
||||||
|
|
||||||
|
|
@ -12,9 +11,9 @@ namespace extra2d {
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
template <typename T> using Ptr = std::shared_ptr<T>;
|
template <typename T> using Ptr = std::shared_ptr<T>;
|
||||||
|
|
||||||
template <typename T> using UniquePtr = std::unique_ptr<T>;
|
template <typename T> using Unique = std::unique_ptr<T>;
|
||||||
|
|
||||||
template <typename T> using WeakPtr = std::weak_ptr<T>;
|
template <typename T> using Weak = std::weak_ptr<T>;
|
||||||
|
|
||||||
/// 创建 shared_ptr 的便捷函数
|
/// 创建 shared_ptr 的便捷函数
|
||||||
template <typename T, typename... Args> inline Ptr<T> shared(Args &&...args) {
|
template <typename T, typename... Args> inline Ptr<T> shared(Args &&...args) {
|
||||||
|
|
@ -23,7 +22,7 @@ template <typename T, typename... Args> inline Ptr<T> shared(Args &&...args) {
|
||||||
|
|
||||||
/// 创建 unique_ptr 的便捷函数
|
/// 创建 unique_ptr 的便捷函数
|
||||||
template <typename T, typename... Args>
|
template <typename T, typename... Args>
|
||||||
inline UniquePtr<T> unique(Args &&...args) {
|
inline Unique<T> unique(Args &&...args) {
|
||||||
return std::make_unique<T>(std::forward<Args>(args)...);
|
return std::make_unique<T>(std::forward<Args>(args)...);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <atomic>
|
||||||
#include <extra2d/audio/sound.h>
|
#include <extra2d/audio/sound.h>
|
||||||
#include <extra2d/core/types.h>
|
#include <extra2d/core/types.h>
|
||||||
#include <extra2d/graphics/alpha_mask.h>
|
#include <extra2d/graphics/alpha_mask.h>
|
||||||
|
|
@ -7,15 +8,15 @@
|
||||||
#include <extra2d/graphics/texture.h>
|
#include <extra2d/graphics/texture.h>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <future>
|
#include <future>
|
||||||
#include <mutex>
|
|
||||||
#include <string>
|
|
||||||
#include <unordered_map>
|
|
||||||
#include <queue>
|
|
||||||
#include <thread>
|
|
||||||
#include <atomic>
|
|
||||||
#include <list>
|
#include <list>
|
||||||
|
#include <mutex>
|
||||||
|
#include <queue>
|
||||||
|
#include <string>
|
||||||
|
#include <thread>
|
||||||
|
#include <unordered_map>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
|
||||||
namespace extra2d {
|
namespace extra2d {
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
@ -25,14 +26,14 @@ namespace extra2d {
|
||||||
|
|
||||||
// 纹理格式枚举
|
// 纹理格式枚举
|
||||||
enum class TextureFormat {
|
enum class TextureFormat {
|
||||||
Auto = 0, // 自动选择最佳格式
|
Auto = 0, // 自动选择最佳格式
|
||||||
RGBA8, // 32位 RGBA
|
RGBA8, // 32位 RGBA
|
||||||
RGB8, // 24位 RGB
|
RGB8, // 24位 RGB
|
||||||
DXT1, // BC1/DXT1 压缩(1 bit alpha)
|
DXT1, // BC1/DXT1 压缩(1 bit alpha)
|
||||||
DXT5, // BC3/DXT5 压缩(完整 alpha)
|
DXT5, // BC3/DXT5 压缩(完整 alpha)
|
||||||
ETC2, // ETC2 压缩(移动平台)
|
ETC2, // ETC2 压缩(移动平台)
|
||||||
ASTC4x4, // ASTC 4x4 压缩(高质量)
|
ASTC4x4, // ASTC 4x4 压缩(高质量)
|
||||||
ASTC8x8, // ASTC 8x8 压缩(高压缩率)
|
ASTC8x8, // ASTC 8x8 压缩(高压缩率)
|
||||||
};
|
};
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
@ -40,9 +41,9 @@ enum class TextureFormat {
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
struct TextureCacheEntry {
|
struct TextureCacheEntry {
|
||||||
Ptr<Texture> texture;
|
Ptr<Texture> texture;
|
||||||
size_t size = 0; // 纹理大小(字节)
|
size_t size = 0; // 纹理大小(字节)
|
||||||
float lastAccessTime = 0.0f; // 最后访问时间
|
float lastAccessTime = 0.0f; // 最后访问时间
|
||||||
uint32_t accessCount = 0; // 访问次数
|
uint32_t accessCount = 0; // 访问次数
|
||||||
};
|
};
|
||||||
|
|
||||||
// 异步加载回调类型
|
// 异步加载回调类型
|
||||||
|
|
@ -66,13 +67,16 @@ public:
|
||||||
Ptr<Texture> loadTexture(const std::string &filepath, bool async);
|
Ptr<Texture> loadTexture(const std::string &filepath, bool async);
|
||||||
|
|
||||||
/// 加载纹理(完整参数:异步 + 压缩格式)
|
/// 加载纹理(完整参数:异步 + 压缩格式)
|
||||||
Ptr<Texture> loadTexture(const std::string &filepath, bool async, TextureFormat format);
|
Ptr<Texture> loadTexture(const std::string &filepath, bool async,
|
||||||
|
TextureFormat format);
|
||||||
|
|
||||||
/// 异步加载纹理(带回调)
|
/// 异步加载纹理(带回调)
|
||||||
void loadTextureAsync(const std::string &filepath, TextureLoadCallback callback);
|
void loadTextureAsync(const std::string &filepath,
|
||||||
|
TextureLoadCallback callback);
|
||||||
|
|
||||||
/// 异步加载纹理(指定格式 + 回调)
|
/// 异步加载纹理(指定格式 + 回调)
|
||||||
void loadTextureAsync(const std::string &filepath, TextureFormat format, TextureLoadCallback callback);
|
void loadTextureAsync(const std::string &filepath, TextureFormat format,
|
||||||
|
TextureLoadCallback callback);
|
||||||
|
|
||||||
/// 加载纹理并生成Alpha遮罩(用于不规则形状图片)
|
/// 加载纹理并生成Alpha遮罩(用于不规则形状图片)
|
||||||
Ptr<Texture> loadTextureWithAlphaMask(const std::string &filepath);
|
Ptr<Texture> loadTextureWithAlphaMask(const std::string &filepath);
|
||||||
|
|
@ -146,7 +150,8 @@ public:
|
||||||
/// @param filepath 文件路径
|
/// @param filepath 文件路径
|
||||||
/// @param encoding 文件编码(默认 UTF-8)
|
/// @param encoding 文件编码(默认 UTF-8)
|
||||||
/// @return 文件内容字符串
|
/// @return 文件内容字符串
|
||||||
std::string loadTextFile(const std::string &filepath, const std::string &encoding);
|
std::string loadTextFile(const std::string &filepath,
|
||||||
|
const std::string &encoding);
|
||||||
|
|
||||||
/// 通过key获取已缓存的文本内容
|
/// 通过key获取已缓存的文本内容
|
||||||
std::string getTextFile(const std::string &key) const;
|
std::string getTextFile(const std::string &key) const;
|
||||||
|
|
@ -251,14 +256,16 @@ private:
|
||||||
bool useSDF) const;
|
bool useSDF) const;
|
||||||
|
|
||||||
// 内部加载实现
|
// 内部加载实现
|
||||||
Ptr<Texture> loadTextureInternal(const std::string &filepath, TextureFormat format);
|
Ptr<Texture> loadTextureInternal(const std::string &filepath,
|
||||||
|
TextureFormat format);
|
||||||
|
|
||||||
// 选择最佳纹理格式
|
// 选择最佳纹理格式
|
||||||
TextureFormat selectBestFormat(TextureFormat requested) const;
|
TextureFormat selectBestFormat(TextureFormat requested) const;
|
||||||
|
|
||||||
// 压缩纹理数据
|
// 压缩纹理数据
|
||||||
std::vector<uint8_t> compressTexture(const uint8_t* data, int width, int height,
|
std::vector<uint8_t> compressTexture(const uint8_t *data, int width,
|
||||||
int channels, TextureFormat format);
|
int height, int channels,
|
||||||
|
TextureFormat format);
|
||||||
|
|
||||||
// 互斥锁保护缓存
|
// 互斥锁保护缓存
|
||||||
mutable std::mutex textureMutex_;
|
mutable std::mutex textureMutex_;
|
||||||
|
|
@ -268,8 +275,8 @@ private:
|
||||||
mutable std::mutex jsonFileMutex_;
|
mutable std::mutex jsonFileMutex_;
|
||||||
|
|
||||||
// 资源缓存 - 使用弱指针实现自动清理
|
// 资源缓存 - 使用弱指针实现自动清理
|
||||||
std::unordered_map<std::string, WeakPtr<FontAtlas>> fontCache_;
|
std::unordered_map<std::string, Weak<FontAtlas>> fontCache_;
|
||||||
std::unordered_map<std::string, WeakPtr<Sound>> soundCache_;
|
std::unordered_map<std::string, Weak<Sound>> soundCache_;
|
||||||
|
|
||||||
// 文本文件缓存 - 使用强引用(字符串值类型)
|
// 文本文件缓存 - 使用强引用(字符串值类型)
|
||||||
std::unordered_map<std::string, std::string> textFileCache_;
|
std::unordered_map<std::string, std::string> textFileCache_;
|
||||||
|
|
@ -282,24 +289,24 @@ private:
|
||||||
// LRU链表节点
|
// LRU链表节点
|
||||||
struct LRUNode {
|
struct LRUNode {
|
||||||
std::string key;
|
std::string key;
|
||||||
uint32_t prev = 0; // 数组索引,0表示无效
|
uint32_t prev = 0; // 数组索引,0表示无效
|
||||||
uint32_t next = 0; // 数组索引,0表示无效
|
uint32_t next = 0; // 数组索引,0表示无效
|
||||||
bool valid = false;
|
bool valid = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
// 纹理缓存配置
|
// 纹理缓存配置
|
||||||
size_t maxCacheSize_ = 64 * 1024 * 1024; // 最大缓存大小 (64MB)
|
size_t maxCacheSize_ = 64 * 1024 * 1024; // 最大缓存大小 (64MB)
|
||||||
size_t maxTextureCount_ = 256; // 最大纹理数量
|
size_t maxTextureCount_ = 256; // 最大纹理数量
|
||||||
float unloadInterval_ = 30.0f; // 自动清理间隔 (秒)
|
float unloadInterval_ = 30.0f; // 自动清理间隔 (秒)
|
||||||
|
|
||||||
// 纹理缓存 - 使用强指针保持引用
|
// 纹理缓存 - 使用强指针保持引用
|
||||||
std::unordered_map<std::string, TextureCacheEntry> textureCache_;
|
std::unordered_map<std::string, TextureCacheEntry> textureCache_;
|
||||||
|
|
||||||
// 侵入式LRU链表 - 使用数组索引代替指针,提高缓存局部性
|
// 侵入式LRU链表 - 使用数组索引代替指针,提高缓存局部性
|
||||||
std::vector<LRUNode> lruNodes_;
|
std::vector<LRUNode> lruNodes_;
|
||||||
uint32_t lruHead_ = 0; // 最近使用
|
uint32_t lruHead_ = 0; // 最近使用
|
||||||
uint32_t lruTail_ = 0; // 最久未使用
|
uint32_t lruTail_ = 0; // 最久未使用
|
||||||
uint32_t freeList_ = 0; // 空闲节点链表
|
uint32_t freeList_ = 0; // 空闲节点链表
|
||||||
|
|
||||||
// 统计
|
// 统计
|
||||||
size_t totalTextureSize_ = 0;
|
size_t totalTextureSize_ = 0;
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,7 @@ public:
|
||||||
* @brief 设置颜色
|
* @brief 设置颜色
|
||||||
* @param color RGB颜色
|
* @param color RGB颜色
|
||||||
*/
|
*/
|
||||||
void setColor(const Color3B& color);
|
void setColor(const Color3B &color);
|
||||||
Color3B getColor() const { return color_; }
|
Color3B getColor() const { return color_; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -163,7 +163,7 @@ public:
|
||||||
* @param action 动作指针(所有权转移)
|
* @param action 动作指针(所有权转移)
|
||||||
* @return 动作指针
|
* @return 动作指针
|
||||||
*/
|
*/
|
||||||
Action* runAction(Action* action);
|
Action *runAction(Action *action);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 停止所有动作
|
* @brief 停止所有动作
|
||||||
|
|
@ -174,7 +174,7 @@ public:
|
||||||
* @brief 停止指定动作
|
* @brief 停止指定动作
|
||||||
* @param action 动作指针
|
* @param action 动作指针
|
||||||
*/
|
*/
|
||||||
void stopAction(Action* action);
|
void stopAction(Action *action);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 根据标签停止动作
|
* @brief 根据标签停止动作
|
||||||
|
|
@ -193,7 +193,7 @@ public:
|
||||||
* @param tag 标签值
|
* @param tag 标签值
|
||||||
* @return 动作指针,未找到返回 nullptr
|
* @return 动作指针,未找到返回 nullptr
|
||||||
*/
|
*/
|
||||||
Action* getActionByTag(int tag);
|
Action *getActionByTag(int tag);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 获取运行中的动作数量
|
* @brief 获取运行中的动作数量
|
||||||
|
|
@ -248,57 +248,57 @@ private:
|
||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
|
|
||||||
// 1. 大块内存(64字节)
|
// 1. 大块内存(64字节)
|
||||||
mutable glm::mat4 localTransform_; // 64 bytes
|
mutable glm::mat4 localTransform_; // 64 bytes
|
||||||
mutable glm::mat4 worldTransform_; // 64 bytes
|
mutable glm::mat4 worldTransform_; // 64 bytes
|
||||||
|
|
||||||
// 2. 字符串和容器(24-32字节)
|
// 2. 字符串和容器(24-32字节)
|
||||||
std::string name_; // 32 bytes
|
std::string name_; // 32 bytes
|
||||||
std::vector<Ptr<Node>> children_; // 24 bytes
|
std::vector<Ptr<Node>> children_; // 24 bytes
|
||||||
|
|
||||||
// 3. 子节点索引(加速查找)
|
// 3. 子节点索引(加速查找)
|
||||||
std::unordered_map<std::string, WeakPtr<Node>> nameIndex_; // 56 bytes
|
std::unordered_map<std::string, Weak<Node>> nameIndex_; // 56 bytes
|
||||||
std::unordered_map<int, WeakPtr<Node>> tagIndex_; // 56 bytes
|
std::unordered_map<int, Weak<Node>> tagIndex_; // 56 bytes
|
||||||
|
|
||||||
// 4. 事件分发器
|
// 4. 事件分发器
|
||||||
EventDispatcher eventDispatcher_; // 大小取决于实现
|
EventDispatcher eventDispatcher_; // 大小取决于实现
|
||||||
|
|
||||||
// 5. 父节点引用
|
// 5. 父节点引用
|
||||||
WeakPtr<Node> parent_; // 16 bytes
|
Weak<Node> parent_; // 16 bytes
|
||||||
|
|
||||||
// 7. 变换属性(按访问频率分组)
|
// 7. 变换属性(按访问频率分组)
|
||||||
Vec2 position_ = Vec2::Zero(); // 8 bytes
|
Vec2 position_ = Vec2::Zero(); // 8 bytes
|
||||||
Vec2 scale_ = Vec2(1.0f, 1.0f); // 8 bytes
|
Vec2 scale_ = Vec2(1.0f, 1.0f); // 8 bytes
|
||||||
Vec2 anchor_ = Vec2(0.5f, 0.5f); // 8 bytes
|
Vec2 anchor_ = Vec2(0.5f, 0.5f); // 8 bytes
|
||||||
Vec2 skew_ = Vec2::Zero(); // 8 bytes
|
Vec2 skew_ = Vec2::Zero(); // 8 bytes
|
||||||
|
|
||||||
// 8. 边界框(用于空间索引)
|
// 8. 边界框(用于空间索引)
|
||||||
Rect lastSpatialBounds_; // 16 bytes
|
Rect lastSpatialBounds_; // 16 bytes
|
||||||
|
|
||||||
// 9. 浮点属性
|
// 9. 浮点属性
|
||||||
float rotation_ = 0.0f; // 4 bytes
|
float rotation_ = 0.0f; // 4 bytes
|
||||||
float opacity_ = 1.0f; // 4 bytes
|
float opacity_ = 1.0f; // 4 bytes
|
||||||
|
|
||||||
// 10. 颜色属性
|
// 10. 颜色属性
|
||||||
Color3B color_ = Color3B(255, 255, 255); // 3 bytes
|
Color3B color_ = Color3B(255, 255, 255); // 3 bytes
|
||||||
|
|
||||||
// 11. 整数属性
|
// 11. 整数属性
|
||||||
int zOrder_ = 0; // 4 bytes
|
int zOrder_ = 0; // 4 bytes
|
||||||
int tag_ = -1; // 4 bytes
|
int tag_ = -1; // 4 bytes
|
||||||
|
|
||||||
// 12. 布尔属性
|
// 12. 布尔属性
|
||||||
bool flipX_ = false; // 1 byte
|
bool flipX_ = false; // 1 byte
|
||||||
bool flipY_ = false; // 1 byte
|
bool flipY_ = false; // 1 byte
|
||||||
|
|
||||||
// 11. 场景指针
|
// 11. 场景指针
|
||||||
Scene *scene_ = nullptr; // 8 bytes
|
Scene *scene_ = nullptr; // 8 bytes
|
||||||
|
|
||||||
// 12. 布尔标志(打包在一起)
|
// 12. 布尔标志(打包在一起)
|
||||||
mutable bool transformDirty_ = true; // 1 byte
|
mutable bool transformDirty_ = true; // 1 byte
|
||||||
mutable bool worldTransformDirty_ = true; // 1 byte
|
mutable bool worldTransformDirty_ = true; // 1 byte
|
||||||
bool childrenOrderDirty_ = false; // 1 byte
|
bool childrenOrderDirty_ = false; // 1 byte
|
||||||
bool visible_ = true; // 1 byte
|
bool visible_ = true; // 1 byte
|
||||||
bool running_ = false; // 1 byte
|
bool running_ = false; // 1 byte
|
||||||
bool spatialIndexed_ = true; // 1 byte
|
bool spatialIndexed_ = true; // 1 byte
|
||||||
// 填充 2 bytes 到 8 字节对齐
|
// 填充 2 bytes 到 8 字节对齐
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -202,7 +202,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
class Impl;
|
class Impl;
|
||||||
UniquePtr<Impl> impl_;
|
Unique<Impl> impl_;
|
||||||
std::string filename_;
|
std::string filename_;
|
||||||
std::string mountName_;
|
std::string mountName_;
|
||||||
UserId defaultUserId_;
|
UserId defaultUserId_;
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,11 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <extra2d/core/types.h>
|
|
||||||
#include <extra2d/core/string.h>
|
|
||||||
#include <extra2d/core/math_types.h>
|
#include <extra2d/core/math_types.h>
|
||||||
|
#include <extra2d/core/string.h>
|
||||||
|
#include <extra2d/core/types.h>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
|
||||||
|
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
|
|
||||||
namespace extra2d {
|
namespace extra2d {
|
||||||
|
|
@ -12,57 +13,57 @@ namespace extra2d {
|
||||||
class Input;
|
class Input;
|
||||||
|
|
||||||
struct WindowConfig {
|
struct WindowConfig {
|
||||||
std::string title = "Extra2D Application";
|
std::string title = "Extra2D Application";
|
||||||
int width = 1280;
|
int width = 1280;
|
||||||
int height = 720;
|
int height = 720;
|
||||||
bool fullscreen = true;
|
bool fullscreen = true;
|
||||||
bool resizable = false;
|
bool resizable = false;
|
||||||
bool vsync = true;
|
bool vsync = true;
|
||||||
int msaaSamples = 0;
|
int msaaSamples = 0;
|
||||||
bool centerWindow = true;
|
bool centerWindow = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Window {
|
class Window {
|
||||||
public:
|
public:
|
||||||
Window();
|
Window();
|
||||||
~Window();
|
~Window();
|
||||||
|
|
||||||
bool create(const WindowConfig& config);
|
bool create(const WindowConfig &config);
|
||||||
void destroy();
|
void destroy();
|
||||||
|
|
||||||
void pollEvents();
|
void pollEvents();
|
||||||
void swapBuffers();
|
void swapBuffers();
|
||||||
bool shouldClose() const;
|
bool shouldClose() const;
|
||||||
void setShouldClose(bool close);
|
void setShouldClose(bool close);
|
||||||
|
|
||||||
void setTitle(const std::string& title);
|
void setTitle(const std::string &title);
|
||||||
void setSize(int width, int height);
|
void setSize(int width, int height);
|
||||||
void setFullscreen(bool fullscreen);
|
void setFullscreen(bool fullscreen);
|
||||||
void setVSync(bool enabled);
|
void setVSync(bool enabled);
|
||||||
|
|
||||||
int getWidth() const { return width_; }
|
int getWidth() const { return width_; }
|
||||||
int getHeight() const { return height_; }
|
int getHeight() const { return height_; }
|
||||||
bool isFullscreen() const { return fullscreen_; }
|
bool isFullscreen() const { return fullscreen_; }
|
||||||
bool isVSync() const { return vsync_; }
|
bool isVSync() const { return vsync_; }
|
||||||
|
|
||||||
SDL_Window* getSDLWindow() const { return sdlWindow_; }
|
SDL_Window *getSDLWindow() const { return sdlWindow_; }
|
||||||
SDL_GLContext getGLContext() const { return glContext_; }
|
SDL_GLContext getGLContext() const { return glContext_; }
|
||||||
|
|
||||||
Input* getInput() const { return input_.get(); }
|
Input *getInput() const { return input_.get(); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SDL_Window* sdlWindow_;
|
SDL_Window *sdlWindow_;
|
||||||
SDL_GLContext glContext_;
|
SDL_GLContext glContext_;
|
||||||
|
|
||||||
int width_;
|
int width_;
|
||||||
int height_;
|
int height_;
|
||||||
bool vsync_;
|
bool vsync_;
|
||||||
bool shouldClose_;
|
bool shouldClose_;
|
||||||
bool fullscreen_;
|
bool fullscreen_;
|
||||||
UniquePtr<Input> input_;
|
Unique<Input> input_;
|
||||||
|
|
||||||
bool initSDL(const WindowConfig& config);
|
bool initSDL(const WindowConfig &config);
|
||||||
void deinitSDL();
|
void deinitSDL();
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace extra2d
|
} // namespace extra2d
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue