private void RemoveAssociatedConnectors(int sceneId) { for (int i = NodeEditor.Connectors.Count - 1; i >= 0; i--) { TransitionConnector transConnect = NodeEditor.Connectors[i] as TransitionConnector; if (transConnect == null) { continue; } SceneNode startNode = transConnect.GetStartNode() as SceneNode; SceneNode endNode = transConnect.GetEndNode() as SceneNode; if (startNode.SceneId == sceneId || endNode.SceneId == sceneId) { NodeEditor.RemoveConnector(transConnect); } } }
private void NodeEditor_OnConnectorRemoved(object sender, ConnectorRemovedEventArgs e) { TransitionConnector transition = e.RemovedConnector as TransitionConnector; if (transition == null) { return; } SceneNode startNode = transition.GetStartNode() as SceneNode; SceneNode endNode = transition.GetEndNode() as SceneNode; Undo.RegisterCompleteObjectUndo(SerializedManager.TargetManager, "Remove Connector"); if (endNode != null) { startNode.SceneInfo.Transitions.RemoveAll( (x) => x.DestinationSceneId == endNode.SceneId); } SerializedManager.SerializedManager.Update(); editorWindow.FlagRefresh(); }
private void NodeConnectorMode_OnConnectionsFinalized(object sender, Common.EventArgs <IEnumerable <Connector> > e) { foreach (Connector connector in e.Value) { TransitionConnector current = connector as TransitionConnector; if (current == null) { continue; } SceneNode startNode = connector.GetStartNode() as SceneNode; SceneNode endNode = connector.GetEndNode() as SceneNode; TransitionConnector existingOut = null, existingIn = null; // Iterate existing connectors to determine if there are any duplicates // and if there are, increment the display count foreach (Connector item in NodeEditor.Connectors) { // Looking for other connections that are made between the same nodes // so need to skip if we are on the connector being finalized if (item == connector) { continue; } TransitionConnector existing = item as TransitionConnector; if (existing == null) { continue; } bool isOutbound = existing.GetStartNode().NodeData == startNode.NodeData && existing.GetEndNode().NodeData == endNode.NodeData; bool isInbound = existing.GetStartNode().NodeData == endNode.NodeData && existing.GetEndNode().NodeData == startNode.NodeData; if (isOutbound) { existingOut = existing; } if (isInbound) { existingIn = existing; } } bool isSelfTransition = endNode.SceneId == startNode.SceneId; if (existingOut != null) { existingOut.ConnectionCount++; NodeEditor.RemoveConnector(connector, notifyListeners: false); } if (existingIn != null && !isSelfTransition) { current.ShiftOver = existingIn.ShiftOver = true; } if (existingIn != null && existingOut != null && !isSelfTransition) { existingIn.ShiftOver = existingOut.ShiftOver = current.ShiftOver = true; } if (isSelfTransition) { Node lastNode = connector.GetEndNode(); connector.RemoveNode(lastNode); AddSelfTransitionNodes(current, lastNode); connector.AddNode(lastNode); } Undo.RecordObject(SerializedManager.TargetManager, "Undo Create Transition"); startNode.SceneInfo.CreateNewTransition(endNode.SceneId); SerializedManager.SerializedManager.Update(); } }
public void UpdateActiveTransition(SceneModel initialScene, SceneModel destScene) { if (initialScene == null) { isTransitioning = false; return; } TransitionConnector anyConnector = null; bool foundMatch = false; foreach (Connector connector in NodeEditor.Connectors) { TransitionConnector transConnect = connector as TransitionConnector; if (transConnect == null) { continue; } if (destScene == null) { transConnect.IsCurrentlyTransitioning = false; } else { SceneNode startNode = transConnect.GetStartNode() as SceneNode; SceneNode endNode = transConnect.GetEndNode() as SceneNode; if (startNode == null || endNode == null) { continue; } if (startNode.SceneId == SceneManagerController.ANY_SCENE_ID && endNode.SceneId == destScene.SceneId) { anyConnector = transConnect; } transConnect.IsCurrentlyTransitioning = (startNode.SceneId == initialScene.SceneId && endNode.SceneId == destScene.SceneId); if (transConnect.IsCurrentlyTransitioning) { foundMatch = true; break; } } } if (foundMatch) { isTransitioning = true; } else if (anyConnector != null) { anyConnector.IsCurrentlyTransitioning = true; isTransitioning = true; } else { isTransitioning = false; } }