public virtual void tick(float deltaTime) { if (!PhotonNetwork.IsConnected || photonView.IsMine) { float travelDuration = Mathf.Max(minTravelDuration, m_travelDuration + m_additionalDuration); float delta = deltaTime / travelDuration; // Travel along our path, destroy ourselves once we reach the goal m_progress += delta; if (updatePositionAlongPath(m_progress)) { // Damage the player PlayerController.localPlayer.applyDamage(m_damage); AnalyticsHelpers.reportMonsterReachedGoal(this); // We destroy ourselves after tick has concluded MonsterManager.destroyMonster(this, false); } } else { // Mimics how PhotonTransformView works m_progress = Mathf.MoveTowards(m_progress, m_networkProgress, m_progressDelta * (1.0f / PhotonNetwork.SerializationRate)); updatePositionAlongPath(m_progress); } }