Config增加碰撞体可视化和默认碰撞体类型的配置

This commit is contained in:
Nomango 2018-07-05 00:35:12 +08:00
parent 5ccae4a308
commit 90d5196c4a
5 changed files with 91 additions and 62 deletions

View File

@ -5,6 +5,8 @@ e2d::Config::Config()
: _gameName()
, _nodeDefPivot()
, _collisionEnabled(false)
, _colliderVisiable(false)
, _nodeDefColliderType(Collider::Type::None)
{
}
@ -30,6 +32,16 @@ void e2d::Config::setNodeDefaultPivot(Point pivot)
);
}
void e2d::Config::setDefaultColliderType(Collider::Type type)
{
_nodeDefColliderType = type;
}
void e2d::Config::setColliderVisiable(bool visiable)
{
_colliderVisiable = visiable;
}
e2d::String e2d::Config::getGameName() const
{
return _gameName;
@ -44,3 +56,13 @@ e2d::Point e2d::Config::getNodeDefaultPivot() const
{
return _nodeDefPivot;
}
e2d::Collider::Type e2d::Config::getDefaultColliderType() const
{
return _nodeDefColliderType;
}
bool e2d::Config::isColliderVisiable() const
{
return _colliderVisiable;
}

View File

@ -4,7 +4,6 @@
e2d::Scene::Scene()
: _autoUpdate(true)
, _colliderVisiable(false)
, _root(nullptr)
{
_root = Create<Node>();
@ -27,7 +26,7 @@ void e2d::Scene::_render()
{
_root->_render();
if (_colliderVisiable)
if (Game::getInstance()->getConfig()->isColliderVisiable())
{
// 恢复矩阵转换
Renderer::getInstance()->getRenderTarget()->SetTransform(D2D1::Matrix3x2F::Identity());
@ -90,11 +89,6 @@ e2d::Node * e2d::Scene::getRoot() const
return _root;
}
void e2d::Scene::showCollider(bool visiable)
{
_colliderVisiable = visiable;
}
void e2d::Scene::onDestroy()
{
GC::release(_root);

View File

@ -3,7 +3,6 @@
#include "..\e2daction.h"
#include <algorithm>
static e2d::Collider::Type s_fDefaultColliderType = e2d::Collider::Type::None;
e2d::Node::Node()
: _nOrder(0)
@ -33,11 +32,13 @@ e2d::Node::Node()
, _positionFixed(false)
, _colliderType(Collider::Type::None)
{
Point defPivot = Game::getInstance()->getConfig()->getNodeDefaultPivot();
auto config = Game::getInstance()->getConfig();
// 设置默认中心点位置
Point defPivot = config->getNodeDefaultPivot();
this->_pivotX = float(defPivot.x);
this->_pivotY = float(defPivot.y);
this->setColliderType(s_fDefaultColliderType);
// 设置默认碰撞体类型
this->setColliderType(config->getDefaultColliderType());
}
e2d::Node::~Node()
@ -907,11 +908,6 @@ void e2d::Node::setAutoUpdate(bool bAutoUpdate)
_autoUpdate = bAutoUpdate;
}
void e2d::Node::setDefaultCollider(Collider::Type type)
{
s_fDefaultColliderType = type;
}
void e2d::Node::onDestroy()
{
ActionManager::__clearAllBindedWith(this);

View File

@ -468,46 +468,6 @@ private:
};
// 游戏配置
class Config :
public Object
{
public:
Config();
virtual ~Config();
// 修改游戏名称
void setGameName(
const String& name
);
// 打开或关闭碰撞监听(默认关闭)
void setCollisionEnabled(
bool enabled
);
// 设置节点的默认中心点位置
void setNodeDefaultPivot(
Point pivot
);
// 获取游戏名称
String getGameName() const;
// 获取碰撞监听状态
bool isCollisionEnabled() const;
// 获取节点的默认中心点位置
Point getNodeDefaultPivot() const;
protected:
String _gameName;
Point _nodeDefPivot;
bool _collisionEnabled;
};
// 图片
class Image :
public Object
@ -692,7 +652,6 @@ protected:
protected:
bool _autoUpdate;
bool _colliderVisiable;
Node * _root;
};
@ -786,6 +745,69 @@ protected:
};
// 游戏配置
class Config :
public Object
{
public:
Config();
virtual ~Config();
// 修改游戏名称
// 默认:空
void setGameName(
const String& name
);
// 打开或关闭碰撞监听
// 默认:关闭
void setCollisionEnabled(
bool enabled
);
// 设置节点的默认中心点位置
// 默认:(0,0)
void setNodeDefaultPivot(
Point pivot
);
// 设置节点的默认碰撞体类型
// 默认Collider::Type::None
void setDefaultColliderType(
Collider::Type type
);
// 打开或关闭碰撞体可视化
// 默认:关闭
void setColliderVisiable(
bool visiable
);
// 获取游戏名称
String getGameName() const;
// 获取碰撞监听状态
bool isCollisionEnabled() const;
// 获取节点的默认中心点位置
Point getNodeDefaultPivot() const;
// 获取节点的默认碰撞体类型
Collider::Type getDefaultColliderType() const;
// 获取碰撞体可视化状态
bool isColliderVisiable() const;
protected:
bool _collisionEnabled;
bool _colliderVisiable;
String _gameName;
Point _nodeDefPivot;
Collider::Type _nodeDefColliderType;
};
#if _MSC_VER > 1700
// 创建可自动回收内存的对象

View File

@ -377,11 +377,6 @@ public:
// 停止所有动作
virtual void stopAllActions();
// 设置节点的默认碰撞体类型(默认 None
static void setDefaultCollider(
Collider::Type type
);
// 销毁对象
virtual void onDestroy() override;