性能优化

This commit is contained in:
Nomango 2018-07-26 21:43:47 +08:00
parent cc300aeb7c
commit 6c921079ac
5 changed files with 22 additions and 20 deletions

View File

@ -69,7 +69,7 @@ void e2d::Game::start()
if (_config.isVSyncEnabled() || _frameInterval < interval)
{
_last += _frameInterval;
_last = _now;
__update();
}
else

View File

@ -47,8 +47,7 @@ void e2d::CollisionManager::__updateCollider(Collider* collider)
{
if (Game::getInstance()->isPaused() ||
!Game::getInstance()->getConfig().isCollisionEnabled() ||
SceneManager::getInstance()->isTransitioning() ||
!collider->isCollisionNotify())
SceneManager::getInstance()->isTransitioning())
return;
for (size_t i = 0; i < _colliders.size(); i++)

View File

@ -175,8 +175,10 @@ void e2d::Button::setClickFunc(const Function& func)
_func = func;
}
void e2d::Button::_fixedUpdate()
void e2d::Button::_update()
{
Node::_update();
if (SceneManager::getInstance()->isTransitioning())
return;

View File

@ -122,14 +122,18 @@ void e2d::Node::_updateSelf()
if (_needTransform)
{
updateTransform();
if (_collider.isEnabled() &&
_collider.isCollisionNotify() &&
_collider.getShape() != Collider::Shape::None)
{
CollisionManager::getInstance()->__updateCollider(&_collider);
}
}
if (_autoUpdate && !Game::getInstance()->isPaused())
{
this->onUpdate();
}
this->_fixedUpdate();
}
void e2d::Node::_render()

View File

@ -408,33 +408,30 @@ protected:
E2D_DISABLE_COPY(Node);
// 更新节点
void _update();
virtual void _update();
// 更新自身
void _updateSelf();
virtual void _updateSelf();
// 渲染节点
void _render();
virtual void _render();
// 渲染节点轮廓
void _renderOutline();
virtual void _renderOutline();
// 渲染碰撞体轮廓
void _renderCollider();
virtual void _renderCollider();
// 设置节点所在场景
void _setParentScene(
virtual void _setParentScene(
Scene * scene
);
// 子节点排序
void _sortChildren();
virtual void _sortChildren();
// 更新节点透明度
void _updateOpacity();
// 提供给子类的更新函数
virtual void _fixedUpdate() {}
virtual void _updateOpacity();
protected:
String _name;
@ -821,15 +818,15 @@ protected:
// 按钮状态枚举
enum class ButtonState { Normal, Mouseover, Selected };
// 更新节点
virtual void _update() override;
// 设置按钮状态
virtual void _setState(ButtonState state);
// 刷新按钮显示
virtual void _updateVisible();
// 更新按钮状态
virtual void _fixedUpdate() override;
// 执行按钮函数对象
virtual void _runCallback();