Ejemplo n.º 1
0
        private bool onFriendLocationReceived(FriendsServiceEvents.FriendLocationInRoomReceived evt)
        {
            eventChannel.RemoveListener <FriendsServiceEvents.FriendLocationInRoomReceived>(onFriendLocationReceived);
            eventChannel.RemoveListener <FriendsServiceEvents.FriendNotInRoom>(onFriendNotInRoom);
            Vector3 location = evt.Location;

            if (!(Vector3.Distance(SceneRefs.ZoneLocalPlayerManager.LocalPlayerGameObject.transform.position, location) <= 3f))
            {
                LocomotionTracker       component = SceneRefs.ZoneLocalPlayerManager.LocalPlayerGameObject.GetComponent <LocomotionTracker>();
                GameObjectReferenceData component2;
                if (component.IsCurrentControllerOfType <SlideController>())
                {
                    component.SetCurrentController <RunController>();
                }
                else if (component.IsCurrentControllerOfType <SwimController>() && dataEntityCollection.TryGetComponent <GameObjectReferenceData>(Handle, out component2))
                {
                    LocomotionTracker component3 = component2.GameObject.GetComponent <LocomotionTracker>();
                    if (component3.IsCurrentControllerOfType <RunController>())
                    {
                        Animator component4 = SceneRefs.ZoneLocalPlayerManager.LocalPlayerGameObject.GetComponent <Animator>();
                        component4.SetTrigger(AnimationHashes.Params.SwimToWalk);
                        component.SetCurrentController <RunController>();
                    }
                }
                if (component.IsCurrentControllerOfType <RunController>())
                {
                    location.y += 0.5f;
                }
                SceneRefs.ZoneLocalPlayerManager.LocalPlayerGameObject.transform.position = location;
                ClubPenguin.Core.SceneRefs.Get <BaseCamera>().Snap();
                CoroutineRunner.Start(LocomotionUtils.nudgePlayer(component), component.gameObject, "MoveAfterJump");
            }
            destroyAndCloseCellPhone();
            return(false);
        }
Ejemplo n.º 2
0
 protected override void OnEnable()
 {
     if (IsEnabled)
     {
         actionTarget = GetTarget();
         tracker      = actionTarget.GetComponent <LocomotionTracker>();
         if (tracker.SetCurrentController <RunController>())
         {
             thisTransform    = actionTarget.transform;
             raycastLayerMask = LayerConstants.GetPlayerLayerCollisionMask();
             actorRadius      = 0f;
             actorHalfHeight  = 0.1f;
             CharacterController component = actionTarget.GetComponent <CharacterController>();
             if (component != null)
             {
                 actorRadius     = component.radius;
                 actorHalfHeight = component.height / 2f;
             }
             runController = actionTarget.GetComponent <RunController>();
             base.OnEnable();
             CoroutineRunner.Start(doMoveTo(), this, "doMoveTo");
         }
     }
     else
     {
         CoroutineRunner.Start(completeAfterFrame(), this, "completeAfterFrame");
     }
 }
    protected override void Update()
    {
        LocomotionTracker component = GetTarget().GetComponent <LocomotionTracker>();

        if (component == null)
        {
            Completed(null, conditionBranchValue: false);
        }
        else if (Sitting && component.IsCurrentControllerOfType <SitController>())
        {
            Completed();
        }
        else if (Tubing && component.IsCurrentControllerOfType <SlideController>())
        {
            Completed();
        }
        else if (Swimming && component.IsCurrentControllerOfType <SwimController>())
        {
            Completed();
        }
        else if (Running && component.IsCurrentControllerOfType <RunController>())
        {
            Completed();
        }
        else
        {
            Completed(null, conditionBranchValue: false);
        }
    }
