private void RemoveNode(SequenceNode node) { arrayProperty.DeleteArrayElementAtIndex(node.index); serializedProperty.serializedObject.ApplyModifiedProperties(); cachedNodes.Remove(node); RemoveElement(node); }
private SerializedProperty GetPropertyFor(SequenceNode node) { if (node.index == -1) { return(rootProperty.Copy()); } else { return(arrayProperty.GetArrayElementAtIndex(node.index)); } }
private void AddNode(SequenceNode node) { cachedNodes.Add(node); AddElement(node); }
private SequenceNode CreateNodeFrom(SerializedProperty property, string overrideName = "", bool hasInput = true) { var copy = property.Copy(); copy.Next(true); var rect = copy.rectValue; var name = overrideName; if (overrideName == string.Empty) { name = property.managedReferenceFullTypename.Split(' ').Last(); if (name.Contains('.')) { name = name.Split('.').Last(); } } var node = new SequenceNode() { title = name }; node.styleSheets.Add(Resources.Load <StyleSheet>("Node")); if (hasInput) { var inPort = node.InstantiatePort(Orientation.Horizontal, Direction.Input, Port.Capacity.Multi, typeof(float)); inPort.portName = "In"; node.inputContainer.Add(inPort); } var outPort = node.InstantiatePort(Orientation.Horizontal, Direction.Output, Port.Capacity.Multi, typeof(float)); outPort.portName = "Out"; node.outputContainer.Add(outPort); node.RefreshExpandedState(); node.RefreshPorts(); var box = new Box(); var shouldAddPropertyBox = false; box.styleSheets.Add(Resources.Load <StyleSheet>("Box")); var propertyName = property.GetName(); var propertyStyle = Resources.Load <StyleSheet>("Label"); while (copy.NextVisible(false)) { var parentName = copy.GetParentName(); if (propertyName != parentName) { break; } var propertyField = new PropertyField(copy); propertyField.styleSheets.Add(propertyStyle); propertyField.Bind(property.serializedObject); box.Add(propertyField); shouldAddPropertyBox = true; } if (shouldAddPropertyBox) { node.mainContainer.Add(box); } node.SetPosition(rect); return(node); }