void Start()
    {
        tableReferencePoint = GameObject.FindGameObjectWithTag("tableReferencePoint").transform;
        tableNet            = GameObject.FindGameObjectWithTag("Net").transform;
        targetSign          = GameObject.FindGameObjectWithTag("targetSign").transform;
        launcher            = GameObject.FindGameObjectWithTag("ballLauncher").GetComponent <launchBalls>();

        source = GetComponent <AudioSource>();
        GetComponent <Rigidbody>().maxAngularVelocity = 500.0f;

        parameters = GameObject.Find("Parameters").GetComponent <Parameters>();

        // line renderer
        lineRender = GetComponent <LineRenderer>();
        lineRender.positionCount = 1;
        lineRender.SetPosition(0, transform.position);
        lineLastPos = transform.position;


        float r  = Random.Range(0.0f, 1.0f);
        float g  = Random.Range(0.0f, 1.0f);
        float b  = Random.Range(0.0f, 1.0f);
        Color c1 = Color.red;
        Color c2 = new Color(r, g, b, 1);

        lineRender.startColor     = c1;
        lineRender.endColor       = c2;
        lineRender.material.color = c2;

        launchingTime            = Time.time;
        launchingAngles          = gameObject.transform.rotation.eulerAngles;
        launchingPosition        = gameObject.transform.position;
        launchingLinearVelocity  = gameObject.GetComponent <Rigidbody>().velocity;
        launchingAngularVelocity = gameObject.GetComponent <Rigidbody>().angularVelocity;
    }
    void Start()
    {
        ballBody            = GetComponent <Rigidbody>();
        tableBody           = GameObject.FindGameObjectWithTag("table").GetComponent <Rigidbody>();
        source              = GetComponent <AudioSource>();
        launcher            = GameObject.FindGameObjectWithTag("ballLauncher").GetComponent <launchBalls>();
        targetSign          = GameObject.FindGameObjectWithTag("targetSign").transform;
        source              = GetComponent <AudioSource>();
        parameters          = GameObject.Find("Parameters").GetComponent <Parameters>();
        tableReferencePoint = GameObject.FindGameObjectWithTag("tableReferencePoint").transform;

        // line renderer
        lineRender = GetComponent <LineRenderer>();
        lineRender.positionCount = 1;
        lineRender.SetPosition(0, transform.position);
        lineLastPos = transform.position;


        float r  = UnityEngine.Random.Range(0.0f, 1.0f);
        float g  = UnityEngine.Random.Range(0.0f, 1.0f);
        float b  = UnityEngine.Random.Range(0.0f, 1.0f);
        Color c1 = Color.red;
        Color c2 = new Color(r, g, b, 1);

        lineRender.startColor     = c1;
        lineRender.endColor       = c2;
        lineRender.material.color = c2;
        //makeBall();
    }
    public void Start()
    {
        m_Scene            = SceneManager.GetActiveScene();
        kinectPositions    = new List <Vector3>();
        kinectOrientations = new List <Quaternion>();

        //ballDataWriter = new StreamWriter("Assets/BallAndPaddleData.csv", false);

        if (m_Scene.name == "PingpongScene")
        {
#if !UNITY_WSA
            StreamReader fileReader = new StreamReader("Assets/KinectPositions.csv");

            string   sPlayLine = fileReader.ReadLine();
            string[] myStrings = sPlayLine.Split(',');
            float    xpos      = float.Parse(myStrings[0]);
            float    ypos      = float.Parse(myStrings[1]);
            float    zpos      = float.Parse(myStrings[2]);
            float    xrot      = float.Parse(myStrings[3]);
            float    yrot      = float.Parse(myStrings[4]);
            float    zrot      = float.Parse(myStrings[5]);

            kinectAvatar.transform.position = new Vector3(xpos, ypos, zpos);
            kinectAvatar.transform.rotation = Quaternion.Euler(xrot, yrot, zrot);
#endif

            launcher   = GameObject.FindGameObjectWithTag("ballLauncher").GetComponent <launchBalls>();
            myAnimator = GetComponent <Animator>();
            velocitySliderValue.text        = velocitySlider.value.ToString("F4");
            angleVerticalSliderValue.text   = angleVerticalSlider.value.ToString("F4");
            angleHorizontalSliderValue.text = angleHorizontalSlider.value.ToString("F4");
            verticalSpinSliderValue.text    = verticalSpinSlider.value.ToString("F4");
            horizantalSpinSliderValue.text  = horizontalSpinSlider.value.ToString("F4");
            forwardSpinSliderValue.text     = forwardSpinSlider.value.ToString("F4");
            fireRateSliderValue.text        = fireRateSlider.value.ToString("F4");
            countDownValue.text             = "";
            trialCountValue.text            = "Trial Left: " + trialCount;

            totalTrialNumber = trialCount;

            if (physicsToggle.isOn)
            {
                angleVerticalSlider.interactable  = true;
                verticalSpinSlider.interactable   = true;
                horizontalSpinSlider.interactable = true;
            }
            else
            {
                angleVerticalSlider.interactable  = false;
                verticalSpinSlider.interactable   = false;
                horizontalSpinSlider.interactable = false;
            }

            VRcanvas = GameObject.Find("VRcanvas");


            try
            {
                trialInputFileStreamReader = new StreamReader("Assets/trial_inputs.csv", true);
                //skip first line. it's tab captions
                string reportCaptions = trialInputFileStreamReader.ReadLine();
                int    lineNumber     = 0;

                while (!trialInputFileStreamReader.EndOfStream)
                {
                    string line = trialInputFileStreamReader.ReadLine();
                    trialInputVariables[lineNumber] = new float[18];
                    trialInputVariables[lineNumber] = Array.ConvertAll(line.Split(','), float.Parse);
                    lineNumber++;
                }
                trialInputFileStreamReader.Close();
            }
            catch (IOException e)
            {
                print("File reading exception message: " + e.Message);
            }


            // setup default value
            velocityMin.text = velocitySlider.minValue.ToString();
            velocityMax.text = velocitySlider.maxValue.ToString();

            vAngleMin.text = angleVerticalSlider.minValue.ToString();
            vAngleMax.text = angleVerticalSlider.maxValue.ToString();

            hAngleMin.text = angleHorizontalSlider.minValue.ToString();
            hAngleMax.text = angleHorizontalSlider.maxValue.ToString();

            vSpinMin.text = verticalSpinSlider.minValue.ToString();
            vSpinMax.text = verticalSpinSlider.maxValue.ToString();

            //top and back spin is the same us horizontal spin
            tbSpinMin.text = horizontalSpinSlider.minValue.ToString();
            tbSpinMax.text = horizontalSpinSlider.maxValue.ToString();

            fSpinMin.text = forwardSpinSlider.minValue.ToString();
            fSpinMax.text = forwardSpinSlider.maxValue.ToString();

            foreHandTrial.text = backHandTrial.text = foreAndBackTrial.text = quadrantTrial.text = "0";
        }
    }