实现角色动作的离屏渲染合成功能,支持获取合成纹理及其相关信息: 1. 新增CanvasActor用于离屏渲染 2. 新增RenderTexture封装FBO和纹理 3. 扩展Renderer支持离屏渲染到纹理 4. 为CharacterAnimation添加合成纹理生成逻辑 5. 在调试界面添加合成纹理预览功能
62 lines
1.6 KiB
C++
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
|