UI引擎开发系列(三) 场景视图控制

来源:互联网 发布:java三元运算符 编辑:程序博客网 时间:2024/06/06 15:54
1、首先创建场景
//场景类 需要继承CSingleScene,场景类有自己的事件处理等 class CViewControlScene : public CSingleScene,public CTSingleton<CViewControlScene>{public:CViewControlScene();//这两个方法会在每帧渲染的时候都被调用,调用顺序是先调用UpdateSingleScene,然后是2DScene。//可以在OnUpdate2DScene中绘制FPS帧率,这样不会被3D物体遮挡。void OnUpdateSingleScene();void OnUpdate2DScene();//这两个方法用于加载blender资源//直接解析一个blender文件,将blender所包含的物体、动画、图片等数据都加载到引擎//需要走一次完整的blender解析流程void LoadBlenderScene();//需要先将blender解析成xml文件包,以后每次用下面的接口把解析结果加载到引擎//这种方法不需要每次都解析blender文件,只是加载解析好的资源,所以加快了加载速度。void LoadBlenderSceneXML();//场景事件处理bool OnEvent(const SEvent& in_event);int GetSingleSceneType(){return 0;}//logic层创建void CreateLogicNode();//view创建void CreateView();//Node for Logicpublic://当前场景鼠标选中物体实例ISceneNode* m_MouseCollisionNode;private://单例实现CT_DECLARE_SINGLETON(CViewControlScene)};

2、创建主板块视图

#pragma once#include "Component/CTSingleton.h"#include "Component/CBaseView.h"#include "Component/CViewNodeGroup.h"#include "CUIViewNode.h"using namespace tcl;//Home viewclass CHomeView : public CViewNodeGroup,public CTSingleton<CHomeView>{public:CHomeView();//当某一个View获取focus时,执行onGetFocus,丢失focus时执行onLoseFocusvirtual void onGetFocus();virtual void onLoseFocus();private://主页面的页面切换动画CAnimationPlayer* m_pHomeAnmPlayer;//子view列表core::array<CUIViewNode*> m_ViewNodes;ISceneNode* m_pTitleFocus;ISceneNode* m_pTitle;ISceneNode* m_HomeParent;//单例实现CT_DECLARE_SINGLETON(CHomeView)};

3、视图的业务逻辑处理

#pragma once#include "Component/CBaseLogic.h"class CAnimationPlayer;//这个类负责主页面的逻辑处理class CHomeLogic : public CBaseLogic{public:CHomeLogic(CLogicTree* parent,u32 handle);~CHomeLogic();//事件处理函数virtual void processEvent(const SEvent & event);};



0 0
原创粉丝点击