Example #1
0
    /* sera appelée à chaque frame depuis Update()
     * y a t'il un évenement de la timeline à déclencher en fonction de la valeur actuelle du chrono ?
     */
    private void Piloter_Event_TL()
    {
        if (indexTimeLine >= maxIndexTimeLine)
        {
            return;                                    // partie non terminée (chrono en cours) mais plus d'événement à déclencher
        }
        //print("chrono " + chrono + " prochain event " + prochaine_cde_event.time_evt_TL);
        //print("'''''''''''''''''''''''''''''''''''''''indexTimeLine " + indexTimeLine + " maxIndexTimeLine " + maxIndexTimeLine);
        //if (maxIndexTimeLine >= 0) print("chrono " + chrono + " nbEvents : " + maxIndexTimeLine);
        while (chrono > prochaine_cde_event.time_evt_TL)
        {
            if (prochaine_cde_event.cdeEvt_TL == TypeCdeEvent.START)
            {
                prochaine_cde_event.evt_TL.start_TL_Event();
            }
            else
            {
                prochaine_cde_event.evt_TL.stop_TL_Event();
            }

            indexTimeLine++;
            if (indexTimeLine >= maxIndexTimeLine)
            {
                break;
            }
            prochaine_cde_event = TimeLine[indexTimeLine];
        }
    }
Example #2
0
    //*******************************************************************************************************//



    public void StartChrono()
    {
        chrono        = 0;
        ChronoDemarre = true;
        foreach (Interface_TL_Events evTL in p_Liste_TL_Events)
        {
            evTL.TL_ChronoDemarre();
        }
        indexTimeLine       = 0;
        prochaine_cde_event = TimeLine[0]; // à décommenter une fois la structure timeline créée
    }
Example #3
0
    /* sera appelée une seule fois avant le départ du jeu  depuis la méthode Configurer ()
     * y a t'il un évenement de la timeline à déclencher en fonction de la valeur actuelle du chrono  ?
     *
     *  la liste p_Liste_TL_Events  rescence tous les évenements de TL i.e. les scripts (ou instances de classes) réalisant l'interface Interface_TL_Events
     *
     *  il faut définir les commandes de démarrage et d'arrêt de ces scripts  puis les ordonnées en fonction du temps
     *
     *  il faut remplir la liste List<struct_evt_TL> TimeLine;  qui sera interprétée par Piloter_Event_TL() pendant l'exécution
     */
    private void ConstruireTimeLine()
    {
        /*******************  ! ! ! A FAIRE ! ! !   *******************************/
        struct_evt_TL __e;
        float         __time_debut_evt_TL;
        float         __period;

        if (TimeLine != null)
        {
            TimeLine.Clear();                   // vider la liste (si 2ème ou suivantes exécutions....
        }
        else
        {
            TimeLine = new List <struct_evt_TL>(); // 1ere exécution : instantiation
        }
        p_nb_TL_Events = 0;
        //pour chaque event de la liste d'event
        foreach (Interface_TL_Events __evTL in p_Liste_TL_Events)
        {
            __time_debut_evt_TL = __evTL.getStartTime_TL_Event();
            //si c'est periodique tu fait plein de fois
            while ((__time_debut_evt_TL < dureeMax) && (__time_debut_evt_TL < __evTL.getStopTime_TL_Event()))
            {
                // ajouter dans la timeline les ordres de début et de fin de l'évenement
                __e = new struct_evt_TL(__time_debut_evt_TL, TypeCdeEvent.START, __evTL);
                TimeLine.Add(__e);
                __e = new struct_evt_TL(__time_debut_evt_TL + __evTL.getDuration_TL_Event(), TypeCdeEvent.STOP, __evTL);
                TimeLine.Add(__e);

                if (__evTL.isPeriodic_TL_Event(out __period))
                {
                    __time_debut_evt_TL += __period;
                }
                else
                {
                    break;
                }
            }
        }
        maxIndexTimeLine = TimeLine.Count;

        print(maxIndexTimeLine + " evnt TL ont été ajoutés ");

        // TRIER !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        TimeLine.Sort(Compare_Struct_Evt_TL);
    }
Example #4
0
 // ci dessous sera utilisé pour trier la liste avec la méthode sort()
 static int Compare_Struct_Evt_TL(struct_evt_TL x, struct_evt_TL y)
 {
     return(((struct_evt_TL)x).time_evt_TL.CompareTo(((struct_evt_TL)y).time_evt_TL));
 }