コード例 #1
0
ファイル: FeatureAssetTest.cs プロジェクト: pffft/Labrys
        // 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);
        }
コード例 #2
0
ファイル: FeatureAssetTest.cs プロジェクト: pffft/Labrys
        // 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);
        }
コード例 #3
0
        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);
        }