public void ThrowFrisbee(ThrowDataContainer moveData, bool isSpecial, float powerMult)
 {
     if (catchTransform != null)
     {
         lastThrownBy = catchTransform.transform.root.GetComponent <NPC>().dialogue.name;
         if (powerMult > 1)
         {
             speedMultiplier += powerMult;
         }
         else
         {
             speedMultiplier = powerMult;
         }
         speedMultiplier = Mathf.Min(speedMultiplier, 2);
         if (moveData.macroName == "Super")
         {
             speedMultiplier = Mathf.Min(speedMultiplier, 1.3f);
         }
         lastSpeedMult      = powerMult;
         prevCatchTransform = catchTransform;
         catchTransform.transform.root.GetComponentInChildren <PlayerSoundManager>().PlaySound("SFX_InGame_DiscThrow");
         if (isSpecial && moveData.macroName == "Super")
         {
             CheckMyName(lastThrownBy, catchTransform.transform.root.gameObject);
         }
         catchTransform = null;
         timer          = Vector3.zero;
         inSpecial      = isSpecial;
         movementData   = moveData;
         useThrowData   = true;
         //Debug.Log("THROW");
     }
 }
 void Start()
 {
     rbSelf.velocity = -Vector3.right * 20;
     movementData    = null; useThrowData = false;
     //SET DEFAULT Y POSITION THAT SHOULD BE MAINTAINED WHILE IN THROWS//
     defaultY  = transform.position.y;
     lobHeight = transform.position.y + 6;
     //SET DEFAULT LOB INDICATOR SCALE//
     if (lobIndicator != null)
     {
         lobScale = lobIndicator.transform.localScale.magnitude;
     }
     //RANDOMLY TOSS TO ONE OF THE PLAYERS//
     if (Random.value > .5f)
     {
         score.returntoPlayer2();
     }
     else
     {
         score.returntoPlayer1();
     }
     //MAKE THIS AUDIO SOURCE AUDIBLE BUT STILL SPACIAL//
     pSM.asSelf.spatialBlend = .2f;
     pSM.asSelf.minDistance  = 25;
 }
 /// <summary>
 /// Clear current throw data.
 /// </summary>
 public void CancelMoveData()
 {
     timer              = Vector3.zero;
     movementData       = null;
     inSpecial          = false;
     useThrowData       = false;
     tempLob            = new Vector2(transform.position.x, transform.position.z);
     isLobbingToX       = -1;
     isLobbingToZ       = -1;
     transform.position = new Vector3(transform.position.x, defaultY, transform.position.z);
     zDirection         = 1;
 }
        public void LobFrisbee(Vector3 speed, int position, float powerMult, bool overrideCatchTransform = false)
        {
            if (catchTransform != null || overrideCatchTransform)
            {
                if (powerMult > 1)
                {
                    speedMultiplier = Mathf.Max(1, speedMultiplier + ((powerMult / speedMultiplier) * .45f));
                }
                else
                {
                    speedMultiplier = powerMult;
                }
                speedMultiplier = Mathf.Min(speedMultiplier, 2);
                lastSpeedMult   = powerMult;

                if (!overrideCatchTransform)
                {
                    lastThrownBy       = catchTransform.transform.root.GetComponent <NPC>().dialogue.name;
                    prevCatchTransform = catchTransform;
                    catchTransform     = null;
                }
                timer        = Vector3.zero;
                inSpecial    = false;
                movementData = null;
                useThrowData = false;

                if (position != -1)
                {
                    lobFrom      = transform.position;
                    isLobbingToX = position;
                    if (speed.z > 0)
                    {
                        isLobbingToZ = 1;
                    }
                    if (speed.z < 0)
                    {
                        isLobbingToZ = 0;
                    }
                }
                else
                {
                    isLobbingToX = -2;
                    isLobbingToZ = -2;
                    lobFrom      = Vector3.zero;
                }

                rbSelf.velocity = new Vector3(Mathf.Sign(speed.x) * Mathf.Min(Mathf.Abs(speed.x * Mathf.Max(1, speedMultiplier)), speedCap), 0, 0);
                //Debug.Log("LOB WITH"+rbSelf.velocity);
            }
        }