修改OpenGl渲染底层之前

This commit is contained in:
2025-10-20 20:50:12 +08:00
parent 1b011b9b68
commit 2b888aae5b
61 changed files with 1609 additions and 680 deletions

View File

@@ -0,0 +1,39 @@
#include "Mon_Animation.h"
#include "Actor/Object/MonsterObject.h"
#include "Global/Global_Game.h"
void Mon_Animation::Init(MonsterObject *parent)
{
// 调用RenderBase类的初始化 才能挂上标签
RenderBase::Init();
parent->AddChild(this);
mon_parent = parent;
GlobalMonsterScript::MonsterConfig Config = Global_Game::GetInstance().GetMonsterInfo(mon_parent->Id);
// 遍历所有动作Ani路径
for (const auto &pair : Config.animationPath)
{
std::string ActionName = pair.first;
std::string Path = std::string(Config.folder + Tool_toLowerCase(pair.second));
RefPtr<Animation> Ani = new Animation(Path);
this->ActionAnis[ActionName] = Ani;
Ani->SetVisible(false);
this->AddChild(Ani);
}
// 默认动作
this->SetAction("waiting");
}
void Mon_Animation::SetAction(std::string actionName)
{
// 先将原动作的Ani设置为不可见
ActionAnis[CurrentActionTag]->Reset();
ActionAnis[CurrentActionTag]->SetVisible(false);
// 再将新动作的Ani设置为可见
ActionAnis[actionName]->SetVisible(true);
CurrentActionTag = actionName;
}

View File

@@ -0,0 +1,25 @@
#pragma once
#include "EngineFrame/Component/Animation.h"
#include <string>
#include <vector>
#include <unordered_map>
class MonsterObject;
class Mon_Animation : public RenderBase
{
// 动作动画集合
using ActionAniList = std::map<std::string, RefPtr<Animation>>;
private:
// 父对象
MonsterObject *mon_parent;
// 动作动画集合
ActionAniList ActionAnis;
// 当前动作Tag
std::string CurrentActionTag = "waiting";
public:
// 初始化时 只完成基础的职业皮肤设置
void Init(MonsterObject *parent);
// 设置动作
void SetAction(std::string actionName);
};