public void RegisterProcess(int position, CommonRenderProcess process) { if (position > branchProcessPath.Count + 1) { branchProcessPath.Add(process); } else if (position < branchProcessPath.Count - 1) { branchProcessPath.Insert(0, process); } else { branchProcessPath.Insert(position, process); } }
public static T CreateProcess <T>(GameObject processManager) where T : CommonRenderProcess { T process = null; GameObject obj = new GameObject(); obj.transform.parent = processManager.transform; obj.transform.localPosition = Vector3.zero; if (typeof(T) == typeof(EffectRenderProcess)) { obj.name = "EffectRenderProcess"; obj.transform.position += Vector3.up * 1000; CommonRenderProcess temp = obj.AddComponent <EffectRenderProcess>(); process = (T)temp; } else if (typeof(T) == typeof(PreRenderProcess)) { obj.name = "PreRenderProcess"; obj.transform.position += Vector3.up * 2000; CommonRenderProcess temp = obj.AddComponent <PreRenderProcess>(); process = (T)temp; } else if (typeof(T) == typeof(TransitionRenderPrecess)) { obj.name = "TransitionRenderPrecess"; obj.transform.position += Vector3.up * 3000; CommonRenderProcess temp = obj.AddComponent <TransitionRenderPrecess>(); process = (T)temp; } else if (typeof(T) == typeof(PostRenderProcess)) { obj.name = "PostRenderProcess"; obj.transform.position += Vector3.up * 4000; CommonRenderProcess temp = obj.AddComponent <PostRenderProcess>(); process = (T)temp; } return(process); }