2017-10-12 23:34:13 +08:00
|
|
|
|
#include "..\ebase.h"
|
|
|
|
|
|
#include "..\enodes.h"
|
2017-10-26 17:17:30 +08:00
|
|
|
|
#include "..\emanagers.h"
|
2017-10-17 21:22:25 +08:00
|
|
|
|
#include "..\etools.h"
|
2017-10-26 17:17:30 +08:00
|
|
|
|
#include "..\eactions.h"
|
2017-10-14 18:43:32 +08:00
|
|
|
|
#include <algorithm>
|
2017-09-10 23:56:52 +08:00
|
|
|
|
|
2017-10-14 18:43:32 +08:00
|
|
|
|
e2d::EScene::EScene()
|
|
|
|
|
|
: m_bWillSave(true)
|
2018-02-03 22:04:43 +08:00
|
|
|
|
, m_bAutoUpdate(true)
|
2017-10-14 18:43:32 +08:00
|
|
|
|
, m_bSortNeeded(false)
|
2018-02-03 22:04:43 +08:00
|
|
|
|
, m_bShapeVisiable(false)
|
2017-10-19 13:06:14 +08:00
|
|
|
|
, m_pRoot(new ENode())
|
2017-10-14 18:43:32 +08:00
|
|
|
|
{
|
2017-10-31 17:19:13 +08:00
|
|
|
|
m_pRoot->retain();
|
2017-10-19 13:06:14 +08:00
|
|
|
|
m_pRoot->_onEnter();
|
|
|
|
|
|
m_pRoot->_setParentScene(this);
|
2017-11-09 18:22:41 +08:00
|
|
|
|
m_pRoot->setPivot(0, 0);
|
2018-01-30 16:45:38 +08:00
|
|
|
|
m_pRoot->_setSize(EWindow::getWidth(), EWindow::getHeight());
|
2017-10-14 18:43:32 +08:00
|
|
|
|
}
|
2017-09-10 23:56:52 +08:00
|
|
|
|
|
2017-10-12 23:34:13 +08:00
|
|
|
|
e2d::EScene::~EScene()
|
2017-09-10 23:56:52 +08:00
|
|
|
|
{
|
2017-10-31 17:19:13 +08:00
|
|
|
|
SafeRelease(&m_pRoot);
|
2017-09-10 23:56:52 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2017-12-08 15:37:52 +08:00
|
|
|
|
void e2d::EScene::_render()
|
2017-09-10 23:56:52 +08:00
|
|
|
|
{
|
2018-01-30 16:45:38 +08:00
|
|
|
|
m_pRoot->_render();
|
2017-10-29 23:48:32 +08:00
|
|
|
|
|
2018-02-03 22:04:43 +08:00
|
|
|
|
if (m_bShapeVisiable)
|
2017-10-29 23:48:32 +08:00
|
|
|
|
{
|
2017-12-16 15:49:48 +08:00
|
|
|
|
// <20>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
2018-01-30 16:45:38 +08:00
|
|
|
|
ERenderer::getRenderTarget()->SetTransform(D2D1::Matrix3x2F::Identity());
|
2017-12-16 15:49:48 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD>ͼ<EFBFBD><CDBC>
|
2018-02-03 22:04:43 +08:00
|
|
|
|
m_pRoot->_drawShape();
|
2017-10-29 23:48:32 +08:00
|
|
|
|
}
|
2017-09-10 23:56:52 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2018-01-30 16:45:38 +08:00
|
|
|
|
void e2d::EScene::_update()
|
|
|
|
|
|
{
|
|
|
|
|
|
// ִ<><D6B4> onUpdate <20><><EFBFBD><EFBFBD>
|
2018-02-03 22:04:43 +08:00
|
|
|
|
if (m_bAutoUpdate)
|
|
|
|
|
|
{
|
|
|
|
|
|
this->onUpdate();
|
|
|
|
|
|
}
|
2018-01-30 16:45:38 +08:00
|
|
|
|
// <20><><EFBFBD>¸<EFBFBD><C2B8>ڵ<EFBFBD>
|
|
|
|
|
|
m_pRoot->_update();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-02-03 22:04:43 +08:00
|
|
|
|
void e2d::EScene::setAutoUpdate(bool bAutoUpdate)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_bAutoUpdate = bAutoUpdate;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-14 18:43:32 +08:00
|
|
|
|
void e2d::EScene::add(ENode * child, int order /* = 0 */)
|
2017-09-10 23:56:52 +08:00
|
|
|
|
{
|
2017-10-19 13:06:14 +08:00
|
|
|
|
m_pRoot->addChild(child, order);
|
2017-09-10 23:56:52 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-31 17:19:13 +08:00
|
|
|
|
bool e2d::EScene::remove(ENode * child)
|
2017-09-10 23:56:52 +08:00
|
|
|
|
{
|
2017-10-31 17:19:13 +08:00
|
|
|
|
return m_pRoot->removeChild(child);
|
2017-10-17 21:22:25 +08:00
|
|
|
|
}
|
2017-09-10 23:56:52 +08:00
|
|
|
|
|
2017-10-20 00:59:26 +08:00
|
|
|
|
e2d::ENode * e2d::EScene::getRoot() const
|
|
|
|
|
|
{
|
|
|
|
|
|
return m_pRoot;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-02-03 22:04:43 +08:00
|
|
|
|
void e2d::EScene::setShapeVisiable(bool visiable)
|
2017-10-29 23:48:32 +08:00
|
|
|
|
{
|
2018-02-03 22:04:43 +08:00
|
|
|
|
m_bShapeVisiable = visiable;
|
2017-10-29 23:48:32 +08:00
|
|
|
|
}
|