void AureolaSpell::update(const sf::Time& frameTime) { sf::Vector2f nextPosition; calculateNextPosition(frameTime, nextPosition); sf::Vector2f diff = nextPosition - getPosition(); // check collisions with main char if (m_ownerType != GameObjectType::_LevelMainCharacter && !m_isOwnerControlled) { checkCollisionsWithMainChar(getBoundingBox()); } // check collisions with enemies checkCollisionsWithEnemies(getBoundingBox()); MovableGameObject::update(frameTime); GameObject::updateTime(m_data.activeDuration, frameTime); // check collisions with owner if (m_isReturning && m_mob->getBoundingBox()->intersects(*getBoundingBox())) { m_mob->addHeal(getHeal()); setDisposed(); } if (m_data.activeDuration == sf::Time::Zero) { setDisposed(); } if (!m_isReturning) { m_rangeLeft -= norm(diff); if (m_rangeLeft <= 0.f) { m_isReturning = true; m_absVel = std::sqrt(getVelocity().x * getVelocity().x + getVelocity().y * getVelocity().y); } } else { setSpriteRotation(atan2(getVelocity().y, getVelocity().x)); } }
void UnstableTile::update(const sf::Time& frameTime) { if (m_state == GameObjectState::Crumbling) { updateTime(m_crumblingTime, frameTime); if (m_crumblingTime == sf::Time::Zero) { setDisposed(); } } else if (m_isCritical) { updateTime(m_criticalTime, frameTime); if (m_criticalTime == sf::Time::Zero) { m_isFalling = true; setState(GameObjectState::Idle); } } else if (m_isFalling) { setAcceleration(sf::Vector2f(0.f, GRAVITY_ACCELERATION)); sf::Vector2f nextPosition; calculateNextPosition(frameTime, nextPosition); checkCollisions(nextPosition); } MovableGameObject::update(frameTime); if (m_isCritical && !m_wasCritical) { m_criticalTime = CRITICAL_TIME; m_isCritical = false; setState(GameObjectState::Idle); } m_wasCritical = false; }
void MovableGameObject::update(const sf::Time& frameTime) { sf::Vector2f position; calculateNextPosition(frameTime, position); setPosition(position); calculateNextVelocity(frameTime, m_velocity); AnimatedGameObject::update(frameTime); }
void PlayerUpdater::operator()(osg::Node* node, osg::NodeVisitor* nv) { PlayerState *playerState = _player->getPlayerState(); osg::Vec3 newPosition = calculateNextPosition(playerState); _player->setPosition(newPosition); _player->setAngles(playerState->getAngleX(), playerState->getAngleY()); traverse(node, nv); }
void MovableGameObject::update(const sf::Time& frameTime) { sf::Vector2f position; calculateNextPosition(frameTime, position); setPosition(position); calculateNextVelocity(frameTime, m_velocity); AnimatedGameObject::update(frameTime); if (m_debugInfo) { m_debugInfo->setString("x: " + std::to_string(getPosition().x) + " y: " + std::to_string(getPosition().y)); m_debugInfo->setPosition(getPosition() + sf::Vector2f(0.f, -30.f)); } }
void ShiftableTile::update(const sf::Time& frameTime) { if (m_state == GameObjectState::Crumbling) { updateTime(m_crumblingTime, frameTime); if (m_crumblingTime == sf::Time::Zero) { setDisposed(); } MovableGameObject::update(frameTime); return; } setAcceleration(sf::Vector2f(m_pushAcceleration, GRAVITY_ACCELERATION)); sf::Vector2f nextPosition; calculateNextPosition(frameTime, nextPosition); checkCollisions(nextPosition); MovableGameObject::update(frameTime); m_pushAcceleration = 0.f; if (m_boundingBox.top + m_boundingBox.height > (m_level->getWorldRect().top + m_level->getWorldRect().height)) { setDisposed(); } }
void Prop::updatePosition() { calculateNextPosition(); mSprite->setPosition(*mPosition); }