/// <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); }
/// <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); }