Collider碰撞体重做,所有的Collider合并为一个类,增加Collider::Type

This commit is contained in:
Nomango 2018-07-05 00:20:53 +08:00
parent bc4aa3eee5
commit 5ccae4a308
15 changed files with 233 additions and 480 deletions

View File

@ -1,63 +0,0 @@
#include "..\e2dcollider.h"
#include "..\e2dnode.h"
e2d::CircleCollider::CircleCollider()
{
}
e2d::CircleCollider::CircleCollider(Point center, double radius)
{
this->setCircle(center, radius);
}
e2d::CircleCollider::CircleCollider(Node * node)
{
double minSide = std::min(node->getRealWidth(), node->getRealHeight());
this->setCircle(
Point(
node->getRealWidth() / 2,
node->getRealHeight() / 2
),
minSide / 2
);
this->setAutoResize(true);
}
e2d::CircleCollider::~CircleCollider()
{
}
void e2d::CircleCollider::setCircle(Point center, double radius)
{
SafeRelease(_geometry);
ID2D1EllipseGeometry* circle = nullptr;
Renderer::getFactory()->CreateEllipseGeometry(
D2D1::Ellipse(
D2D1::Point2F(
float(center.x),
float(center.y)
),
float(radius),
float(radius)
),
&circle
);
_geometry = circle;
}
void e2d::CircleCollider::_resize()
{
if (_parentNode && _enabled)
{
double minSide = std::min(_parentNode->getRealWidth(), _parentNode->getRealHeight());
this->setCircle(
Point(
_parentNode->getRealWidth() / 2,
_parentNode->getRealHeight() / 2
),
minSide / 2
);
}
}

View File

@ -1,60 +0,0 @@
#include "..\e2dcollider.h"
#include "..\e2dnode.h"
e2d::EllipseCollider::EllipseCollider()
{
}
e2d::EllipseCollider::EllipseCollider(Point center, double radiusX, double radiusY)
{
this->setEllipse(center, radiusX, radiusY);
}
e2d::EllipseCollider::EllipseCollider(Node * node)
{
this->setEllipse(
Point(
node->getWidth() / 2,
node->getHeight() / 2
),
node->getWidth() / 2,
node->getHeight() / 2
);
this->setAutoResize(true);
}
e2d::EllipseCollider::~EllipseCollider()
{
}
void e2d::EllipseCollider::setEllipse(Point center, double radiusX, double radiusY)
{
SafeRelease(_geometry);
ID2D1EllipseGeometry* ellipse = nullptr;
Renderer::getFactory()->CreateEllipseGeometry(
D2D1::Ellipse(
D2D1::Point2F(
float(center.x),
float(center.y)),
float(radiusX),
float(radiusY)),
&ellipse
);
_geometry = ellipse;
}
void e2d::EllipseCollider::_resize()
{
if (_parentNode && _enabled)
{
this->setEllipse(
Point(
_parentNode->getWidth() / 2,
_parentNode->getHeight() / 2
),
_parentNode->getWidth() / 2,
_parentNode->getHeight() / 2
);
}
}

View File

@ -1,46 +0,0 @@
#include "..\e2dcollider.h"
#include "..\e2dnode.h"
e2d::RectCollider::RectCollider()
{
}
e2d::RectCollider::RectCollider(double x, double y, double width, double height)
{
this->setRect(x, y, x + width, y + height);
}
e2d::RectCollider::RectCollider(Node * node)
{
this->setRect(0, 0, node->getRealWidth(), node->getRealHeight());
this->setAutoResize(true);
}
e2d::RectCollider::~RectCollider()
{
}
void e2d::RectCollider::setRect(double left, double top, double right, double bottom)
{
SafeRelease(_geometry);
ID2D1RectangleGeometry* rectangle = nullptr;
Renderer::getFactory()->CreateRectangleGeometry(
D2D1::RectF(
float(left),
float(top),
float(right),
float(bottom)),
&rectangle
);
_geometry = rectangle;
}
void e2d::RectCollider::_resize()
{
if (_parentNode && _enabled)
{
this->setRect(0, 0, _parentNode->getRealWidth(), _parentNode->getRealHeight());
}
}

View File

