性能优化

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) if (_config.isVSyncEnabled() || _frameInterval < interval)
{ {
_last += _frameInterval; _last = _now;
__update(); __update();
} }
else else

View File

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

View File

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

View File

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

View File

@ -408,33 +408,30 @@ protected:
E2D_DISABLE_COPY(Node); 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 Scene * scene
); );
// 子节点排序 // 子节点排序
void _sortChildren(); virtual void _sortChildren();
// 更新节点透明度 // 更新节点透明度
void _updateOpacity(); virtual void _updateOpacity();
// 提供给子类的更新函数
virtual void _fixedUpdate() {}
protected: protected:
String _name; String _name;
@ -821,15 +818,15 @@ protected:
// 按钮状态枚举 // 按钮状态枚举
enum class ButtonState { Normal, Mouseover, Selected }; enum class ButtonState { Normal, Mouseover, Selected };
// 更新节点
virtual void _update() override;
// 设置按钮状态 // 设置按钮状态
virtual void _setState(ButtonState state); virtual void _setState(ButtonState state);
// 刷新按钮显示 // 刷新按钮显示
virtual void _updateVisible(); virtual void _updateVisible();
// 更新按钮状态
virtual void _fixedUpdate() override;
// 执行按钮函数对象 // 执行按钮函数对象
virtual void _runCallback(); virtual void _runCallback();