Ejemplo n.º 4
0
        private void jumpToRestartLocation()
        {
            GameObject     localPlayerGameObject = SceneRefs.ZoneLocalPlayerManager.LocalPlayerGameObject;
            Vector3        raceRestartPosition   = tubeRaceDefinition.RaceRestartPosition;
            RaceController component             = localPlayerGameObject.GetComponent <RaceController>();

            if (component != null)
            {
                component.setControlsEnabled(enabled: true);
            }
            LocomotionTracker component2 = localPlayerGameObject.GetComponent <LocomotionTracker>();

            if (!component2.IsCurrentControllerOfType <RunController>())
            {
                component2.SetCurrentController <RunController>();
            }
            localPlayerGameObject.transform.position = raceRestartPosition;
            RaceGameController component3 = localPlayerGameObject.GetComponent <RaceGameController>();

            if (component3 != null)
            {
                component3.RemoveLocalPlayerRaceData();
                Object.Destroy(component3);
            }
            Service.Get <EventDispatcher>().DispatchEvent(new CinematographyEvents.CameraSnapLockEvent(snapPosition: false, snapAim: true));
            CoroutineRunner.Start(LocomotionUtils.nudgePlayer(component2), component2.gameObject, "MoveAfterJump");
        }
        protected override void Update()
        {
            LocomotionTracker component = GetTarget().GetComponent <LocomotionTracker>();

            if (component != null)
            {
                if (RunDelay > 0f)
                {
                    component.DisallowController <RunController>(RunDelay);
                }
                if (SwimDelay > 0f)
                {
                    component.DisallowController <SwimController>(SwimDelay);
                }
                if (SlideDelay > 0f)
                {
                    component.DisallowController <SlideController>(SlideDelay);
                }
                if (SitDelay > 0f)
                {
                    component.DisallowController <SitController>(SitDelay);
                }
            }
            Completed();
        }
Ejemplo n.º 6
0
 private void Awake()
 {
     anim = GetComponent <Animator>();
     locomotionEventBroadcaster = GetComponent <LocomotionEventBroadcaster>();
     locomotionEventBroadcaster.OnDoActionEvent += OnLocomotionBroadcasterDoAction;
     locomotionTracker    = GetComponent <LocomotionTracker>();
     propInteractionQueue = new List <PropInteractionRequest>();
 }
 public virtual void Awake()
 {
     dataEntityCollection         = Service.Get <CPDataEntityCollection>();
     locoEventBroadcaster         = GetComponent <LocomotionEventBroadcaster>();
     dispatcher                   = Service.Get <EventDispatcher>();
     interactRequest              = new ActionRequest(PenguinUserControl.DefaultActionRequestBufferTime);
     locomotionTracker            = GetComponent <LocomotionTracker>();
     currentActionGraphGameObject = null;
 }
Ejemplo n.º 8
0
    private void disableOtherLocomotionControllers()
    {
        LocomotionTracker component = Target.Value.gameObject.GetComponent <LocomotionTracker>();

        if (component != null)
        {
            component.DisallowController <SlideController>(2f);
        }
    }
Ejemplo n.º 9
0
        private void moveLocalPlayerToPosition(Vector3 position)
        {
            GameObject localPlayerGameObject = SceneRefs.ZoneLocalPlayerManager.LocalPlayerGameObject;

            localPlayerGameObject.transform.position = position + new Vector3(0f, 0.5f, 0f);
            LocomotionTracker component = localPlayerGameObject.GetComponent <LocomotionTracker>();

            CoroutineRunner.Start(LocomotionUtils.nudgePlayer(component), component.gameObject, "MoveAfterJump");
        }
 public void Awake()
 {
     agent   = GetComponent <NavMeshAgent>();
     tracker = GetComponent <LocomotionTracker>();
     agent.updatePosition = false;
     agent.updateRotation = false;
     tracker.SetCurrentController <RunController>();
     runController = GetComponent <RunController>();
     runController.Behaviour.SetStyle(LocoStyle);
 }
    public void ResetPlayer()
    {
        LocomotionTracker component = GetComponent <LocomotionTracker>();

        if (component != null)
        {
            component.SetCurrentController <RunController>();
        }
        base.transform.position = startingPosition;
        base.transform.rotation = startingRotation;
        Service.Get <EventDispatcher>().DispatchEvent(new OutOfBoundsWarperEvents.ResetPlayer(base.gameObject));
    }
 private void Awake()
 {
     if (base.gameObject.CompareTag("Player") && SurfaceSamplingData != null)
     {
         anim       = GetComponent <Animator>();
         tracker    = GetComponent <LocomotionTracker>();
         locoStatus = LocomotionStatus.Unknown;
         CoroutineRunner.Start(SampleSurface(), this, "SampleSurface");
     }
     else
     {
         base.enabled = false;
     }
 }
