private List <T> GetLinksOfType <T>(IDRef.Type type) where T : Component { List <T> toReturn = new List <T>(); foreach (int link in links) { if (UFLevel.GetByID(link).type == type || type == IDRef.Type.All) { toReturn.Add(UFLevel.GetByID(link).objectRef.GetComponent <T>()); } } return(toReturn); }
private void Trigger(bool positive, IDRef.Type ignoredType = IDRef.Type.None) { if (ignoredType == IDRef.Type.All) { return; } foreach (int link in links) { if (UFLevel.GetByID(link).type != ignoredType) { UFTrigger.Activate(link, positive); } } }
private void SetID(int id, IDRef.Type type) { if (idDictionary.Count <= id) { if (idDictionary.Capacity <= id) { idDictionary.Capacity = id + 1; } for (int i = idDictionary.Count; i <= id; i++) { idDictionary.Add(null); } } idDictionary[id] = new IDRef(id, type); }
private void Update() { if (GetEventTypeClass(type) == EventTypeClass.Detector) { if (Detect()) { Trigger(true); } timer = 0f; return; } if (timer > 0f) { timer += Time.deltaTime; } if (timer > delay) { EventTypeClass etc = GetEventTypeClass(type); if (etc == EventTypeClass.Signal) { switch (type) { case UFLevelStructure.Event.EventType.Delay: Trigger(positiveSignal); timer = 0f; break; case UFLevelStructure.Event.EventType.Cyclic_Timer: Trigger(positiveSignal); timer -= delay; break; case UFLevelStructure.Event.EventType.Invert: Trigger(!positiveSignal); timer = 0f; break; case UFLevelStructure.Event.EventType.Switch: bool1 = !bool1; Trigger(bool1); timer = 0f; break; } } else if (etc == EventTypeClass.Effect) { IDRef.Type ignoredType = DoEffect(positiveSignal); Trigger(positiveSignal, ignoredType); timer = 0f; } else if (etc == EventTypeClass.ContinuousEffect) { DoContinuousEffect(); } else { Trigger(positiveSignal); timer = 0f; } } }