Esempio n. 1
0
    // Update is called once per frame
    void Update()
    {
        //Update the position of the protein
        center = Vector3.zero;
        for (int i = 0; i < my_babies.Count; ++i)
        {
            center += my_babies[i].transform.position;
        }
        center /= my_babies.Count;

        // Update the slider value if someone pressed an arrow key
        if (Input.GetKeyDown(KeyCode.LeftArrow))
        {
            slider.value -= 0.1f;
        }
        else if (Input.GetKeyDown(KeyCode.RightArrow))
        {
            slider.value += 0.1f;
        }

        //Calculate the rendering speed
        double adjustment = Mathf.Pow(10, slider.value) * frameDuration;

        //Debug.Log("Delay: " + currentEvent.getDelay () + "\nAdjustment: " + adjustment + "\nFrame Duration: " + frameDuration);

        //Render events depending on their delay and the slider position
        if (slider.value == -2)
        {
            //Stop the animation
            return;
        }
        else if (currentEvent.getDelay() < adjustment)
        {
            //Do the animation
            currentEvent.renderEvent(tm);
            currentEvent = tm.dequeueEvent();
        }
        else
        {
            //skip this frame
            currentEvent.setDelay(currentEvent.getDelay() - adjustment);
        }
    }