Ejemplo n.º 13
0
 private void Awake()
 {
     dataEntityCollection   = Service.Get <CPDataEntityCollection>();
     locomotionTracker      = GetComponent <LocomotionTracker>();
     locomotionStateSetter  = GetComponent <AvatarLocomotionStateSetter>();
     playerDataHandle       = GetComponent <AvatarDataHandle>();
     positionTimeline       = new PositionTimeline(MaxQueueTimeMS, WarningQueueTimeMS);
     remoteSnowballLauncher = GetComponent <RemotePenguinSnowballThrower>();
     timer        = new Stopwatch();
     eventChannel = new EventChannel(Service.Get <EventDispatcher>());
     eventChannel.AddListener <PlayerActionServiceEvents.LocomotionActionReceived>(onLocomotionAction);
     locomotionEventBroadcaster = GetComponent <LocomotionEventBroadcaster>();
     locomotionEventBroadcaster.OnControlsLocked   += onControlsLocked;
     locomotionEventBroadcaster.OnControlsUnLocked += onControlsUnLocked;
 }
Ejemplo n.º 14
0
 private void Start()
 {
     locomotionTracker          = GetComponent <LocomotionTracker>();
     locomotionEventBroadcaster = GetComponent <LocomotionEventBroadcaster>();
     locomotionEventBroadcaster.OnDoActionEvent += sendDoActionEvent;
     locomotionEventBroadcaster.OnLocomotionStateChangedEvent += sendLocomotionStateChangedEvent;
     locomotionEventBroadcaster.OnInteractionStartedEvent     += filterSendInteractionEvent;
     locomotionEventBroadcaster.OnSteerDirectionEvent         += onSteerDirectionChanged;
     locomotionEventBroadcaster.OnSteerRotationDirectionEvent += onSteerRotationDirectionChanged;
     locomotionEventBroadcaster.OnSteerRotationFlushEvent     += onSteerRotationFlush;
     locomotionEventBroadcaster.OnControllerChangedEvent      += onControllerChanged;
     locomotionEventBroadcaster.OnControlsLocked   += onControlsLocked;
     locomotionEventBroadcaster.OnControlsUnLocked += onControlsUnLocked;
     networkService = Service.Get <INetworkServicesManager>();
     Service.Get <EventDispatcher>().AddListener <WorldServiceEvents.SelfWillLeaveRoomEvent>(onUserLeaving);
     Service.Get <EventDispatcher>().AddListener <WorldServiceEvents.SelfRoomJoinedEvent>(onUserJoined);
 }
Ejemplo n.º 15
0
    private IEnumerator setPositionToSpawnPointWaitAFrame(SpawnPointSelector spawner)
    {
        base.transform.position = spawner.SelectSpawnPosition(CoordinateSpace.World);
        base.transform.rotation = spawner.SelectSpawnRotation(CoordinateSpace.World);
        yield return(null);

        LocomotionTracker tracker = ClubPenguin.SceneRefs.ZoneLocalPlayerManager.LocalPlayerGameObject.GetComponent <LocomotionTracker>();

        if (tracker != null)
        {
            tracker.SetCurrentController <RunController>();
        }
        base.transform.position = spawner.SelectSpawnPosition(CoordinateSpace.World);
        base.transform.rotation = spawner.SelectSpawnRotation(CoordinateSpace.World);
        yield return(null);

        LocomotionActionEvent movement = default(LocomotionActionEvent);

        movement.Type      = LocomotionAction.Move;
        movement.Position  = base.transform.position;
        movement.Direction = Vector3.zero;
        sendNetworkMessage(movement);
    }
Ejemplo n.º 16
0
    private void onViewReady(AvatarBaseAsync view)
    {
        if (locomotionData == null)
        {
            return;
        }
        LocomotionTracker component = GetComponent <LocomotionTracker>();

        switch (locomotionData.LocoState)
        {
        case LocomotionState.Slide:
            if (component.IsCurrentControllerOfType <SlideController>())
            {
                GetComponent <Animator>().SetBool(AnimationHashes.Params.Slide, value: true);
                GetComponent <Animator>().Play(AnimationHashes.States.Slide.Enter, 0);
            }
            else
            {
                component.SetCurrentController <SlideController>();
            }
            break;

        case LocomotionState.Sitting:
        {
            if (!component.IsCurrentControllerOfType <SitController>())
            {
                component.SetCurrentController <SitController>();
            }
            SitController sitController = component.GetCurrentController() as SitController;
            if (sitController != null)
            {
                sitController.RemoteSit(null);
            }
            break;
        }
        }
    }
    private bool isInteractingWithZiplineActionGraph(GameObject player)
    {
        if (player.IsDestroyed())
        {
            return(false);
        }
        LocomotionTracker component = player.GetComponent <LocomotionTracker>();

        if (component == null)
        {
            return(false);
        }
        if (component.IsCurrentControllerOfType <ZiplineController>())
        {
            return(true);
        }
        GameObject trigger = ClubPenguin.SceneRefs.ActionSequencer.GetTrigger(player);

        if (trigger == null)
        {
            return(false);
        }
        return(trigger.GetComponent <SetZiplineLocomotionAction>() != null);
    }
