Files
Frostbite2D/Game/include/common/debug/GameDebugActor.h
Lenheart 808431f92c feat(动画): 添加角色动作合成纹理功能
实现角色动作的离屏渲染合成功能,支持获取合成纹理及其相关信息:
1. 新增CanvasActor用于离屏渲染
2. 新增RenderTexture封装FBO和纹理
3. 扩展Renderer支持离屏渲染到纹理
4. 为CharacterAnimation添加合成纹理生成逻辑
5. 在调试界面添加合成纹理预览功能
2026-04-07 06:17:49 +08:00

62 lines
1.6 KiB
C++

#pragma once
#include <frostbite2D/2d/actor.h>
#include <frostbite2D/2d/sprite.h>
namespace frostbite2D {
class CharacterObject;
class GameMap;
class NineSliceActor;
class Sprite;
class TextSprite;
/**
* @brief Reusable singleton debug actor for UI scenes.
*/
class GameDebugActor : public Actor {
public:
static GameDebugActor& get();
static Ptr<GameDebugActor> getPtr();
GameDebugActor(const GameDebugActor&) = delete;
GameDebugActor& operator=(const GameDebugActor&) = delete;
bool AttachToScene(Scene* scene);
bool AttachToParent(Actor* parent);
void DetachFromParent();
void SetDebugMap(GameMap* map);
void SetTrackedCharacter(CharacterObject* character);
void ClearDebugContext();
void OnUpdate(float deltaTime) override;
private:
void initOverlay();
void updateOverlay();
void updateMapDebugHighlight();
void updateCompositePreview();
Vec2 computeScreenMatchedPreviewSize(const Vec2& textureSize) const;
void updateCompositePreviewMarker(const Vec2& textureSize, const Vec2& previewSize,
const Vec2& originInTexture);
void setOverlayVisible(bool visible);
GameDebugActor();
~GameDebugActor() override = default;
GameMap* debugMap_ = nullptr;
CharacterObject* trackedCharacter_ = nullptr;
RefPtr<NineSliceActor> background_;
RefPtr<TextSprite> coordText_;
RefPtr<TextSprite> actionText_;
RefPtr<TextSprite> compositeText_;
RefPtr<Sprite> compositePreview_;
RefPtr<Actor> compositeOriginMarker_;
CharacterObject* previewCharacter_ = nullptr;
uint64 previewCompositeVersion_ = 0;
bool previewTextureAvailable_ = false;
};
} // namespace frostbite2D