void setTime(string groupName, float randomVariation)
    {
        GameObject[]      grassGroup  = GameObject.FindGameObjectsWithTag(groupName);
        List <GameObject> sortedGroup = new List <GameObject>(grassGroup);

        sortedGroup.Sort((x, y) => y.transform.position.x.CompareTo(x.transform.position.x));

        int   groupSize = sortedGroup.Count;
        float change    = 1.0f / groupSize;

        int count = 0;

        foreach (GameObject grass in sortedGroup)
        {
            AnimationStart grassScript = grass.GetComponent <AnimationStart>();
            grassScript.startTime = Mathf.Repeat(change * count + Random.Range(-change * randomVariation, change * randomVariation), 1);

            count++;
        }
    }
 private void Start()
 {
     instance           = this;
     animation          = GetComponent <Animation>();
     animation.wrapMode = WrapMode.Once;
 }
Exemple #3
0
        /// <summary>
        ///		Ejecuta una serie de acciones
        /// </summary>
        internal void Execute(TimeLineModel timeLine)
        {
            // Crea el storyboard de las animaciones
            if (sbStoryBoard == null)
            {
                // Crea el storyBoard
                sbStoryBoard = new Storyboard();
                // Asigna el evento de fin de animación
                sbStoryBoard.Completed += (sender, evntArgs) => AnimationEnd?.Invoke(this, EventArgs.Empty);
            }
            // Limpia el storyBoard
            sbStoryBoard.Children.Clear();
            // Asigna las propiedades de duración
            sbStoryBoard.BeginTime = TimeSpan.FromSeconds(timeLine.Parameters.Start);
            sbStoryBoard.Duration  = new Duration(TimeSpan.FromSeconds(timeLine.Parameters.Duration));
            // Recorre las acciones añadiéndolas al storyboard
            foreach (ActionBaseModel action in timeLine.Actions)
            {
                if (action != null)
                {
                    FrameworkElement control = PageView.GetPageControl(action.TargetKey);

                    // Ejecuta la acción
                    if (control != null)                             // && control.RenderTransform is TransformGroup)
                    {
                        if (action is SetVisibilityActionModel)
                        {
                            ExecuteVisibility(control, action as SetVisibilityActionModel);
                        }
                        else if (action is ResizeActionModel)
                        {
                            ExecuteResize(timeLine, control, action as ResizeActionModel);
                        }
                        else if (action is RotateActionModel)
                        {
                            ExecuteRotation(control, action as RotateActionModel);
                        }
                        else if (action is ZoomActionModel)
                        {
                            ExecuteZoom(control, action as ZoomActionModel);
                        }
                        else if (action is TranslateActionModel)
                        {
                            ExecuteTranslate(control, action as TranslateActionModel);
                        }
                        else if (action is PathActionModel)
                        {
                            ExecutePathAnimation(control, action as PathActionModel);
                        }
                        else if (action is SetZIndexModel)
                        {
                            ExecuteZIndexAnimation(control, action as SetZIndexModel);
                        }
                        else if (action is BrushViewBoxActionModel)
                        {
                            ExecuteViewBoxAnimation(control, action as BrushViewBoxActionModel);
                        }
                        else if (action is BrushRadialActionModel)
                        {
                            ExecuteBrushRadial(control, action as BrushRadialActionModel);
                        }
                        else if (action is BrushLinearActionModel)
                        {
                            ExecuteBrushLinear(control, action as BrushLinearActionModel);
                        }
                    }
                }
            }
            // Inicia la animación
            if (sbStoryBoard.Children.Count > 0)
            {
                // Lanza el evento de inicio de animación
                AnimationStart?.Invoke(this, EventArgs.Empty);
                // Arranca la animación
                sbStoryBoard.Begin();
            }
        }