@ -9,7 +9,7 @@ e2d::Collider::Collider()
, _transformed(nullptr) , _transformed(nullptr)
, _geometry(nullptr) , _geometry(nullptr)
, _enabled(true) , _enabled(true)
, _autoResize(false) , _type(Collider::Type::None)
{ {
} }
@ -29,6 +29,16 @@ e2d::Color e2d::Collider::getColor() const
return _color; return _color;
} }
ID2D1Geometry * e2d::Collider::getGeometry() const
{
return _geometry;
}
ID2D1TransformedGeometry * e2d::Collider::getTransformedGeometry() const
{
return _transformed;
}
void e2d::Collider::setEnabled(bool enabled) void e2d::Collider::setEnabled(bool enabled)
{ {
_enabled = enabled; _enabled = enabled;
@ -44,11 +54,6 @@ void e2d::Collider::setColor(Color color)
_color = color; _color = color;
} }
void e2d::Collider::setAutoResize(bool enabled)
{
_autoResize = enabled;
}
void e2d::Collider::_render() void e2d::Collider::_render()
{ {
if (_transformed && _enabled) if (_transformed && _enabled)
@ -83,29 +88,90 @@ e2d::Collider::Relation e2d::Collider::getRelationWith(Collider * pCollider) con
return Relation::Unknown; return Relation::Unknown;
} }
void e2d::Collider::_transform() void e2d::Collider::_recreate(Collider::Type type)
{ {
if (_parentNode && _enabled && _geometry) _type = type;
{
if (_autoResize)
{
this->_resize();
}
// 释放原碰撞体 if (_parentNode)
{
SafeRelease(_geometry);
SafeRelease(_transformed); SafeRelease(_transformed);
// 根据父节点转换几何图形 switch (type)
{
case Type::Rect:
{
ID2D1RectangleGeometry* rectangle = nullptr;
Renderer::getFactory()->CreateRectangleGeometry(
D2D1::RectF(
0,
0,
float(_parentNode->getRealWidth()),
float(_parentNode->getRealHeight())),
&rectangle
);
_geometry = rectangle;
}
break;
case Type::Circle:
{
double minSide = std::min(_parentNode->getRealWidth(), _parentNode->getRealHeight());
ID2D1EllipseGeometry* circle = nullptr;
Renderer::getFactory()->CreateEllipseGeometry(
D2D1::Ellipse(
D2D1::Point2F(
float(_parentNode->getRealWidth() / 2),
float(_parentNode->getRealHeight() / 2)
),
float(minSide / 2),
float(minSide / 2)
),
&circle
);
_geometry = circle;
}
break;
case Type::Ellipse:
{
float halfWidth = float(_parentNode->getWidth() / 2),
halfHeight = float(_parentNode->getHeight() / 2);
ID2D1EllipseGeometry* ellipse = nullptr;
Renderer::getFactory()->CreateEllipseGeometry(
D2D1::Ellipse(
D2D1::Point2F(
halfWidth,
halfHeight),
halfWidth,
halfHeight),
&ellipse
);
_geometry = ellipse;
}
break;
default:
break;
}
}
}
void e2d::Collider::_transform()
{
if (_parentNode && _enabled)
{
// 重新生成碰撞体
_recreate(_type);
// 二维变换
Renderer::getFactory()->CreateTransformedGeometry( Renderer::getFactory()->CreateTransformedGeometry(
_geometry, _geometry,
_parentNode->_finalMatri, _parentNode->_finalMatri,
&_transformed &_transformed
); );
// 通知碰撞体管理器
ColliderManager::__updateCollider(this); ColliderManager::__updateCollider(this);
} }
else
{
SafeRelease(_transformed);
}
} }

View File