Ejemplo n.º 18
0
 protected override void awake()
 {
     tracker      = GetComponent <LocomotionTracker>();
     base.enabled = false;
 }
 protected override void Update()
 {
     if (keyFrames.Count > 1)
     {
         if (isWarpingToStart)
         {
             if (SnapToStart)
             {
                 vehicleTransform.position = keyFrames[0].pos;
                 isWarpingToStart          = false;
             }
             else
             {
                 Vector3 position   = vehicleTransform.position;
                 Vector3 rhs        = keyFrames[0].pos - position;
                 Vector3 normalized = rhs.normalized;
                 curWarpSpeed    += StartAccel * Time.deltaTime;
                 curWarpSpeed     = Mathf.Clamp(curWarpSpeed, 0f, TravelSpeed);
                 elapsedWarpTime += Time.deltaTime;
                 float   t = Mathf.Clamp01(elapsedWarpTime / timeToAlign);
                 Vector3 b = normalized * curWarpSpeed;
                 curVel = Vector3.Lerp(curVel, b, t);
                 Vector3 vector = position + curVel * Time.deltaTime;
                 vehicleTransform.position = vector;
                 Vector3 lhs          = keyFrames[0].pos - vector;
                 float   sqrMagnitude = lhs.sqrMagnitude;
                 if (sqrMagnitude < closeEnoughDistSq || Vector3.Dot(lhs, rhs) <= 0f)
                 {
                     isWarpingToStart = false;
                 }
             }
             if (!isWarpingToStart && TravelStartSpeed >= 0f)
             {
                 curWarpSpeed = TravelStartSpeed;
             }
             updateSeat();
         }
         else
         {
             elapsedTravelTime += Time.deltaTime;
             if (elapsedTravelTime >= TravelDelay)
             {
                 if (TravelAccelCurve.length > 1)
                 {
                     curWarpSpeed = TravelAccelCurve.Evaluate(elapsedTravelTime) * TravelSpeed;
                     curWarpSpeed = Mathf.Clamp(curWarpSpeed, minAccelCurveValue, TravelSpeed);
                 }
                 else
                 {
                     curWarpSpeed = TravelSpeed;
                 }
                 float   deltaDist = curWarpSpeed * Time.deltaTime;
                 Vector3 vector    = GetNextPos(deltaDist);
                 if (vector != vehicleTransform.position)
                 {
                     curVel = (vector - vehicleTransform.position) / Time.deltaTime;
                     vehicleTransform.position = vector;
                     updateSeat();
                 }
                 else
                 {
                     if (!string.IsNullOrEmpty(ExitAnimTrigger))
                     {
                         int trigger = Animator.StringToHash(ExitAnimTrigger);
                         anim.SetTrigger(trigger);
                     }
                     if (StopAtEndPoint)
                     {
                         vehicleTransform.position = vehicleStartPos;
                         vehicleTransform.rotation = vehicleStartRot;
                     }
                     else
                     {
                         vehicleTransform.position += curVel * Time.deltaTime;
                         updateSeat();
                         LocomotionTracker component = GetTarget().GetComponent <LocomotionTracker>();
                         if (component != null)
                         {
                             LocomotionController currentController = component.GetCurrentController();
                             if (currentController != null)
                             {
                                 currentController.SetForce(curVel);
                             }
                         }
                     }
                     Completed(curVel);
                 }
             }
         }
         if (!(elapsedTravelTime >= TravelDelay) || !(curVel.sqrMagnitude > 0f))
         {
             return;
         }
         Vector3 normalized2 = curVel.normalized;
         Vector3 upwards     = Vector3.up;
         if (!UseWorldUp)
         {
             if (!Is3DSpace)
             {
                 upwards = new Vector3(0f - normalized2.y, normalized2.x, 0f);
             }
             else
             {
                 Vector3 lhs2 = Vector3.Cross(normalized2, Vector3.up);
                 upwards = Vector3.Cross(lhs2, normalized2);
             }
         }
         Quaternion b2 = Quaternion.LookRotation(normalized2, upwards);
         vehicleTransform.rotation = Quaternion.Slerp(vehicleTransform.rotation, b2, TurnSmoothing * Time.deltaTime);
     }
     else
     {
         Completed(Vector3.zero);
     }
 }
