// Check for valid internal links void ValidateInternalLink(FeatureAsset feature, Vector2Int featureAssetPos) { feature.TryGetLink(featureAssetPos, out Link link); Assert.IsNotNull(link, "Internal link expected to exist at position: " + featureAssetPos); Assert.True(link.open, "Link was expected to be open (found closed) at position: " + featureAssetPos); Assert.False(link.external, "Link was expected to be internal (found external) at position: " + featureAssetPos); }
// Check for invalid links void ValidateMissingLink(FeatureAsset feature, Vector2Int featureAssetPos) { feature.TryGetLink(featureAssetPos, out Link link); Assert.IsNull(link, "Link expected to be missing at position: " + featureAssetPos); }
public override bool HandleEvent(Event e) { switch (e.type) { case EventType.MouseDown: settingExternal = (IsPrimaryControl(e) || IsSecondaryControl(e)) && e.control; goto case EventType.MouseDrag; case EventType.MouseDrag: if (IsPrimaryControl(e) || IsSecondaryControl(e)) { Vector2Int position = EditorGrid.GetInstance().ScreenToGridPos(e.mousePosition); if (FeatureEditorWindow.GetInstance().Feature.HasLinkAt(position)) { manipPositions.Add(position); if (settingExternal) { previewColor = Color.yellow; } else if (IsPrimaryControl(e)) { previewColor = Color.green; } else if (IsSecondaryControl(e)) { previewColor = Color.red; } return(true); } } break; case EventType.MouseUp: if (IsPrimaryControl(e) || IsSecondaryControl(e)) { FeatureAsset feature = FeatureEditorWindow.GetInstance().Feature; string description; UnityAction action; bool targetState = IsPrimaryControl(e) ? true : IsSecondaryControl(e) ? false : false; if (settingExternal) { description = targetState ? "Set connection(s) to external" : "Set connections(s) to internal"; action = () => { foreach (Vector2Int position in manipPositions) { if (feature.TryGetLink(position, out Link link)) { link.external = targetState; } } }; } else { description = targetState ? "Set connection(s) to open" : "Set connections(s) to closed"; action = () => { foreach (Vector2Int position in manipPositions) { if (feature.TryGetLink(position, out Link link)) { link.open = targetState; } } }; } ChangeAsset(feature, description, action); e.Use(); manipPositions.Clear(); return(true); } break; } return(false); }