easyx_framework V1.0.0
基于easyx的c++游戏框架
 
载入中...
搜索中...
未找到
Object类 参考

游戏对象基类. 更多...

#include <Object.h>

类 Object 继承关系图:
base Animated Controller RainProducer Sprite BattleController BaseBullet BasePlant BaseZomble Sun plateform sun Pea PeaShooter SunFlower NormalZomble

Public 成员函数

 Object ()
 只是一个场景根组件(带有场景属性),不需要遍历,所以不需要加入容器
 
 ~Object ()
 组件删除的控制权在对象中
 
virtual void Update (float deltaTime) override
 遍历运行每个组件
 
virtual void BeginPlay ()
 设置虚函数,把不能写在构造却需要优先实现的写在这
 
virtual void EndPlay ()
 设置虚函数,把不能写在析构却需要优先实现的写在这 例如delete this
 
void RegisterComponent (Component *pCom)
 在物体容器中注册组件.
 
void UnregisterComponent (Component *pCom)
 从物体组件容器中删除相应组件.
 
template<class T >
T * GetComponentByClass ()
 访问物体对象的跟他匹配的组件.
 
template<class T >
T * ConstructComponent ()
 创建组件,绑定到对象,并注册到对象容器.
 
void AttachTo (Object *par)
 设置所属物体 实现物体绑定.
 
void DetachForm (Object *par)
 解除所属物体 解除物体绑定.
 
void SetRootComponent (SceneComponent *newroot)
 设置场景根组件,物体以哪个组件场景属性作为自己的场景属性.
 
void Destroy ()
 用深度优先遍历进行遍历,借助栈来实现,实现物体及其所有绑定的物体类销毁
 
Vector2D GetLocalPosition () const
 获取物体相对坐标
 
float GetLocalRotation () const
 获取物体相对角度
 
Vector2D GetLocalScale () const
 获取物体相对缩放大小
 
Vector2D GetWorldPosition () const
 递归获取物体类的世界坐标
 
float GetWorldRotation () const
 递归获取物体类的世界旋转角度
 
Vector2D GetWorldScale () const
 递归获取物体类的世界缩放大小
 
void SetLocalPosition (const Vector2D &pos)
 设置物体相对坐标
 
void SetLocalRotation (float rot)
 设置物体相对角度
 
void SetLocalScale (const Vector2D &scale)
 设置物体相对缩放大小
 
void AddPosition (const Vector2D &pos)
 加上一个坐标
 
void AddRotation (float rot)
 加上一个角度
 
virtual void DrawDebugPosition () const
 调试 在画布上显示物体的坐标
 
- Public 成员函数 继承自 base
 base ()
 
virtual ~base ()
 
std::string GetName () const
 
void SetName (const std::string &name)
 

Protected 属性

SceneComponent *const root = new SceneComponent
 场景根组件,赋予场景属性 刚创建物体一定同时创建了它的场景组件,不允许改变指向
 

Private 属性

std::unordered_set< Object * > children
 孩子容器
 
Objectparent = nullptr
 实现物体之间的绑定 例如 有一个火焰粒子绑定在物体上实现一起移动实现特效
 
std::unordered_set< Component * > components
 容器存储指针其实是地址,指针无所谓存不存在,只要取出的地址给一个新的指针就行
 
std::unordered_set< Component * >::iterator components_iter
 控制组件的遍历和增删
 

详细描述

游戏对象基类.

构造及析构函数说明

◆ Object()

Object::Object ( )
inline

只是一个场景根组件(带有场景属性),不需要遍历,所以不需要加入容器

◆ ~Object()

Object::~Object ( )
inline

组件删除的控制权在对象中

成员函数说明

◆ AddPosition()

void Object::AddPosition ( const Vector2D & pos)
inline

加上一个坐标

◆ AddRotation()

void Object::AddRotation ( float rot)
inline

加上一个角度

◆ AttachTo()

void Object::AttachTo ( Object * par)

设置所属物体 实现物体绑定.

参数
[in]par父物体指针

◆ BeginPlay()

void Object::BeginPlay ( )
virtual

