Magic_Game/core/Common/Scene.cpp

96 lines
1.7 KiB
C++
Raw Normal View History

#include "..\ebase.h"
#include "..\enodes.h"
#include "..\emanagers.h"
2017-10-17 21:22:25 +08:00
#include "..\etools.h"
#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)
, m_bSortNeeded(false)
2017-10-29 23:48:32 +08:00
, m_bGeometryVisiable(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);
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
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
}
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
if (m_bGeometryVisiable)
{
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>
2017-10-29 23:48:32 +08:00
m_pRoot->_drawGeometry();
}
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>
this->onUpdate();
// <20><><EFBFBD>¸<EFBFBD><C2B8>ڵ<EFBFBD>
m_pRoot->_update();
}
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-31 17:19:13 +08:00
void e2d::EScene::remove(const EString &childName)
2017-10-17 21:22:25 +08:00
{
2017-10-31 17:19:13 +08:00
return m_pRoot->removeChild(childName);
2017-09-10 23:56:52 +08:00
}
2018-01-30 16:45:38 +08:00
std::vector<e2d::ENode*> e2d::EScene::getChildren()
{
2017-10-19 13:06:14 +08:00
return m_pRoot->m_vChildren;
}
2017-10-14 18:43:32 +08:00
size_t e2d::EScene::getChildrenCount() const
{
2017-10-19 13:06:14 +08:00
return m_pRoot->getChildrenCount();
2017-10-14 18:43:32 +08:00
}
2017-10-17 21:22:25 +08:00
e2d::ENode * e2d::EScene::getChild(const EString &childName)
2017-10-14 18:43:32 +08:00
{
2017-10-19 13:06:14 +08:00
return m_pRoot->getChild(childName);
2017-10-14 18:43:32 +08:00
}
e2d::ENode * e2d::EScene::getRoot() const
{
return m_pRoot;
}
void e2d::EScene::clearAllChildren()
2017-09-10 23:56:52 +08:00
{
2017-10-19 13:06:14 +08:00
m_pRoot->clearAllChildren();
2017-10-14 01:07:34 +08:00
}
void e2d::EScene::runAction(EAction * action)
{
this->m_pRoot->runAction(action);
2017-10-29 23:48:32 +08:00
}
void e2d::EScene::setGeometryVisiable(bool visiable)
{
m_bGeometryVisiable = visiable;
}