@ -54,11 +54,6 @@ void e2d::ColliderManager::__addCollider(Collider * pCollider)
{ {
if (pCollider) if (pCollider)
{ {
if (pCollider->_parentNode)
{
WARN("ColliderManager::__add Failed! The shape is already added.");
return;
}
pCollider->retain(); pCollider->retain();
s_vColliders.push_back(pCollider); s_vColliders.push_back(pCollider);
} }

View File

@ -31,15 +31,13 @@ e2d::Node::Node()
, _needTransform(false) , _needTransform(false)
, _autoUpdate(true) , _autoUpdate(true)
, _positionFixed(false) , _positionFixed(false)
, _colliderType(Collider::Type::None)
{ {
Point defPivot = Game::getInstance()->getConfig()->getNodeDefaultPivot(); Point defPivot = Game::getInstance()->getConfig()->getNodeDefaultPivot();
_pivotX = float(defPivot.x); this->_pivotX = float(defPivot.x);
_pivotY = float(defPivot.y); this->_pivotY = float(defPivot.y);
if (s_fDefaultColliderType != Collider::Type::None) this->setColliderType(s_fDefaultColliderType);
{
this->setCollider(s_fDefaultColliderType);
}
} }
e2d::Node::~Node() e2d::Node::~Node()
@ -189,7 +187,7 @@ void e2d::Node::_updateTransform()
_finalMatri = _finalMatri * _parent->_initialMatri; _finalMatri = _finalMatri * _parent->_initialMatri;
} }
// 绑定于自身的碰撞体也进行相应转换 // 重新生成碰撞体
if (_collider) if (_collider)
{ {
_collider->_transform(); _collider->_transform();
@ -539,55 +537,52 @@ void e2d::Node::setProperty(Property prop)
this->setSkew(prop.skewAngleX, prop.skewAngleY); this->setSkew(prop.skewAngleX, prop.skewAngleY);
} }
void e2d::Node::setCollider(Collider::Type type) void e2d::Node::setColliderType(Collider::Type type)
{ {
switch (type) if (_colliderType == type)
return;
_colliderType = type;
if (_collider)
{ {
case Collider::Type::Rect: switch (type)
{ {
this->setCollider(Create<RectCollider>(this)); case Collider::Type::Rect:
case Collider::Type::Circle:
case Collider::Type::Ellipse:
{
this->_collider->_recreate(type);
}
break; break;
}
case Collider::Type::Circle: default:
{ {
this->setCollider(Create<CircleCollider>(this)); // 删除碰撞体
ColliderManager::__removeCollider(_collider);
_collider = nullptr;
}
break; break;
} }
case Collider::Type::Ellipse:
{
this->setCollider(Create<EllipseCollider>(this));
break;
}
case Collider::Type::None:
{
this->setCollider(nullptr);
break;
}
default:
break;
}
}
void e2d::Node::setCollider(Collider * pCollider)
{
// 删除旧的碰撞体
ColliderManager::__removeCollider(_collider);
// 添加新的碰撞体
ColliderManager::__addCollider(pCollider);
if (pCollider)
{
// 双向绑定
this->_collider = pCollider;
pCollider->_parentNode = this;
} }
else else
{ {
this->_collider = nullptr; switch (type)
{
case Collider::Type::Rect:
case Collider::Type::Circle:
case Collider::Type::Ellipse:
{
this->_collider = Create<Collider>();
this->_collider->_parentNode = this;
this->_collider->_recreate(type);
// 添加新的碰撞体
ColliderManager::__addCollider(this->_collider);
}
break;
default:
break;
}
} }
} }
@ -813,9 +808,9 @@ bool e2d::Node::containsPoint(const Point& point) const
{ {
BOOL ret = 0; BOOL ret = 0;
// 如果存在碰撞体,用碰撞体判断 // 如果存在碰撞体,用碰撞体判断
if (_collider) if (_collider && _collider->getGeometry())
{ {
_collider->getD2dGeometry()->FillContainsPoint( _collider->getGeometry()->FillContainsPoint(
D2D1::Point2F( D2D1::Point2F(
float(point.x), float(point.x),
float(point.y)), float(point.y)),

View File

@ -122,184 +122,4 @@ private:
static void __clearListeners(); static void __clearListeners();
}; };
// 碰撞体
class Collider :
public Object
{
friend class ColliderManager;
friend class Node;
public:
// 碰撞体类别
enum class Type
{
None, /* 无 */
Rect, /* 矩形 */
Circle, /* 圆形 */
Ellipse /* 椭圆形 */
};
// 碰撞体交集关系
enum class Relation : int
{
Unknown = 0, /* 关系不确定 */
Disjoin = 1, /* 没有交集 */
IsContained = 2, /* 完全被包含 */
Contains = 3, /* 完全包含 */
Overlap = 4 /* 部分重叠 */
};
public:
Collider();
virtual ~Collider();
// 判断两碰撞体的交集关系
virtual Relation getRelationWith(
Collider * pCollider
) const;
// 获取父节点
Node * getParentNode() const;
// 获取绘制颜色
Color getColor() const;
// 启用或关闭该碰撞体
virtual void setEnabled(
bool enabled
);
// 设置碰撞体的可见性
void setVisiable(
bool bVisiable
);
// 设置绘制颜色
void setColor(
Color color
);
// 设置大小跟随
void setAutoResize(
bool enabled
);
protected:
// 转换碰撞体
virtual void _transform();
// 重设大小
virtual void _resize() = 0;
// 渲染碰撞体
virtual void _render();
protected:
bool _enabled;
bool _visiable;
bool _autoResize;
Color _color;
Node * _parentNode;
ID2D1Geometry* _geometry;
ID2D1TransformedGeometry* _transformed;
};
// 矩形碰撞体
class RectCollider :
public Collider
{
public:
RectCollider();
explicit RectCollider(
double x,
double y,
double width,
double height
);
explicit RectCollider(
Node * node
);
virtual ~RectCollider();
// 修改矩形碰撞体大小
void setRect(
double left,
double top,
double right,
double bottom
);
protected:
// 重设大小
virtual void _resize();
};
// 圆形碰撞体
class CircleCollider :
public Collider
{
public:
CircleCollider();
explicit CircleCollider(
Point center,
double radius
);
explicit CircleCollider(
Node * node
);
virtual ~CircleCollider();
// 修改圆形碰撞体大小
void setCircle(
Point center,
double radius
);
protected:
// 重设大小
virtual void _resize();
};
// 椭圆形碰撞体
class EllipseCollider :
public Collider
{
public:
EllipseCollider();
explicit EllipseCollider(
Point center,
double radiusX,
double radiusY
);
explicit EllipseCollider(
Node * node
);
virtual ~EllipseCollider();
// 修改椭圆碰撞体大小
void setEllipse(
Point center,
double radiusX,
double radiusY
);
protected:
// 重设大小
virtual void _resize();
};
} }

View File

@ -697,6 +697,95 @@ protected:
}; };
class ColliderManager;
// 碰撞体
class Collider :
public Object
{
friend class Node;
friend class ColliderManager;
public:
// 碰撞体类别
enum class Type
{
None, /* 无 */
Rect, /* 矩形 */
Circle, /* 圆形 */
Ellipse /* 椭圆形 */
};
// 碰撞体交集关系
enum class Relation : int
{
Unknown = 0, /* 关系不确定 */
Disjoin = 1, /* 没有交集 */
IsContained = 2, /* 完全被包含 */
Contains = 3, /* 完全包含 */
Overlap = 4 /* 部分重叠 */
};
public:
Collider();
virtual ~Collider();
// 启用或关闭该碰撞体
virtual void setEnabled(
bool enabled
);
// 设置碰撞体的可见性
void setVisiable(
bool bVisiable
);
// 设置绘制颜色
void setColor(
Color color
);
// 判断两碰撞体的交集关系
virtual Relation getRelationWith(
Collider * pCollider
) const;
// 获取父节点
Node * getParentNode() const;
// 获取绘制颜色
Color getColor() const;
// 获取 ID2D1Geometry* 对象
ID2D1Geometry* getGeometry() const;
// 获取 ID2D1TransformedGeometry* 对象
ID2D1TransformedGeometry* getTransformedGeometry() const;
protected:
// 重新生成
void _recreate(
Collider::Type type
);
// 二维变换
void _transform();
// 渲染碰撞体
void _render();
protected:
bool _enabled;
bool _visiable;
Color _color;
Node * _parentNode;
Type _type;
ID2D1Geometry* _geometry;
ID2D1TransformedGeometry* _transformed;
};
#if _MSC_VER > 1700 #if _MSC_VER > 1700
// 创建可自动回收内存的对象 // 创建可自动回收内存的对象

