diff --git a/core/Common/Config.cpp b/core/Common/Config.cpp index 63980ffc..72411c5b 100644 --- a/core/Common/Config.cpp +++ b/core/Common/Config.cpp @@ -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; +} diff --git a/core/Common/Scene.cpp b/core/Common/Scene.cpp index 6045ec2f..9148bff2 100644 --- a/core/Common/Scene.cpp +++ b/core/Common/Scene.cpp @@ -4,7 +4,6 @@ e2d::Scene::Scene() : _autoUpdate(true) - , _colliderVisiable(false) , _root(nullptr) { _root = Create(); @@ -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); diff --git a/core/Node/Node.cpp b/core/Node/Node.cpp index 1c874fb8..2ae071b0 100644 --- a/core/Node/Node.cpp +++ b/core/Node/Node.cpp @@ -3,7 +3,6 @@ #include "..\e2daction.h" #include -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); diff --git a/core/e2dcommon.h b/core/e2dcommon.h index 6cc7e97b..ddf16e87 100644 --- a/core/e2dcommon.h +++ b/core/e2dcommon.h @@ -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 // 创建可自动回收内存的对象 diff --git a/core/e2dnode.h b/core/e2dnode.h index 796eda61..1006ed7b 100644 --- a/core/e2dnode.h +++ b/core/e2dnode.h @@ -377,11 +377,6 @@ public: // 停止所有动作 virtual void stopAllActions(); - // 设置节点的默认碰撞体类型(默认 None) - static void setDefaultCollider( - Collider::Type type - ); - // 销毁对象 virtual void onDestroy() override;