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() : _gameName()
, _nodeDefPivot() , _nodeDefPivot()
, _collisionEnabled(false) , _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 e2d::String e2d::Config::getGameName() const
{ {
return _gameName; return _gameName;
@ -44,3 +56,13 @@ e2d::Point e2d::Config::getNodeDefaultPivot() const
{ {
return _nodeDefPivot; 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() e2d::Scene::Scene()
: _autoUpdate(true) : _autoUpdate(true)
, _colliderVisiable(false)
, _root(nullptr) , _root(nullptr)
{ {
_root = Create<Node>(); _root = Create<Node>();
@ -27,7 +26,7 @@ void e2d::Scene::_render()
{ {
_root->_render(); _root->_render();
if (_colliderVisiable) if (Game::getInstance()->getConfig()->isColliderVisiable())
{ {
// 恢复矩阵转换 // 恢复矩阵转换
Renderer::getInstance()->getRenderTarget()->SetTransform(D2D1::Matrix3x2F::Identity()); Renderer::getInstance()->getRenderTarget()->SetTransform(D2D1::Matrix3x2F::Identity());
@ -90,11 +89,6 @@ e2d::Node * e2d::Scene::getRoot() const
return _root; return _root;
} }
void e2d::Scene::showCollider(bool visiable)
{
_colliderVisiable = visiable;
}
void e2d::Scene::onDestroy() void e2d::Scene::onDestroy()
{ {
GC::release(_root); GC::release(_root);

View File

@ -3,7 +3,6 @@
#include "..\e2daction.h" #include "..\e2daction.h"
#include <algorithm> #include <algorithm>
static e2d::Collider::Type s_fDefaultColliderType = e2d::Collider::Type::None;
e2d::Node::Node() e2d::Node::Node()
: _nOrder(0) : _nOrder(0)
@ -33,11 +32,13 @@ e2d::Node::Node()
, _positionFixed(false) , _positionFixed(false)
, _colliderType(Collider::Type::None) , _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->_pivotX = float(defPivot.x);
this->_pivotY = float(defPivot.y); this->_pivotY = float(defPivot.y);
// 设置默认碰撞体类型
this->setColliderType(s_fDefaultColliderType); this->setColliderType(config->getDefaultColliderType());
} }
e2d::Node::~Node() e2d::Node::~Node()
@ -907,11 +908,6 @@ void e2d::Node::setAutoUpdate(bool bAutoUpdate)
_autoUpdate = bAutoUpdate; _autoUpdate = bAutoUpdate;
} }
void e2d::Node::setDefaultCollider(Collider::Type type)
{
s_fDefaultColliderType = type;
}
void e2d::Node::onDestroy() void e2d::Node::onDestroy()
{ {
ActionManager::__clearAllBindedWith(this); 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 : class Image :
public Object public Object
@ -692,7 +652,6 @@ protected:
protected: protected:
bool _autoUpdate; bool _autoUpdate;
bool _colliderVisiable;
Node * _root; 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 #if _MSC_VER > 1700
// 创建可自动回收内存的对象 // 创建可自动回收内存的对象

View File

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