void OnDestroy() { UiManager.Unregister(this); }
void Awake() { box = GetComponent <SelectionBox>(); SetSelectables(UiManager.GetSelectables()); }
public void Fill() { List <CircuitNode> nodes = RRCSManager.Instance.circuitManager.Nodes; graph = new StorageNode[nodes.Count]; for (int i = 0; i < graph.Length; i++) { CircuitNode node = nodes[i]; DebugUtils.Assert(node.RingEvaluationPriority == i); StorageNode storageNode = new StorageNode(); NodeUi ui = UiManager.GetUi(node); storageNode.uiType = ui.GetType().FullName; storageNode.typeParams = ui.GetParams(); storageNode.position = ui.transform.position; storageNode.settings = new NodeSettingContainer[node.settings.Length]; for (int j = 0; j < storageNode.settings.Length; j++) { NodeSetting setting = node.settings[j]; storageNode.settings[j] = new NodeSettingContainer { type = setting.type, value = setting.currentValue.ToString() }; } graph[i] = storageNode; } for (int nodeIndex = 0; nodeIndex < graph.Length; nodeIndex++) { CircuitNode node = nodes[nodeIndex]; StorageNode storageNode = graph[nodeIndex]; storageNode.connections = new NodeConnection[node.inputPorts.Length]; for (int portIndex = 0; portIndex < node.inputPorts.Length; portIndex++) { InputPort port = node.inputPorts[portIndex]; if (port.IsConnected) { NodeConnection connection = new NodeConnection(); OutputPort connectedPort = ((DataConnection)port.connections[0]).SourceDataPort; connection.nodeIndex = connectedPort.RingEvaluationPriority; connection.portIndex = Array.IndexOf(connectedPort.Node.outputPorts, connectedPort); storageNode.connections[portIndex] = connection; } } } for (int nodeIndex = 0; nodeIndex < graph.Length; nodeIndex++) { CircuitNode node = nodes[nodeIndex]; StorageNode storageNode = graph[nodeIndex]; if (node.statePort != null) { List <StateMachineTransition> outgoingTransitions = node.statePort.GetOutgoingTransitions().ToList(); storageNode.transitions = new NodeTransition[outgoingTransitions.Count]; for (int transitionIndex = 0; transitionIndex < storageNode.transitions.Length; transitionIndex++) { StateMachineTransition outgoingTransition = outgoingTransitions[transitionIndex]; NodeTransition transition = new NodeTransition { sourceNodeIndex = outgoingTransition.SourceStatePort.RingEvaluationPriority, targetNodeIndex = outgoingTransition.TargetStatePort.RingEvaluationPriority }; if (outgoingTransition.TransitionEnabledPort != null && outgoingTransition.TransitionEnabledPort.IsConnected) { OutputPort connectedPort = ((DataConnection)outgoingTransition.TransitionEnabledPort.connections[0]).SourceDataPort; NodeConnection connection = new NodeConnection { nodeIndex = connectedPort.RingEvaluationPriority, portIndex = Array.IndexOf(connectedPort.Node.outputPorts, connectedPort) }; transition.transitionEnabledConnection = connection; } storageNode.transitions[transitionIndex] = transition; } } else { storageNode.transitions = new NodeTransition[0]; } } }
public void ResetGizmos() { UiManager.ResetGizmos(); }