View File

@ -1,6 +1,5 @@
#pragma once #pragma once
#include "e2dbase.h" #include "e2dbase.h"
#include "e2dcollider.h"
namespace e2d namespace e2d
{ {
@ -8,7 +7,6 @@ namespace e2d
class Action; class Action;
class Transition; class Transition;
class ColliderManager;
class Node : class Node :
public Object public Object
@ -16,7 +14,6 @@ class Node :
friend class Scene; friend class Scene;
friend class Collider; friend class Collider;
friend class Transition; friend class Transition;
friend class ColliderManager;
public: public:
// 节点属性 // 节点属性
@ -334,16 +331,11 @@ public:
Property prop Property prop
); );
// ÉèÖÃÅöײÌå // ÉèÖÃÅöײÌåÀàÐÍ
virtual void setCollider( virtual void setColliderType(
Collider::Type type Collider::Type type
); );
// ÉèÖÃÅöײÌå
virtual void setCollider(
Collider * pCollider
);
// 添加子节点 // 添加子节点
virtual void addChild( virtual void addChild(
Node * child, Node * child,
@ -445,6 +437,7 @@ protected:
Collider * _collider; Collider * _collider;
Scene * _parentScene; Scene * _parentScene;
Node * _parent; Node * _parent;
Collider::Type _colliderType;
D2D1::Matrix3x2F _initialMatri; D2D1::Matrix3x2F _initialMatri;
D2D1::Matrix3x2F _finalMatri; D2D1::Matrix3x2F _finalMatri;
std::vector<Node*> _children; std::vector<Node*> _children;

View File

@ -58,11 +58,8 @@
<ClCompile Include="..\..\core\Base\Renderer.cpp" /> <ClCompile Include="..\..\core\Base\Renderer.cpp" />
<ClCompile Include="..\..\core\Base\Time.cpp" /> <ClCompile Include="..\..\core\Base\Time.cpp" />
<ClCompile Include="..\..\core\Base\Window.cpp" /> <ClCompile Include="..\..\core\Base\Window.cpp" />
<ClCompile Include="..\..\core\Collider\CircleCollider.cpp" />
<ClCompile Include="..\..\core\Collider\Collider.cpp" />
<ClCompile Include="..\..\core\Collider\Collision.cpp" /> <ClCompile Include="..\..\core\Collider\Collision.cpp" />
<ClCompile Include="..\..\core\Collider\EllipseCollider.cpp" /> <ClCompile Include="..\..\core\Common\Collider.cpp" />
<ClCompile Include="..\..\core\Collider\RectCollider.cpp" />
<ClCompile Include="..\..\core\Common\Color.cpp" /> <ClCompile Include="..\..\core\Common\Color.cpp" />
<ClCompile Include="..\..\core\Common\Config.cpp" /> <ClCompile Include="..\..\core\Common\Config.cpp" />
<ClCompile Include="..\..\core\Common\Font.cpp" /> <ClCompile Include="..\..\core\Common\Font.cpp" />

View File

@ -122,20 +122,11 @@
<ClCompile Include="..\..\core\Base\Window.cpp"> <ClCompile Include="..\..\core\Base\Window.cpp">
<Filter>Base</Filter> <Filter>Base</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\core\Collider\CircleCollider.cpp">
<Filter>Collider</Filter>
</ClCompile>
<ClCompile Include="..\..\core\Collider\Collider.cpp">
<Filter>Collider</Filter>
</ClCompile>
<ClCompile Include="..\..\core\Collider\Collision.cpp"> <ClCompile Include="..\..\core\Collider\Collision.cpp">
<Filter>Collider</Filter> <Filter>Collider</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\core\Collider\EllipseCollider.cpp"> <ClCompile Include="..\..\core\Common\Collider.cpp">
<Filter>Collider</Filter> <Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\core\Collider\RectCollider.cpp">
<Filter>Collider</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\core\Common\Color.cpp"> <ClCompile Include="..\..\core\Common\Color.cpp">
<Filter>Common</Filter> <Filter>Common</Filter>

View File

@ -202,11 +202,8 @@
<ClCompile Include="..\..\core\Base\Renderer.cpp" /> <ClCompile Include="..\..\core\Base\Renderer.cpp" />
<ClCompile Include="..\..\core\Base\Time.cpp" /> <ClCompile Include="..\..\core\Base\Time.cpp" />
<ClCompile Include="..\..\core\Base\Window.cpp" /> <ClCompile Include="..\..\core\Base\Window.cpp" />
<ClCompile Include="..\..\core\Collider\CircleCollider.cpp" />
<ClCompile Include="..\..\core\Collider\Collider.cpp" />
<ClCompile Include="..\..\core\Collider\Collision.cpp" /> <ClCompile Include="..\..\core\Collider\Collision.cpp" />
<ClCompile Include="..\..\core\Collider\EllipseCollider.cpp" /> <ClCompile Include="..\..\core\Common\Collider.cpp" />
<ClCompile Include="..\..\core\Collider\RectCollider.cpp" />
<ClCompile Include="..\..\core\Common\Color.cpp" /> <ClCompile Include="..\..\core\Common\Color.cpp" />
<ClCompile Include="..\..\core\Common\Config.cpp" /> <ClCompile Include="..\..\core\Common\Config.cpp" />
<ClCompile Include="..\..\core\Common\Font.cpp" /> <ClCompile Include="..\..\core\Common\Font.cpp" />

View File

@ -122,20 +122,11 @@
<ClCompile Include="..\..\core\Base\Window.cpp"> <ClCompile Include="..\..\core\Base\Window.cpp">
<Filter>Base</Filter> <Filter>Base</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\core\Collider\CircleCollider.cpp">
<Filter>Collider</Filter>
</ClCompile>
<ClCompile Include="..\..\core\Collider\Collider.cpp">
<Filter>Collider</Filter>
</ClCompile>
<ClCompile Include="..\..\core\Collider\Collision.cpp"> <ClCompile Include="..\..\core\Collider\Collision.cpp">
<Filter>Collider</Filter> <Filter>Collider</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\core\Collider\EllipseCollider.cpp"> <ClCompile Include="..\..\core\Common\Collider.cpp">
<Filter>Collider</Filter> <Filter>Common</Filter>
</ClCompile>
<ClCompile Include="..\..\core\Collider\RectCollider.cpp">
<Filter>Collider</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\core\Common\Color.cpp"> <ClCompile Include="..\..\core\Common\Color.cpp">
<Filter>Common</Filter> <Filter>Common</Filter>

View File

@ -221,11 +221,8 @@
<ClCompile Include="..\..\core\Base\Renderer.cpp" /> <ClCompile Include="..\..\core\Base\Renderer.cpp" />
<ClCompile Include="..\..\core\Base\Time.cpp" /> <ClCompile Include="..\..\core\Base\Time.cpp" />
<ClCompile Include="..\..\core\Base\Window.cpp" /> <ClCompile Include="..\..\core\Base\Window.cpp" />
<ClCompile Include="..\..\core\Collider\Collider.cpp" />
<ClCompile Include="..\..\core\Collider\CircleCollider.cpp" />
<ClCompile Include="..\..\core\Collider\EllipseCollider.cpp" />
<ClCompile Include="..\..\core\Collider\RectCollider.cpp" />
<ClCompile Include="..\..\core\Collider\Collision.cpp" /> <ClCompile Include="..\..\core\Collider\Collision.cpp" />
<ClCompile Include="..\..\core\Common\Collider.cpp" />
<ClCompile Include="..\..\core\Common\Color.cpp" /> <ClCompile Include="..\..\core\Common\Color.cpp" />
<ClCompile Include="..\..\core\Common\Config.cpp" /> <ClCompile Include="..\..\core\Common\Config.cpp" />
<ClCompile Include="..\..\core\Common\Font.cpp" /> <ClCompile Include="..\..\core\Common\Font.cpp" />

View File

@ -99,9 +99,6 @@
<ClCompile Include="..\..\core\Tool\Path.cpp"> <ClCompile Include="..\..\core\Tool\Path.cpp">
<Filter>Tool</Filter> <Filter>Tool</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\core\Collider\Collider.cpp">
<Filter>Collider</Filter>
</ClCompile>
<ClCompile Include="..\..\core\Manager\ColliderManager.cpp"> <ClCompile Include="..\..\core\Manager\ColliderManager.cpp">
<Filter>Manager</Filter> <Filter>Manager</Filter>
</ClCompile> </ClCompile>
@ -219,15 +216,6 @@
<ClCompile Include="..\..\core\Transition\MoveTransition.cpp"> <ClCompile Include="..\..\core\Transition\MoveTransition.cpp">
<Filter>Transition</Filter> <Filter>Transition</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\core\Collider\CircleCollider.cpp">
<Filter>Collider</Filter>
</ClCompile>
<ClCompile Include="..\..\core\Collider\EllipseCollider.cpp">
<Filter>Collider</Filter>
</ClCompile>
<ClCompile Include="..\..\core\Collider\RectCollider.cpp">
<Filter>Collider</Filter>
</ClCompile>
<ClCompile Include="..\..\core\Action\FiniteTimeAction.cpp"> <ClCompile Include="..\..\core\Action\FiniteTimeAction.cpp">
<Filter>Action</Filter> <Filter>Action</Filter>
</ClCompile> </ClCompile>
@ -246,6 +234,9 @@
<ClCompile Include="..\..\core\Common\Config.cpp"> <ClCompile Include="..\..\core\Common\Config.cpp">
<Filter>Common</Filter> <Filter>Common</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\core\Common\Collider.cpp">
<Filter>Common</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\core\easy2d.h" /> <ClInclude Include="..\..\core\easy2d.h" />