private void SetHandMovement(Animator animator, HandDirectionEnum direction, HandMovementEnum movement, Vector3 smoothPosDir, Vector3 smoothNegDir, float movementLoop, ref float transparency) { switch (movement) { case HandMovementEnum.Static: default: float staticLoopMulitiplier = StaticCurve.Evaluate(movementLoop); animator.SetFloat(ForwardParam, smoothPosDir.z * staticLoopMulitiplier * MovementScale); animator.SetFloat(BackParam, smoothNegDir.z * staticLoopMulitiplier * MovementScale); animator.SetFloat(LeftParam, smoothPosDir.x * staticLoopMulitiplier * MovementScale); animator.SetFloat(RightParam, smoothNegDir.x * staticLoopMulitiplier * MovementScale); animator.SetFloat(UpParam, smoothPosDir.y * staticLoopMulitiplier * MovementScale); animator.SetFloat(DownParam, smoothNegDir.y * staticLoopMulitiplier * MovementScale); break; case HandMovementEnum.PingPong: float pingPongMultiplier = PingPongCurve.Evaluate(movementLoop); animator.SetFloat(ForwardParam, smoothPosDir.z * pingPongMultiplier * MovementScale); animator.SetFloat(BackParam, smoothNegDir.z * pingPongMultiplier * MovementScale); animator.SetFloat(LeftParam, smoothPosDir.x * pingPongMultiplier * MovementScale); animator.SetFloat(RightParam, smoothNegDir.x * pingPongMultiplier * MovementScale); animator.SetFloat(UpParam, smoothPosDir.y * pingPongMultiplier * MovementScale); animator.SetFloat(DownParam, smoothNegDir.y * pingPongMultiplier * MovementScale); break; case HandMovementEnum.Directional: float directionalMultiplier = DirectionalCurve.Evaluate(movementLoop); animator.SetFloat(ForwardParam, smoothPosDir.z * directionalMultiplier * MovementScale); animator.SetFloat(BackParam, smoothNegDir.z * directionalMultiplier * MovementScale); animator.SetFloat(LeftParam, smoothPosDir.x * directionalMultiplier * MovementScale); animator.SetFloat(RightParam, smoothNegDir.x * directionalMultiplier * MovementScale); animator.SetFloat(UpParam, smoothPosDir.y * directionalMultiplier * MovementScale); animator.SetFloat(DownParam, smoothNegDir.y * directionalMultiplier * MovementScale); if (direction != HandDirectionEnum.None) { transparency *= DirectionalTransparencyCurve.Evaluate(movementLoop); } break; /*case HandMovementEnum.Random: * break;*/ } }
private void SetHandDirection(HandDirectionEnum direction, ref Vector3 smoothPosDir, ref Vector3 smoothNegDir, float dirChangeTime, bool visible) { // Breaking these up into 2 vectors to make later modifications easier // TODO make this a little less bloated Vector3 posDir = Vector3.zero; Vector3 negDir = Vector3.zero; if (visible) { if ((direction & HandDirectionEnum.Front) == HandDirectionEnum.Front) { posDir.z = 1; } if ((direction & HandDirectionEnum.Back) == HandDirectionEnum.Back) { negDir.z = 1; } if ((direction & HandDirectionEnum.Left) == HandDirectionEnum.Left) { posDir.x = 1; } if ((direction & HandDirectionEnum.Right) == HandDirectionEnum.Right) { negDir.x = 1; } if ((direction & HandDirectionEnum.Up) == HandDirectionEnum.Up) { posDir.y = 1; } if ((direction & HandDirectionEnum.Down) == HandDirectionEnum.Down) { negDir.y = 1; } } smoothPosDir = Vector3.Slerp(smoothPosDir, posDir, (Time.time - dirChangeTime) * DirAnimSpeed); smoothNegDir = Vector3.Slerp(smoothNegDir, negDir, (Time.time - dirChangeTime) * DirAnimSpeed); }