update Shape
This commit is contained in:
parent
dee2010e7c
commit
486ca4f848
|
|
@ -1,12 +1,12 @@
|
||||||
#include "..\eactions.h"
|
#include "..\eactions.h"
|
||||||
|
|
||||||
e2d::ActionSequence::ActionSequence() :
|
e2d::ActionSequence::ActionSequence()
|
||||||
m_nActionIndex(0)
|
: m_nActionIndex(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
e2d::ActionSequence::ActionSequence(const std::initializer_list<Action*>& vActions) :
|
e2d::ActionSequence::ActionSequence(const std::initializer_list<Action*>& vActions)
|
||||||
m_nActionIndex(0)
|
: m_nActionIndex(0)
|
||||||
{
|
{
|
||||||
this->add(vActions);
|
this->add(vActions);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,15 @@ e2d::Animation::Animation(double interval)
|
||||||
}
|
}
|
||||||
|
|
||||||
e2d::Animation::Animation(const std::initializer_list<Image*>& vImages)
|
e2d::Animation::Animation(const std::initializer_list<Image*>& vImages)
|
||||||
|
: m_nFrameIndex(0)
|
||||||
|
, m_fInterval(1)
|
||||||
|
{
|
||||||
|
this->add(vImages);
|
||||||
|
}
|
||||||
|
|
||||||
|
e2d::Animation::Animation(double interval, const std::initializer_list<Image*>& vImages)
|
||||||
|
: m_nFrameIndex(0)
|
||||||
|
, m_fInterval(interval)
|
||||||
{
|
{
|
||||||
this->add(vImages);
|
this->add(vImages);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,14 @@ void e2d::Scene::add(Node * child, int order /* = 0 */)
|
||||||
m_pRoot->addChild(child, order);
|
m_pRoot->addChild(child, order);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void e2d::Scene::add(const std::initializer_list<Node*>& vNodes, int order)
|
||||||
|
{
|
||||||
|
for (const auto &node : vNodes)
|
||||||
|
{
|
||||||
|
this->add(node, order);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool e2d::Scene::remove(Node * child)
|
bool e2d::Scene::remove(Node * child)
|
||||||
{
|
{
|
||||||
return m_pRoot->removeChild(child);
|
return m_pRoot->removeChild(child);
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
#include "..\etools.h"
|
#include "..\etools.h"
|
||||||
|
|
||||||
// 形状集合
|
// 形状集合
|
||||||
static std::vector<e2d::Shape*> s_vShapes;
|
static std::vector<e2d::ShapeBase*> s_vShapes;
|
||||||
// 监听器容器
|
// 监听器容器
|
||||||
static std::vector<e2d::CollisionListener*> s_vListeners;
|
static std::vector<e2d::CollisionListener*> s_vListeners;
|
||||||
// 碰撞触发状态
|
// 碰撞触发状态
|
||||||
|
|
@ -40,7 +40,7 @@ void e2d::CollisionManager::__update()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::CollisionManager::__updateShape(e2d::Shape * pActiveShape)
|
void e2d::CollisionManager::__updateShape(e2d::ShapeBase * pActiveShape)
|
||||||
{
|
{
|
||||||
// 判断碰撞触发是否打开
|
// 判断碰撞触发是否打开
|
||||||
if (!s_bCollisionEnable)
|
if (!s_bCollisionEnable)
|
||||||
|
|
@ -206,17 +206,25 @@ std::vector<e2d::CollisionListener*> e2d::CollisionManager::getAll()
|
||||||
return s_vListeners;
|
return s_vListeners;
|
||||||
}
|
}
|
||||||
|
|
||||||
e2d::Node * e2d::CollisionManager::getNode1()
|
e2d::Node* e2d::CollisionManager::isCausedBy(Node * pNode)
|
||||||
{
|
{
|
||||||
return s_pActiveNode;
|
if (s_pActiveNode == pNode)
|
||||||
|
return s_pPassiveNode;
|
||||||
|
if (s_pPassiveNode == pNode)
|
||||||
|
return s_pActiveNode;
|
||||||
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
e2d::Node * e2d::CollisionManager::getNode2()
|
e2d::Node* e2d::CollisionManager::isCausedBy(String name)
|
||||||
{
|
{
|
||||||
return s_pPassiveNode;
|
if (s_pActiveNode->getName() == name)
|
||||||
|
return s_pActiveNode;
|
||||||
|
if (s_pPassiveNode->getName() == name)
|
||||||
|
return s_pPassiveNode;
|
||||||
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::CollisionManager::__addShape(Shape * pShape)
|
void e2d::CollisionManager::__addShape(ShapeBase * pShape)
|
||||||
{
|
{
|
||||||
if (pShape)
|
if (pShape)
|
||||||
{
|
{
|
||||||
|
|
@ -230,7 +238,7 @@ void e2d::CollisionManager::__addShape(Shape * pShape)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::CollisionManager::__removeShape(Shape * pShape)
|
void e2d::CollisionManager::__removeShape(ShapeBase * pShape)
|
||||||
{
|
{
|
||||||
if (pShape)
|
if (pShape)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -378,7 +378,7 @@ double e2d::Node::getOpacity() const
|
||||||
return m_fRealOpacity;
|
return m_fRealOpacity;
|
||||||
}
|
}
|
||||||
|
|
||||||
e2d::Shape * e2d::Node::getShape() const
|
e2d::ShapeBase * e2d::Node::getShape() const
|
||||||
{
|
{
|
||||||
return m_pShape;
|
return m_pShape;
|
||||||
}
|
}
|
||||||
|
|
@ -547,25 +547,25 @@ void e2d::Node::setSize(Size size)
|
||||||
this->setSize(size.width, size.height);
|
this->setSize(size.width, size.height);
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::Node::setShape(Shape::TYPE type)
|
void e2d::Node::setShape(Shape type)
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case Shape::TYPE::RECTANGLE:
|
case Shape::RECTANGLE:
|
||||||
{
|
{
|
||||||
auto rect = new ShapeRectangle(this);
|
auto rect = new ShapeRectangle(this);
|
||||||
this->setShape(rect);
|
this->setShape(rect);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case Shape::TYPE::CIRCLE:
|
case Shape::CIRCLE:
|
||||||
{
|
{
|
||||||
auto rect = new ShapeCircle(this);
|
auto rect = new ShapeCircle(this);
|
||||||
this->setShape(rect);
|
this->setShape(rect);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case Shape::TYPE::ELLIPSE:
|
case Shape::ELLIPSE:
|
||||||
{
|
{
|
||||||
auto rect = new ShapeEllipse(this);
|
auto rect = new ShapeEllipse(this);
|
||||||
this->setShape(rect);
|
this->setShape(rect);
|
||||||
|
|
@ -577,7 +577,7 @@ void e2d::Node::setShape(Shape::TYPE type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::Node::setShape(Shape * pShape)
|
void e2d::Node::setShape(ShapeBase * pShape)
|
||||||
{
|
{
|
||||||
// 删除旧的形状
|
// 删除旧的形状
|
||||||
CollisionManager::__removeShape(m_pShape);
|
CollisionManager::__removeShape(m_pShape);
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
#include "..\emanagers.h"
|
#include "..\emanagers.h"
|
||||||
#include "..\enodes.h"
|
#include "..\enodes.h"
|
||||||
|
|
||||||
e2d::Shape::Shape()
|
e2d::ShapeBase::ShapeBase()
|
||||||
: m_bIsVisiable(true)
|
: m_bIsVisiable(true)
|
||||||
, m_nColor(Color::RED)
|
, m_nColor(Color::RED)
|
||||||
, m_fOpacity(1)
|
, m_fOpacity(1)
|
||||||
|
|
@ -13,42 +13,42 @@ e2d::Shape::Shape()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
e2d::Shape::~Shape()
|
e2d::ShapeBase::~ShapeBase()
|
||||||
{
|
{
|
||||||
SafeReleaseInterface(&m_pTransformedShape);
|
SafeReleaseInterface(&m_pTransformedShape);
|
||||||
}
|
}
|
||||||
|
|
||||||
e2d::Node * e2d::Shape::getParentNode() const
|
e2d::Node * e2d::ShapeBase::getParentNode() const
|
||||||
{
|
{
|
||||||
return m_pParentNode;
|
return m_pParentNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::Shape::setEnable(bool bEnable)
|
void e2d::ShapeBase::setEnable(bool bEnable)
|
||||||
{
|
{
|
||||||
m_bEnable = bEnable;
|
m_bEnable = bEnable;
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::Shape::setVisiable(bool bVisiable)
|
void e2d::ShapeBase::setVisiable(bool bVisiable)
|
||||||
{
|
{
|
||||||
m_bIsVisiable = bVisiable;
|
m_bIsVisiable = bVisiable;
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::Shape::setColor(UINT32 color)
|
void e2d::ShapeBase::setColor(UINT32 color)
|
||||||
{
|
{
|
||||||
m_nColor = color;
|
m_nColor = color;
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::Shape::setOpacity(double opacity)
|
void e2d::ShapeBase::setOpacity(double opacity)
|
||||||
{
|
{
|
||||||
m_fOpacity = min(max(static_cast<float>(opacity), 0), 1);
|
m_fOpacity = min(max(static_cast<float>(opacity), 0), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::Shape::setAutoResize(bool bEnable)
|
void e2d::ShapeBase::setAutoResize(bool bEnable)
|
||||||
{
|
{
|
||||||
m_bAutoResize = bEnable;
|
m_bAutoResize = bEnable;
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::Shape::_render()
|
void e2d::ShapeBase::_render()
|
||||||
{
|
{
|
||||||
if (m_pTransformedShape && m_bEnable)
|
if (m_pTransformedShape && m_bEnable)
|
||||||
{
|
{
|
||||||
|
|
@ -65,7 +65,7 @@ void e2d::Shape::_render()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
e2d::Relation e2d::Shape::getRelationWith(Shape * pShape) const
|
e2d::Relation e2d::ShapeBase::getRelationWith(ShapeBase * pShape) const
|
||||||
{
|
{
|
||||||
if (m_pTransformedShape && pShape->m_pTransformedShape)
|
if (m_pTransformedShape && pShape->m_pTransformedShape)
|
||||||
{
|
{
|
||||||
|
|
@ -85,7 +85,7 @@ e2d::Relation e2d::Shape::getRelationWith(Shape * pShape) const
|
||||||
return Relation::UNKNOWN;
|
return Relation::UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::Shape::_transform()
|
void e2d::ShapeBase::_transform()
|
||||||
{
|
{
|
||||||
if (m_pParentNode && m_bEnable)
|
if (m_pParentNode && m_bEnable)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -517,7 +517,13 @@ public:
|
||||||
|
|
||||||
// ´´½¨Ö¡¶¯»
|
// ´´½¨Ö¡¶¯»
|
||||||
Animation(
|
Animation(
|
||||||
const std::initializer_list<Image*>& vImages
|
const std::initializer_list<Image*>& vImages /* 关键帧数组 */
|
||||||
|
);
|
||||||
|
|
||||||
|
// 创建特定帧间隔的帧动画
|
||||||
|
Animation(
|
||||||
|
double interval, /* 帧间隔(秒) */
|
||||||
|
const std::initializer_list<Image*>& vImages /* 关键帧数组 */
|
||||||
);
|
);
|
||||||
|
|
||||||
virtual ~Animation();
|
virtual ~Animation();
|
||||||
|
|
@ -763,12 +769,7 @@ namespace e2d
|
||||||
|
|
||||||
inline e2d::ActionSequence * e2d::action::Sequence(const std::initializer_list<Action*>& vActions)
|
inline e2d::ActionSequence * e2d::action::Sequence(const std::initializer_list<Action*>& vActions)
|
||||||
{
|
{
|
||||||
auto action = new (std::nothrow) ActionSequence();
|
return new (std::nothrow) ActionSequence(vActions);
|
||||||
if (action)
|
|
||||||
{
|
|
||||||
action->add(vActions);
|
|
||||||
}
|
|
||||||
return action;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline e2d::ActionDelay * e2d::action::Delay(double duration)
|
inline e2d::ActionDelay * e2d::action::Delay(double duration)
|
||||||
|
|
@ -783,12 +784,7 @@ namespace e2d
|
||||||
|
|
||||||
inline e2d::Animation * e2d::action::Animate(double interval, const std::initializer_list<Image*>& vFrames)
|
inline e2d::Animation * e2d::action::Animate(double interval, const std::initializer_list<Image*>& vFrames)
|
||||||
{
|
{
|
||||||
auto animation = new (std::nothrow) Animation(interval);
|
return new (std::nothrow) Animation(interval, vFrames);
|
||||||
if (animation)
|
|
||||||
{
|
|
||||||
animation->add(vFrames);
|
|
||||||
}
|
|
||||||
return animation;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline e2d::ActionFunc * e2d::action::Func(Function func)
|
inline e2d::ActionFunc * e2d::action::Func(Function func)
|
||||||
|
|
|
||||||
|
|
@ -372,6 +372,15 @@ enum class Relation : int
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// 形状类别
|
||||||
|
enum class Shape : int
|
||||||
|
{
|
||||||
|
RECTANGLE, /* 矩形 */
|
||||||
|
CIRCLE, /* 圆形 */
|
||||||
|
ELLIPSE /* 椭圆形 */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// 文本样式
|
// 文本样式
|
||||||
struct Font
|
struct Font
|
||||||
{
|
{
|
||||||
|
|
@ -545,8 +554,14 @@ public:
|
||||||
|
|
||||||
// 添加节点到场景
|
// 添加节点到场景
|
||||||
void add(
|
void add(
|
||||||
Node * child,
|
Node * child, /* 要添加的节点 */
|
||||||
int zOrder = 0
|
int zOrder = 0 /* 渲染顺序 */
|
||||||
|
);
|
||||||
|
|
||||||
|
// 添加节点到场景
|
||||||
|
virtual void add(
|
||||||
|
const std::initializer_list<Node*>& vNodes, /* 节点数组 */
|
||||||
|
int order = 0 /* 渲染顺序 */
|
||||||
);
|
);
|
||||||
|
|
||||||
// 删除子节点
|
// 删除子节点
|
||||||
|
|
@ -578,86 +593,6 @@ protected:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class CollisionManager;
|
|
||||||
|
|
||||||
// 形状
|
|
||||||
class Shape :
|
|
||||||
public Object
|
|
||||||
{
|
|
||||||
friend CollisionManager;
|
|
||||||
friend Node;
|
|
||||||
|
|
||||||
public:
|
|
||||||
// 形状类别
|
|
||||||
enum class TYPE : int
|
|
||||||
{
|
|
||||||
RECTANGLE, /* 矩形 */
|
|
||||||
CIRCLE, /* 圆形 */
|
|
||||||
ELLIPSE /* 椭圆形 */
|
|
||||||
};
|
|
||||||
|
|
||||||
public:
|
|
||||||
Shape();
|
|
||||||
|
|
||||||
virtual ~Shape();
|
|
||||||
|
|
||||||
// 判断两形状的交集关系
|
|
||||||
virtual Relation getRelationWith(
|
|
||||||
Shape * pShape
|
|
||||||
) const;
|
|
||||||
|
|
||||||
// 获取父节点
|
|
||||||
Node * getParentNode() const;
|
|
||||||
|
|
||||||
// 启用或关闭该形状
|
|
||||||
virtual void setEnable(
|
|
||||||
bool bEnable
|
|
||||||
);
|
|
||||||
|
|
||||||
// 设置形状的可见性
|
|
||||||
void setVisiable(
|
|
||||||
bool bVisiable
|
|
||||||
);
|
|
||||||
|
|
||||||
// 设置绘制颜色
|
|
||||||
void setColor(
|
|
||||||
UINT32 color
|
|
||||||
);
|
|
||||||
|
|
||||||
// 设置绘制透明度
|
|
||||||
void setOpacity(
|
|
||||||
double opacity
|
|
||||||
);
|
|
||||||
|
|
||||||
// 设置大小跟随
|
|
||||||
void setAutoResize(
|
|
||||||
bool bEnable
|
|
||||||
);
|
|
||||||
|
|
||||||
// 获取 ID2D1Geometry 对象
|
|
||||||
virtual ID2D1Geometry * getD2dGeometry() const = 0;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
// 转换形状
|
|
||||||
virtual void _transform();
|
|
||||||
|
|
||||||
// 重设大小
|
|
||||||
virtual void _resize() = 0;
|
|
||||||
|
|
||||||
// 渲染形状
|
|
||||||
virtual void _render();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
bool m_bEnable;
|
|
||||||
bool m_bIsVisiable;
|
|
||||||
bool m_bAutoResize;
|
|
||||||
UINT32 m_nColor;
|
|
||||||
float m_fOpacity;
|
|
||||||
Node * m_pParentNode;
|
|
||||||
ID2D1TransformedGeometry * m_pTransformedShape;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// String 类模板函数定义
|
// String 类模板函数定义
|
||||||
template<typename T>
|
template<typename T>
|
||||||
inline e2d::String e2d::String::toString(T value)
|
inline e2d::String e2d::String::toString(T value)
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ class Node;
|
||||||
class Timer;
|
class Timer;
|
||||||
class Action;
|
class Action;
|
||||||
class Music;
|
class Music;
|
||||||
|
class ShapeBase;
|
||||||
class Transition;
|
class Transition;
|
||||||
class InputListener;
|
class InputListener;
|
||||||
class CollisionListener;
|
class CollisionListener;
|
||||||
|
|
@ -354,7 +355,7 @@ private:
|
||||||
class CollisionManager
|
class CollisionManager
|
||||||
{
|
{
|
||||||
friend Node;
|
friend Node;
|
||||||
friend Shape;
|
friend ShapeBase;
|
||||||
friend CollisionListener;
|
friend CollisionListener;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
@ -401,11 +402,15 @@ public:
|
||||||
// 获取全部监听器
|
// 获取全部监听器
|
||||||
static std::vector<CollisionListener*> getAll();
|
static std::vector<CollisionListener*> getAll();
|
||||||
|
|
||||||
// 获取发生碰撞的节点 1
|
// 判断碰撞是否由该节点引发(如果是,返回与其相撞的节点指针,否则返回空)
|
||||||
static Node* getNode1();
|
static Node* isCausedBy(
|
||||||
|
Node * pNode
|
||||||
|
);
|
||||||
|
|
||||||
// 获取发生碰撞的节点 2
|
// 判断发生碰撞的节点名称是否相同(若相同返回其指针,否则返回空)
|
||||||
static Node* getNode2();
|
static Node* isCausedBy(
|
||||||
|
String name
|
||||||
|
);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// 添加碰撞监听
|
// 添加碰撞监听
|
||||||
|
|
@ -418,17 +423,17 @@ private:
|
||||||
|
|
||||||
// 更新形状
|
// 更新形状
|
||||||
static void __updateShape(
|
static void __updateShape(
|
||||||
Shape * pActiveShape
|
ShapeBase * pActiveShape
|
||||||
);
|
);
|
||||||
|
|
||||||
// 添加形状
|
// 添加形状
|
||||||
static void __addShape(
|
static void __addShape(
|
||||||
Shape * pShape
|
ShapeBase * pShape
|
||||||
);
|
);
|
||||||
|
|
||||||
// 删除已绑定的形状
|
// 删除已绑定的形状
|
||||||
static void __removeShape(
|
static void __removeShape(
|
||||||
Shape * pShape
|
ShapeBase * pShape
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,13 +7,14 @@ namespace e2d
|
||||||
|
|
||||||
class Action;
|
class Action;
|
||||||
class Transition;
|
class Transition;
|
||||||
|
class ShapeBase;
|
||||||
class CollisionManager;
|
class CollisionManager;
|
||||||
|
|
||||||
class Node :
|
class Node :
|
||||||
public Object
|
public Object
|
||||||
{
|
{
|
||||||
friend Scene;
|
friend Scene;
|
||||||
friend Shape;
|
friend ShapeBase;
|
||||||
friend Transition;
|
friend Transition;
|
||||||
friend CollisionManager;
|
friend CollisionManager;
|
||||||
|
|
||||||
|
|
@ -116,7 +117,7 @@ public:
|
||||||
virtual double getOpacity() const;
|
virtual double getOpacity() const;
|
||||||
|
|
||||||
// 获取节点形状
|
// 获取节点形状
|
||||||
virtual Shape * getShape() const;
|
virtual ShapeBase * getShape() const;
|
||||||
|
|
||||||
// 获取父节点
|
// 获取父节点
|
||||||
virtual Node * getParent() const;
|
virtual Node * getParent() const;
|
||||||
|
|
@ -312,12 +313,12 @@ public:
|
||||||
|
|
||||||
// 设置节点形状
|
// 设置节点形状
|
||||||
virtual void setShape(
|
virtual void setShape(
|
||||||
Shape::TYPE type
|
Shape type
|
||||||
);
|
);
|
||||||
|
|
||||||
// 设置节点形状
|
// 设置节点形状
|
||||||
virtual void setShape(
|
virtual void setShape(
|
||||||
Shape * pShape
|
ShapeBase * pShape
|
||||||
);
|
);
|
||||||
|
|
||||||
// 添加可碰撞节点的名称
|
// 添加可碰撞节点的名称
|
||||||
|
|
@ -455,7 +456,7 @@ protected:
|
||||||
bool m_bDisplayedInScene;
|
bool m_bDisplayedInScene;
|
||||||
bool m_bSortChildrenNeeded;
|
bool m_bSortChildrenNeeded;
|
||||||
bool m_bTransformNeeded;
|
bool m_bTransformNeeded;
|
||||||
Shape * m_pShape;
|
ShapeBase * m_pShape;
|
||||||
Scene * m_pParentScene;
|
Scene * m_pParentScene;
|
||||||
Node * m_pParent;
|
Node * m_pParent;
|
||||||
D2D1::Matrix3x2F m_MatriInitial;
|
D2D1::Matrix3x2F m_MatriInitial;
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,80 @@ namespace e2d
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
class CollisionManager;
|
||||||
|
|
||||||
|
// 形状
|
||||||
|
class ShapeBase :
|
||||||
|
public Object
|
||||||
|
{
|
||||||
|
friend CollisionManager;
|
||||||
|
friend Node;
|
||||||
|
|
||||||
|
public:
|
||||||
|
ShapeBase();
|
||||||
|
|
||||||
|
virtual ~ShapeBase();
|
||||||
|
|
||||||
|
// 判断两形状的交集关系
|
||||||
|
virtual Relation getRelationWith(
|
||||||
|
ShapeBase * pShape
|
||||||
|
) const;
|
||||||
|
|
||||||
|
// 获取父节点
|
||||||
|
Node * getParentNode() const;
|
||||||
|
|
||||||
|
// 启用或关闭该形状
|
||||||
|
virtual void setEnable(
|
||||||
|
bool bEnable
|
||||||
|
);
|
||||||
|
|
||||||
|
// 设置形状的可见性
|
||||||
|
void setVisiable(
|
||||||
|
bool bVisiable
|
||||||
|
);
|
||||||
|
|
||||||
|
// 设置绘制颜色
|
||||||
|
void setColor(
|
||||||
|
UINT32 color
|
||||||
|
);
|
||||||
|
|
||||||
|
// 设置绘制透明度
|
||||||
|
void setOpacity(
|
||||||
|
double opacity
|
||||||
|
);
|
||||||
|
|
||||||
|
// 设置大小跟随
|
||||||
|
void setAutoResize(
|
||||||
|
bool bEnable
|
||||||
|
);
|
||||||
|
|
||||||
|
// 获取 ID2D1Geometry 对象
|
||||||
|
virtual ID2D1Geometry * getD2dGeometry() const = 0;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// 转换形状
|
||||||
|
virtual void _transform();
|
||||||
|
|
||||||
|
// 重设大小
|
||||||
|
virtual void _resize() = 0;
|
||||||
|
|
||||||
|
// 渲染形状
|
||||||
|
virtual void _render();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool m_bEnable;
|
||||||
|
bool m_bIsVisiable;
|
||||||
|
bool m_bAutoResize;
|
||||||
|
UINT32 m_nColor;
|
||||||
|
float m_fOpacity;
|
||||||
|
Node * m_pParentNode;
|
||||||
|
ID2D1TransformedGeometry * m_pTransformedShape;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// 矩形
|
// 矩形
|
||||||
class ShapeRectangle :
|
class ShapeRectangle :
|
||||||
public Shape
|
public ShapeBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// 创建一个默认矩形
|
// 创建一个默认矩形
|
||||||
|
|
@ -51,7 +122,7 @@ protected:
|
||||||
|
|
||||||
// 圆形
|
// 圆形
|
||||||
class ShapeCircle :
|
class ShapeCircle :
|
||||||
public Shape
|
public ShapeBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// 创建一个默认圆形
|
// 创建一个默认圆形
|
||||||
|
|
@ -90,7 +161,7 @@ protected:
|
||||||
|
|
||||||
// 椭圆形
|
// 椭圆形
|
||||||
class ShapeEllipse :
|
class ShapeEllipse :
|
||||||
public Shape
|
public ShapeBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// 创建一个默认椭圆
|
// 创建一个默认椭圆
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ namespace e2d
|
||||||
class TimerManager;
|
class TimerManager;
|
||||||
class MusicManager;
|
class MusicManager;
|
||||||
class InputManager;
|
class InputManager;
|
||||||
|
class CollisionManager;
|
||||||
|
|
||||||
// 随机数产生器
|
// 随机数产生器
|
||||||
class Random
|
class Random
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue