public void Initialize(ManagedExecutionSystem system) { int groupCount = system.ExecutionGroups.Count; _executionGroups = new ManagedExecutionGroup[groupCount]; _updateGroups = new RuntimeGroup[groupCount]; _fixedUpdateGroups = new RuntimeGroup[groupCount]; for (int i = 0; i < groupCount; i++) { List <ManagedUpdatesBehaviour> updateList = new List <ManagedUpdatesBehaviour>(); List <ManagedUpdatesBehaviour> fixedUpdateList = new List <ManagedUpdatesBehaviour>(); ManagedExecutionGroup currentGroup = system.ExecutionGroups[i]; currentGroup.TraverseForType( UpdateType.Normal, (c) => { updateList.Add(c); } ); currentGroup.TraverseForType( UpdateType.Fixed, (c) => { fixedUpdateList.Add(c); } ); _executionGroups[i] = currentGroup; _updateGroups[i] = new RuntimeGroup(updateList.ToArray()); _fixedUpdateGroups[i] = new RuntimeGroup(fixedUpdateList.ToArray()); } }
public FakeEnvironment(params string[] executionGroupNames) { int groupCount = executionGroupNames.Length; if (groupCount == 0) { throw new System.ArgumentException($"{nameof(FakeEnvironment)} must have at least one execution group."); } var executionGroups = new ManagedExecutionGroup[groupCount]; var groupLookup = new Dictionary <string, ManagedExecutionGroup>(groupCount); for (int i = 0; i < groupCount; i++) { var currentGroup = executionGroups[i] = ScriptableObject.CreateInstance <ManagedExecutionGroup>(); groupLookup.Add(executionGroupNames[i], currentGroup); } this.executionGroups = new ReadOnlyDictionary <string, ManagedExecutionGroup>(groupLookup); system = ScriptableObject.CreateInstance <ManagedExecutionSystem>(); system.SetExecutionGroups(executionGroups); _runtimeController = new GameObject("Runtime Controller").AddComponent <TestManagedUpdatesSceneController>(); _runtimeController.enabled = false; }
public void InstantiateManagedComponents <T>(string groupName, params ObjectToggleConfig[] toggleConfig) where T : ManagedUpdatesBehaviour { ManagedExecutionGroup group = executionGroups[groupName]; Transform containerTransform = _runtimeController.transform; foreach (ObjectToggleConfig config in toggleConfig) { InstantiateManagedUpdateGameObject <T>(group, config, containerTransform); } }
public void InstantiateManagedComponents <T>( out T[] components, string groupName, params ObjectToggleConfig[] toggleConfig) where T : ManagedUpdatesBehaviour { ManagedExecutionGroup group = executionGroups[groupName]; Transform containerTransform = _runtimeController.transform; components = new T[toggleConfig.Length]; for (int i = 0; i < toggleConfig.Length; i++) { components[i] = InstantiateManagedUpdateGameObject <T>(group, toggleConfig[i], containerTransform); } }
private T InstantiateManagedUpdateGameObject <T>( ManagedExecutionGroup group, ObjectToggleConfig config, Transform parent = null) where T : ManagedUpdatesBehaviour { return(ManagedUpdatesBehaviour.Create <T>( new ManagedUpdatesBehaviour.Config( group, config.HasFlag(ObjectToggleConfig.Update), config.HasFlag(ObjectToggleConfig.FixedUpdate)), config.HasFlag(ObjectToggleConfig.GameObjectActive), config.HasFlag(ObjectToggleConfig.ComponentEnabled), parent )); }