Пример #1
0
        /**
         *              return function what returns auto which is constructed by RuntimeAutoData.
         */
        public static Func <int, InitialParamType, Auto <InitialParamType, UpdateParamType> > RuntimeAutoGenerator(RuntimeAutoData runtimeAutoData)
        {
            return((int startFrame, InitialParamType initialParam) =>
            {
                var autoInfo = "generated";

                var newRootChangers = new List <IAutoChanger>();
                for (var i = 0; i < runtimeAutoData.rootChangers.Count; i++)
                {
                    var rootChangerSource = runtimeAutoData.rootChangers[i];
                    newRootChangers.Add(ChangerInstanceByName(rootChangerSource.changerName));
                }

                var newChangers = new List <IAutoChanger>();
                for (var i = 0; i < runtimeAutoData.changers.Count; i++)
                {
                    var changerSource = runtimeAutoData.changers[i];
                    newChangers.Add(ChangerInstanceByName(changerSource.changerName));
                }

                var newTimelines = new List <Timeline <InitialParamType, UpdateParamType> >();

                for (var i = 0; i < runtimeAutoData.timelines.Count; i++)
                {
                    var timelineSource = runtimeAutoData.timelines[i];
                    var timelineInfo = "generated";
                    var tacksSources = timelineSource.tacks;
                    var tacks = new List <Tack <InitialParamType, UpdateParamType> >();

                    for (var j = 0; j < tacksSources.Count; j++)
                    {
                        var tackSource = tacksSources[j];
                        var tackInfo = "generated";
                        var tackStart = tackSource.start;
                        var tackSpan = tackSource.span;

                        var tackCondition = ConditionGateway.ConditionFromString(tackSource.conditionType, tackSource.conditionValue);

                        var routines = new List <Func <RoutineBase <InitialParamType, UpdateParamType> > >();
                        for (var k = 0; k < tackSource.routines.Count; k++)
                        {
                            var routine = tackSource.routines[k];
                            var routineName = routine.routineName;
                            routines.Add(
                                () =>
                            {
                                return new RoutineContexts <InitialParamType, UpdateParamType>(routineName);
                            }
                                );
                        }

                        tacks.Add(new Tack <InitialParamType, UpdateParamType>(tackInfo, tackStart, tackSpan, tackCondition, routines.ToArray()));
                    }

                    newTimelines.Add(new Timeline <InitialParamType, UpdateParamType>(timelineInfo, tacks.ToArray()));
                }

                return new Auto <InitialParamType, UpdateParamType>(
                    autoInfo,
                    startFrame,
                    initialParam,
                    newRootChangers,
                    newChangers,
                    newTimelines.ToArray()
                    );
            });
        }
Пример #2
0
    public static string AutoDataToJson(RuntimeAutoData autoData)
    {
        var serialized = JsonUtility.ToJson(autoData);

        return(serialized);
    }