设置虚函数,把不能写在构造却需要优先实现的写在这

实现了 base.

BaseBullet, BasePlant, BaseZomble, Controller , 以及 Sprite 重载.

◆ ConstructComponent()

template<class T >
T * Object::ConstructComponent ( )
inline

创建组件,绑定到对象,并注册到对象容器.

模板函数<组件基类极其子类> 相当于工厂组装好的创建组件 !!!统一物体用这个创建组件

返回
成功返回相应组件指针 失败就nullptr

◆ Destroy()

void Object::Destroy ( )

用深度优先遍历进行遍历,借助栈来实现,实现物体及其所有绑定的物体类销毁

◆ DetachForm()

void Object::DetachForm ( Object * par)

解除所属物体 解除物体绑定.

!!!慎用

参数
[in]par父指针

◆ DrawDebugPosition()

void Object::DrawDebugPosition ( ) const
virtual

调试 在画布上显示物体的坐标

Controller 重载.

◆ EndPlay()

void Object::EndPlay ( )
virtual

设置虚函数,把不能写在析构却需要优先实现的写在这 例如delete this

实现了 base.

◆ GetComponentByClass()

template<class T >
T * Object::GetComponentByClass ( )
inline

访问物体对象的跟他匹配的组件.

模板函数<组件基类极其子类>

返回
找到的返回相应组件指针 没有就nullptr

◆ GetLocalPosition()

Vector2D Object::GetLocalPosition ( ) const
inline

获取物体相对坐标

◆ GetLocalRotation()

float Object::GetLocalRotation ( ) const
inline

获取物体相对角度

◆ GetLocalScale()

Vector2D Object::GetLocalScale ( ) const
inline

获取物体相对缩放大小

◆ GetWorldPosition()

Vector2D Object::GetWorldPosition ( ) const

递归获取物体类的世界坐标

◆ GetWorldRotation()

float Object::GetWorldRotation ( ) const

递归获取物体类的世界旋转角度

◆ GetWorldScale()

Vector2D Object::GetWorldScale ( ) const

递归获取物体类的世界缩放大小

◆ RegisterComponent()

void Object::RegisterComponent ( Component * pCom)
inline

在物体容器中注册组件.

备注
!!!用户慎用
参数
[in]

组件指针(组件基类极其子类)

◆ SetLocalPosition()

void Object::SetLocalPosition ( const Vector2D & pos)
inline

设置物体相对坐标

◆ SetLocalRotation()

void Object::SetLocalRotation ( float rot)
inline

设置物体相对角度

◆ SetLocalScale()

void Object::SetLocalScale ( const Vector2D & scale)
inline

设置物体相对缩放大小

◆ SetRootComponent()

void Object::SetRootComponent ( SceneComponent * newroot)

设置场景根组件,物体以哪个组件场景属性作为自己的场景属性.

参数
[in]newroot新的根组件

◆ UnregisterComponent()

void Object::UnregisterComponent ( Component * pCom)
inline

从物体组件容器中删除相应组件.

备注
!!!用户慎用
参数
[in]pCom组件指针(组件基类极其子类)

◆ Update()

virtual void Object::Update ( float deltaTime)
inlineoverridevirtual

遍历运行每个组件

重载 base .

BaseBullet, BaseZomble, BattleController, Controller, Pea, Sprite, Sun, sun , 以及 SunFlower 重载.

类成员变量说明

◆ children

std::unordered_set<Object*> Object::children
private

孩子容器

◆ components

std::unordered_set<Component*> Object::components
private

容器存储指针其实是地址,指针无所谓存不存在,只要取出的地址给一个新的指针就行

◆ components_iter

std::unordered_set<Component*>::iterator Object::components_iter
private

控制组件的遍历和增删

◆ parent

Object* Object::parent = nullptr
private

实现物体之间的绑定 例如 有一个火焰粒子绑定在物体上实现一起移动实现特效

◆ root

SceneComponent* const Object::root = new SceneComponent
protected

场景根组件,赋予场景属性 刚创建物体一定同时创建了它的场景组件,不允许改变指向