Ejemplo n.º 20
0
    public void SpawnPlayer(SpawnPlayerParams spawnPlayerParams)
    {
        if (spawnPlayerParams.Zone != null || !string.IsNullOrEmpty(spawnPlayerParams.SceneName))
        {
            bool                  flag                  = false;
            PresenceData          component             = dataEntityCollection.GetComponent <PresenceData>(dataEntityCollection.LocalPlayerHandle);
            ZoneTransitionService zoneTransitionService = Service.Get <ZoneTransitionService>();
            if (spawnPlayerParams.Zone != null)
            {
                ZoneDefinition zoneBySceneName = zoneTransitionService.GetZoneBySceneName(component.Room);
                flag = (zoneBySceneName != null && string.Equals(spawnPlayerParams.Zone.ZoneName, zoneBySceneName.ZoneName));
            }
            else if (!string.IsNullOrEmpty(spawnPlayerParams.SceneName))
            {
                flag = ((!zoneTransitionService.IsInIgloo) ? string.Equals(component.Room, spawnPlayerParams.SceneName) : string.Equals(zoneTransitionService.CurrentZone.SceneName, spawnPlayerParams.SceneName));
            }
            if (!flag)
            {
                if (!dataEntityCollection.TryGetComponent(dataEntityCollection.LocalPlayerHandle, out SpawnData component2))
                {
                    component2 = dataEntityCollection.AddComponent <SpawnData>(dataEntityCollection.LocalPlayerHandle);
                }
                if (spawnPlayerParams.SpawnedAction != null)
                {
                    component2.SpawnedAction = spawnPlayerParams.SpawnedAction;
                }
                component2.Position      = spawnPlayerParams.Position;
                component2.Rotation      = spawnPlayerParams.Rotation;
                component2.PendingReward = spawnPlayerParams.PendingReward;
                if (spawnPlayerParams.Zone != null)
                {
                    zoneTransitionService.LoadZone(spawnPlayerParams.Zone, "Loading");
                }
                else
                {
                    zoneTransitionService.LoadZone(spawnPlayerParams.SceneName, "Loading");
                }
                return;
            }
        }
        if (spawnPlayerParams.PendingReward != null)
        {
            Service.Get <EventDispatcher>().DispatchEvent(new RewardServiceEvents.MyRewardEarned(RewardSource.QUICK_NOTIFICATION, "", spawnPlayerParams.PendingReward));
        }
        if (Vector3.Distance(base.transform.position, spawnPlayerParams.Position) <= 3f)
        {
            if (spawnPlayerParams.SpawnedAction != null)
            {
                executeSpawedAction(spawnPlayerParams.SpawnedAction);
            }
            return;
        }
        LocomotionTracker component3 = base.gameObject.GetComponent <LocomotionTracker>();

        if (component3.IsCurrentControllerOfType <SlideController>())
        {
            component3.SetCurrentController <RunController>();
        }
        else if (spawnPlayerParams.GetOutOfSwimming && component3.IsCurrentControllerOfType <SwimController>())
        {
            Animator component4 = base.gameObject.GetComponent <Animator>();
            component4.SetTrigger(AnimationHashes.Params.SwimToWalk);
            component3.SetCurrentController <RunController>();
        }
        Vector3 zero = Vector3.zero;

        if (spawnPlayerParams.NudgePlayer && component3.IsCurrentControllerOfType <RunController>())
        {
            zero.y = 0.5f;
        }
        base.transform.position = spawnPlayerParams.Position + zero;
        ClubPenguin.Core.SceneRefs.Get <BaseCamera>().Snap();
        if (spawnPlayerParams.NudgePlayer)
        {
            actionOnSpawned = spawnPlayerParams.SpawnedAction;
            CoroutineRunner.Start(LocomotionUtils.nudgePlayer(component3, onNudgePlayerDone), component3.gameObject, "MoveAfterJump");
        }
        else if (spawnPlayerParams.SpawnedAction != null)
        {
            executeSpawedAction(spawnPlayerParams.SpawnedAction);
        }
    }
 private void Awake()
 {
     locomotionTracker = GetComponent <LocomotionTracker>();
 }
 protected virtual void identifiedLocalPlayer(GameObject localPlayer)
 {
     locomotionTracker = localPlayer.GetComponent <LocomotionTracker>();
 }