Esempio n. 1
0
        // Start is called before the first frame update
        void Start()
        {
            TargetManager.Instance.OnConnection += () =>
            {
                PhotonNetwork.SetInterestGroups((byte)PhotonNetwork.LocalPlayer.ActorNumber, true);
            };

            Scaler = new GameObject("Scaler");
            Scaler.transform.parent        = transform;
            Scaler.transform.localPosition = Vector3.zero;
            Scaler.transform.localScale    = new Vector3(Scale, Scale, Scale);

            LostPlayer += (player) =>
            {
                var t        = Current.transform;
                var localPos = t.localPosition;
                t.parent        = MapTarget.Instance.Scaler.transform;
                t.localPosition = localPos;
                Current         = null;

                StartCoroutine(removeTreverisNextFrame());
                IEnumerator removeTreverisNextFrame()
                {
                    yield return(new WaitForEndOfFrame());

                    Treveris.RemoveTreveris();
                    _treveris = null;
                }
            };
        }
Esempio n. 2
0
        private IOutcome <string> DoExecute()
        {
            var unitSync    = new UnitSynchronizer();
            var unitOutcome = unitSync.Execute();

            if (unitOutcome.Failure)
            {
                return(Outcomes.Failure <string>()
                       .WithMessage("The swgoh.gg synchronizer failed while trying to retrieve units.")
                       .WithMessagesFrom(unitOutcome));
            }

            var playerSync    = new PlayerSynchronizer();
            var playerOutcome = playerSync.Execute();

            if (playerOutcome.Failure)
            {
                return(Outcomes.Failure <string>()
                       .WithMessage("The swgoh.gg synchronizer failed while trying to retrieve players.")
                       .WithMessagesFrom(playerOutcome));
            }

            var collectionSync    = new CollectionSynchronizer();
            var collectionOutcome = collectionSync.Execute();

            if (collectionOutcome.Failure)
            {
                return(Outcomes.Failure <string>()
                       .WithMessage("The swgoh.gg synchronizer failed while trying to retrieve collections.")
                       .WithMessagesFrom(collectionOutcome));
            }

            var modSync    = new ModSynchronizer();
            var modOutcome = modSync.Execute();

            if (modOutcome.Failure)
            {
                return(Outcomes.Failure <string>()
                       .WithMessage("The swgoh.gg synchronizer failed while trying to retrieve mods.")
                       .WithMessagesFrom(modOutcome));
            }

            return(Outcomes.Success <string>()
                   .WithMessage("Successfully ran the swgoh.gg synchronizer."));
        }
Esempio n. 3
0
        // Update is called once per frame
        void Update()
        {
            if (_prevStatus != _trackableBehaviour.CurrentStatus)
            {
                OnStatusChange.Invoke(_trackableBehaviour.CurrentStatus);
                _prevStatus = _trackableBehaviour.CurrentStatus;
            }

            if (_trackableBehaviour.CurrentStatus == TrackableBehaviour.Status.NO_POSE)
            {
                return;
            }

            if (Current == null && !_locked)
            {
                foreach (var synchronizer in MapTarget.Instance.GetComponentsInChildren <PlayerSynchronizer>())
                {
                    if (Vector3.Distance(transform.position, synchronizer.transform.position) < PickupDistance && MapTarget.Instance.GetComponent <TrackableBehaviour>().CurrentStatus != TrackableBehaviour.Status.NO_POSE && GetComponent <TrackableBehaviour>().CurrentStatus == TrackableBehaviour.Status.TRACKED)
                    {
                        Current = synchronizer;
                        StartCoroutine(AnimateTransition());
                    }
                }
            }

            if (Current != null && !_locked && ARUI.Instance.LockCam.isOn)
            {
                if (_treveris != null)
                {
                    var t             = _treveris.transform;
                    var localPosition = Current.transform.localPosition;
                    t.localPosition = t.localScale.x * -new Vector3(localPosition.x, 0, localPosition.z);
                }
            }


            if (_treveris != null && Current != null)
            {
                /*
                 * foreach (Transform child in _treveris.transform)
                 * {
                 *  if (Vector3.Distance(child.position, Current.transform.position) > ViewDistance)
                 *  {
                 *      foreach (var inChild in child.GetComponentsInChildren<Renderer>())
                 *      {
                 *          inChild.enabled = false;
                 *      }
                 *  }
                 * }
                 *
                 *
                 * foreach (var childRenderer in _treveris.GetComponentsInChildren<Renderer>())
                 * {
                 *
                 *  if (Vector3.Distance(childRenderer.bounds.ClosestPoint(Current.transform.position), Current.transform.position) > ViewDistance)
                 *  {
                 *      if (childRenderer.enabled)
                 *          childRenderer.enabled = false;
                 *  }
                 *  else
                 *  {
                 *      if (!childRenderer.enabled)
                 *          childRenderer.enabled = true;
                 *  }
                 * }
                 */
            }


            IEnumerator AnimateTransition()
            {
                _locked = true;

                var startingLocalPos = Current.transform.localPosition;

                _treveris = Treveris.GetTreverisByPlayer(Current.GetComponent <PhotonView>().Owner);
                Current.transform.parent = _treveris.transform;

                var elapsedTime   = 0f;
                var startingPos   = Current.transform.position;
                var startingScale = Current.transform.localScale;


                while (elapsedTime < TransitionTime)
                {
                    if (Current == null)
                    {
                        _locked = false;
                        yield break;
                    }

                    Current.transform.position   = Vector3.Lerp(startingPos, transform.position, (elapsedTime / TransitionTime));
                    Current.transform.localScale = Vector3.Lerp(startingScale, Vector3.one, (elapsedTime / TransitionTime));
                    elapsedTime += Time.deltaTime;
                    yield return(new WaitForEndOfFrame());
                }

                if (Current != null)
                {
                    Current.transform.localPosition = startingLocalPos;
                    Current.transform.localScale    = Vector3.one;
                    GotPlayer.Invoke(Current.gameObject);
                }

                _locked = false;
            }
        }