示例#1
0
 /// <summary>
 /// Handle received animation synchronization message.
 /// </summary>
 /// <param name="msg">The received synchronization message.</param>
 public void HandleAnimSynchronize(Messages.AnimSyncMessage msg)
 {
     if (animManager != null)
     {
         animManager.HandleAnimations(msg);
     }
 }
        /// <summary>
        /// Handles the Action Animations
        /// </summary>
        public void HandleAnimations(Messages.AnimSyncMessage msg)
        {
            isRunning = msg.isRunning;
            aimRot    = msg.aimRot;
            HandleCrouchStates(msg.crouchPosition);
            HandleDrinking(msg.drinkId);
            HandleSwearing(msg.swearId);

            foreach (AnimState state in states)
            {
                state.TryActivate(msg);
            }
        }
            public void TryActivate(Messages.AnimSyncMessage msg)
            {
                bool canActivate = CanActivate(msg);

                if (!isActive && canActivate)
                {
                    Activate();
                    isActive = true;
                }
                else if (isActive && !canActivate)
                {
                    Deactivate();
                    isActive = false;
                }
            }
 public override bool CanActivate(Messages.AnimSyncMessage msg)
 {
     return(GetHandState(msg.activeHandState) == HandStateId.Pushing);
 }
 public override bool CanActivate(Messages.AnimSyncMessage msg)
 {
     return(msg.isDrunk);
 }
 public override bool CanActivate(Messages.AnimSyncMessage msg)
 {
     return(!msg.isGrounded);
 }
 public virtual bool CanActivate(Messages.AnimSyncMessage msg)
 {
     // condition if this state can be activated (must also return true if state is active)
     return(false);
 }
示例#8
0
        /// <summary>
        /// Send anim sync to the server.
        /// </summary>
        /// <returns>true if sync message was sent false otherwise</returns>
        private bool SendAnimSync()
        {
            GamePlayer player = GameWorld.Instance.Player;

            if (player == null)
            {
                return(false);
            }

            GameObject playerObject = player.Object;

            if (playerObject == null)
            {
                return(false);
            }

            if (playerObject.GetComponentInChildren <CharacterMotor>() == null)
            {
                return(false);                // Player is dying!
            }
            Messages.AnimSyncMessage message = new Messages.AnimSyncMessage();

            message.isRunning = (Utils.GetPlaymakerScriptByName(playerObject, "Running")
                                 .Fsm.ActiveStateName == "Run");

            float leanRotation = Utils.GetPlaymakerScriptByName(playerObject, "Reach")
                                 .Fsm.GetFsmFloat("Position")
                                 .Value;

            if (leanRotation != 0.0f)
            {
                message.isLeaning = true;
            }
            else
            {
                message.isLeaning = false;
            }

            message.isGrounded =
                playerObject.GetComponentInChildren <CharacterMotor>().grounded;

            message.activeHandState = animManager.GetActiveHandState(playerObject);

            message.swearId = int.MaxValue;
            if (animManager.GetHandState(message.activeHandState) ==
                PlayerAnimManager.HandStateId.MiddleFingering)
            {
                message.swearId =
                    Utils.GetPlaymakerScriptByName(playerObject, "PlayerFunctions")
                    .Fsm.GetFsmInt("RandomInt")
                    .Value;
            }
            PlayMakerFSM speechFsm =
                Utils.GetPlaymakerScriptByName(playerObject, "Speech");

            if (speechFsm.ActiveStateName == "Swear")
            {
                message.swearId =
                    animManager.Swears_Offset + speechFsm.Fsm.GetFsmInt("RandomInt").Value;
            }
            else if (speechFsm.ActiveStateName == "Drunk speech")
            {
                message.swearId = animManager.DrunkSpeaking_Offset +
                                  speechFsm.Fsm.GetFsmInt("RandomInt").Value;
            }
            else if (speechFsm.ActiveStateName == "Yes gestures")
            {
                message.swearId =
                    animManager.Agreeing_Offset + speechFsm.Fsm.GetFsmInt("RandomInt").Value;
            }

            message.aimRot =
                playerObject.transform.FindChild("Pivot/AnimPivot/Camera/FPSCamera")
                .transform.rotation.eulerAngles.x;
            message.crouchPosition = Utils.GetPlaymakerScriptByName(playerObject, "Crouch")
                                     .Fsm.GetFsmFloat("Position")
                                     .Value;

            GameObject DrunkObject =
                playerObject.transform.FindChild("Pivot/AnimPivot/Camera/FPSCamera")
                .gameObject;
            float DrunkValue = Utils.GetPlaymakerScriptByName(DrunkObject, "Drunk Mode")
                               .Fsm.GetFsmFloat("DrunkYmax")
                               .Value;

            if (DrunkValue >= 4.5f)
            {
                message.isDrunk = true;
            }
            else
            {
                message.isDrunk = false;
            }

            if (!animManager.AreDrinksPreloaded())
            {
                animManager.PreloadDrinkObjects(playerObject);
            }
            message.drinkId = animManager.GetDrinkingObject(playerObject);

            if (!netManager.BroadcastMessage(
                    message, Steamworks.EP2PSend.k_EP2PSendUnreliable))
            {
                return(false);
            }

            return(true);
        }