/** * 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() ); }); }
public static string AutoDataToJson(RuntimeAutoData autoData) { var serialized = JsonUtility.ToJson(autoData); return(serialized); }