Пример #1
0
        private void UpdateSecondaryModeToggleAvailabilityToMatchPrimaryMode(ModeManager.PrimaryModes primaryMode)
        {
            switch (primaryMode)
            {
            case ModeManager.PrimaryModes.Textures:
                foreach (var toggle in secondaryModeToggles)
                {
                    toggle.interactable = true;
                }

                break;

            case ModeManager.PrimaryModes.Lights:
                foreach (var toggle in secondaryModeToggles)
                {
                    toggle.interactable = toggle.GetComponent <Toggle_SelectSecondaryMode>().Mode != ModeManager.SecondaryModes.Editing;
                }

                break;

            default:
                foreach (var toggle in secondaryModeToggles)
                {
                    if (toggle.GetComponent <Toggle_SelectSecondaryMode>().Mode == ModeManager.SecondaryModes.Selection)
                    {
                        toggle.interactable = true;
                    }
                    else
                    {
                        toggle.interactable = false;
                    }
                }

                ModeManager.Instance.SecondaryMode = ModeManager.SecondaryModes.Selection;

                break;
            }
        }
Пример #2
0
        public void UpdateSelectionToMatchMode(ModeManager.PrimaryModes primaryMode)
        {
            DeselectAll();

            if (LevelEntity_Level.Instance)
            {
                switch (primaryMode)
                {
                case ModeManager.PrimaryModes.Geometry:
                    SetSelectability <LevelEntity_Polygon>(LevelEntity_Level.Instance.Polygons.Values, enabled: true);
                    SetSelectability <LevelEntity_Line>(LevelEntity_Level.Instance.Lines.Values, enabled: true);
                    SetSelectability <LevelEntity_Side>(LevelEntity_Level.Instance.Sides.Values, enabled: true);
                    SetSelectability <LevelEntity_Light>(LevelEntity_Level.Instance.Lights.Values, enabled: false);
                    SetSelectability <LevelEntity_Media>(LevelEntity_Level.Instance.Medias.Values, enabled: false);
                    SetSelectability <LevelEntity_Platform>(LevelEntity_Level.Instance.CeilingPlatforms.Values, enabled: false);
                    SetSelectability <LevelEntity_Platform>(LevelEntity_Level.Instance.FloorPlatforms.Values, enabled: false);
                    SetSelectability <LevelEntity_MapObject>(LevelEntity_Level.Instance.MapObjects.Values, false);
                    SetSelectability <LevelEntity_Annotation>(LevelEntity_Level.Instance.Annotations.Values, false);
                    SetSelectability <LevelEntity_Level>(LevelEntity_Level.Instance, enabled: false);

                    SetSelectability <EditableSurface_Polygon>(LevelEntity_Level.Instance.EditableSurface_Polygons, enabled: true);
                    SetSelectability <EditableSurface_Side>(LevelEntity_Level.Instance.EditableSurface_Sides, enabled: true);
                    // TODO: Make this true when media subfilter is available
                    SetSelectability <EditableSurface_Media>(LevelEntity_Level.Instance.EditableSurface_Medias, enabled: false);
                    break;

                case ModeManager.PrimaryModes.Textures:
                    SetSelectability <LevelEntity_Polygon>(LevelEntity_Level.Instance.Polygons.Values, enabled: true);
                    SetSelectability <LevelEntity_Line>(LevelEntity_Level.Instance.Lines.Values, enabled: false);
                    SetSelectability <LevelEntity_Side>(LevelEntity_Level.Instance.Sides.Values, enabled: true);
                    SetSelectability <LevelEntity_Light>(LevelEntity_Level.Instance.Lights.Values, enabled: false);
                    SetSelectability <LevelEntity_Media>(LevelEntity_Level.Instance.Medias.Values, enabled: false);
                    SetSelectability <LevelEntity_Platform>(LevelEntity_Level.Instance.CeilingPlatforms.Values, enabled: false);
                    SetSelectability <LevelEntity_Platform>(LevelEntity_Level.Instance.FloorPlatforms.Values, enabled: false);
                    SetSelectability <LevelEntity_MapObject>(LevelEntity_Level.Instance.MapObjects.Values, false);
                    SetSelectability <LevelEntity_Annotation>(LevelEntity_Level.Instance.Annotations.Values, false);
                    SetSelectability <LevelEntity_Level>(LevelEntity_Level.Instance, enabled: false);

                    SetSelectability <EditableSurface_Polygon>(LevelEntity_Level.Instance.EditableSurface_Polygons, enabled: true);
                    SetSelectability <EditableSurface_Side>(LevelEntity_Level.Instance.EditableSurface_Sides, enabled: true);
                    SetSelectability <EditableSurface_Media>(LevelEntity_Level.Instance.EditableSurface_Medias, enabled: false);
                    break;

                case ModeManager.PrimaryModes.Lights:
                    SetSelectability <LevelEntity_Polygon>(LevelEntity_Level.Instance.Polygons.Values, enabled: false);
                    SetSelectability <LevelEntity_Line>(LevelEntity_Level.Instance.Lines.Values, enabled: false);
                    SetSelectability <LevelEntity_Side>(LevelEntity_Level.Instance.Sides.Values, enabled: false);
                    SetSelectability <LevelEntity_Light>(LevelEntity_Level.Instance.Lights.Values, enabled: true);    // Shown in right-palette and just selects and inspects the light
                    SetSelectability <LevelEntity_Media>(LevelEntity_Level.Instance.Medias.Values, enabled: false);
                    SetSelectability <LevelEntity_Platform>(LevelEntity_Level.Instance.CeilingPlatforms.Values, enabled: false);
                    SetSelectability <LevelEntity_Platform>(LevelEntity_Level.Instance.FloorPlatforms.Values, enabled: false);
                    SetSelectability <LevelEntity_MapObject>(LevelEntity_Level.Instance.MapObjects.Values, false);
                    SetSelectability <LevelEntity_Annotation>(LevelEntity_Level.Instance.Annotations.Values, false);
                    SetSelectability <LevelEntity_Level>(LevelEntity_Level.Instance, enabled: false);

                    SetSelectability <EditableSurface_Polygon>(LevelEntity_Level.Instance.EditableSurface_Polygons, enabled: true);
                    SetSelectability <EditableSurface_Side>(LevelEntity_Level.Instance.EditableSurface_Sides, enabled: true);
                    SetSelectability <EditableSurface_Media>(LevelEntity_Level.Instance.EditableSurface_Medias, enabled: true);
                    break;

                case ModeManager.PrimaryModes.Media:
                    SetSelectability <LevelEntity_Polygon>(LevelEntity_Level.Instance.Polygons.Values, enabled: false);
                    SetSelectability <LevelEntity_Line>(LevelEntity_Level.Instance.Lines.Values, enabled: false);
                    SetSelectability <LevelEntity_Side>(LevelEntity_Level.Instance.Sides.Values, enabled: false);
                    SetSelectability <LevelEntity_Light>(LevelEntity_Level.Instance.Lights.Values, enabled: false);
                    SetSelectability <LevelEntity_Media>(LevelEntity_Level.Instance.Medias.Values, enabled: true);    // Shown in right-palette and just selects and inspects the media
                    SetSelectability <LevelEntity_Platform>(LevelEntity_Level.Instance.CeilingPlatforms.Values, enabled: false);
                    SetSelectability <LevelEntity_Platform>(LevelEntity_Level.Instance.FloorPlatforms.Values, enabled: false);
                    SetSelectability <LevelEntity_MapObject>(LevelEntity_Level.Instance.MapObjects.Values, false);
                    SetSelectability <LevelEntity_Annotation>(LevelEntity_Level.Instance.Annotations.Values, false);
                    SetSelectability <LevelEntity_Level>(LevelEntity_Level.Instance, enabled: false);

                    SetSelectability <EditableSurface_Polygon>(LevelEntity_Level.Instance.EditableSurface_Polygons, enabled: true);
                    SetSelectability <EditableSurface_Side>(LevelEntity_Level.Instance.EditableSurface_Sides, enabled: true);
                    SetSelectability <EditableSurface_Media>(LevelEntity_Level.Instance.EditableSurface_Medias, enabled: true);
                    break;

                case ModeManager.PrimaryModes.Platforms:
                    SetSelectability <LevelEntity_Polygon>(LevelEntity_Level.Instance.Polygons.Values, enabled: false);
                    SetSelectability <LevelEntity_Line>(LevelEntity_Level.Instance.Lines.Values, enabled: false);
                    SetSelectability <LevelEntity_Side>(LevelEntity_Level.Instance.Sides.Values, enabled: false);
                    SetSelectability <LevelEntity_Light>(LevelEntity_Level.Instance.Lights.Values, enabled: false);
                    SetSelectability <LevelEntity_Media>(LevelEntity_Level.Instance.Medias.Values, enabled: false);
                    SetSelectability <LevelEntity_Platform>(LevelEntity_Level.Instance.CeilingPlatforms.Values, enabled: true);
                    SetSelectability <LevelEntity_Platform>(LevelEntity_Level.Instance.FloorPlatforms.Values, enabled: true);
                    SetSelectability <LevelEntity_MapObject>(LevelEntity_Level.Instance.MapObjects.Values, false);
                    SetSelectability <LevelEntity_Annotation>(LevelEntity_Level.Instance.Annotations.Values, false);
                    SetSelectability <LevelEntity_Level>(LevelEntity_Level.Instance, enabled: false);

                    SetSelectability <EditableSurface_Polygon>(LevelEntity_Level.Instance.EditableSurface_Polygons, enabled: true);
                    SetSelectability <EditableSurface_Side>(LevelEntity_Level.Instance.EditableSurface_Sides, enabled: true);
                    SetSelectability <EditableSurface_Media>(LevelEntity_Level.Instance.EditableSurface_Medias, enabled: false);
                    break;

                case ModeManager.PrimaryModes.Objects:
                    SetSelectability <LevelEntity_Polygon>(LevelEntity_Level.Instance.Polygons.Values, enabled: false);
                    SetSelectability <LevelEntity_Line>(LevelEntity_Level.Instance.Lines.Values, enabled: false);
                    SetSelectability <LevelEntity_Side>(LevelEntity_Level.Instance.Sides.Values, enabled: false);
                    SetSelectability <LevelEntity_Light>(LevelEntity_Level.Instance.Lights.Values, enabled: false);
                    SetSelectability <LevelEntity_Media>(LevelEntity_Level.Instance.Medias.Values, enabled: false);
                    SetSelectability <LevelEntity_Platform>(LevelEntity_Level.Instance.CeilingPlatforms.Values, enabled: false);
                    SetSelectability <LevelEntity_Platform>(LevelEntity_Level.Instance.FloorPlatforms.Values, enabled: false);
                    SetSelectability <LevelEntity_MapObject>(LevelEntity_Level.Instance.MapObjects.Values, true);
                    SetSelectability <LevelEntity_Annotation>(LevelEntity_Level.Instance.Annotations.Values, false);
                    SetSelectability <LevelEntity_Level>(LevelEntity_Level.Instance, enabled: false);

                    SetSelectability <EditableSurface_Polygon>(LevelEntity_Level.Instance.EditableSurface_Polygons, enabled: false);
                    SetSelectability <EditableSurface_Side>(LevelEntity_Level.Instance.EditableSurface_Sides, enabled: false);
                    SetSelectability <EditableSurface_Media>(LevelEntity_Level.Instance.EditableSurface_Medias, enabled: false);
                    break;

                case ModeManager.PrimaryModes.Annotations:
                    SetSelectability <LevelEntity_Polygon>(LevelEntity_Level.Instance.Polygons.Values, enabled: false);
                    SetSelectability <LevelEntity_Line>(LevelEntity_Level.Instance.Lines.Values, enabled: false);
                    SetSelectability <LevelEntity_Side>(LevelEntity_Level.Instance.Sides.Values, enabled: false);
                    SetSelectability <LevelEntity_Light>(LevelEntity_Level.Instance.Lights.Values, enabled: false);
                    SetSelectability <LevelEntity_Media>(LevelEntity_Level.Instance.Medias.Values, enabled: false);
                    SetSelectability <LevelEntity_Platform>(LevelEntity_Level.Instance.CeilingPlatforms.Values, enabled: false);
                    SetSelectability <LevelEntity_Platform>(LevelEntity_Level.Instance.FloorPlatforms.Values, enabled: false);
                    SetSelectability <LevelEntity_MapObject>(LevelEntity_Level.Instance.MapObjects.Values, false);
                    SetSelectability <LevelEntity_Annotation>(LevelEntity_Level.Instance.Annotations.Values, true);
                    SetSelectability <LevelEntity_Level>(LevelEntity_Level.Instance, enabled: false);

                    SetSelectability <EditableSurface_Polygon>(LevelEntity_Level.Instance.EditableSurface_Polygons, enabled: false);
                    SetSelectability <EditableSurface_Side>(LevelEntity_Level.Instance.EditableSurface_Sides, enabled: false);
                    SetSelectability <EditableSurface_Media>(LevelEntity_Level.Instance.EditableSurface_Medias, enabled: false);
                    break;

                case ModeManager.PrimaryModes.Level:
                    SetSelectability <LevelEntity_Polygon>(LevelEntity_Level.Instance.Polygons.Values, enabled: false);
                    SetSelectability <LevelEntity_Line>(LevelEntity_Level.Instance.Lines.Values, enabled: false);
                    SetSelectability <LevelEntity_Side>(LevelEntity_Level.Instance.Sides.Values, enabled: false);
                    SetSelectability <LevelEntity_Light>(LevelEntity_Level.Instance.Lights.Values, enabled: false);
                    SetSelectability <LevelEntity_Media>(LevelEntity_Level.Instance.Medias.Values, enabled: false);
                    SetSelectability <LevelEntity_Platform>(LevelEntity_Level.Instance.CeilingPlatforms.Values, enabled: false);
                    SetSelectability <LevelEntity_Platform>(LevelEntity_Level.Instance.FloorPlatforms.Values, enabled: false);
                    SetSelectability <LevelEntity_MapObject>(LevelEntity_Level.Instance.MapObjects.Values, false);
                    SetSelectability <LevelEntity_Annotation>(LevelEntity_Level.Instance.Annotations.Values, false);
                    SetSelectability <LevelEntity_Level>(LevelEntity_Level.Instance, enabled: true);

                    SetSelectability <EditableSurface_Polygon>(LevelEntity_Level.Instance.EditableSurface_Polygons, enabled: false);
                    SetSelectability <EditableSurface_Side>(LevelEntity_Level.Instance.EditableSurface_Sides, enabled: false);
                    SetSelectability <EditableSurface_Media>(LevelEntity_Level.Instance.EditableSurface_Medias, enabled: false);

                    // Select the level here, since there's no visual way to select it besides the mode button
                    if (LevelEntity_Level.Instance)
                    {
                        SelectObject(LevelEntity_Level.Instance, multiSelect: false);
                    }
                    break;

                case ModeManager.PrimaryModes.None:
                default:
                    SetSelectability <LevelEntity_Polygon>(LevelEntity_Level.Instance.Polygons.Values, enabled: false);
                    SetSelectability <LevelEntity_Line>(LevelEntity_Level.Instance.Lines.Values, enabled: false);
                    SetSelectability <LevelEntity_Side>(LevelEntity_Level.Instance.Sides.Values, enabled: false);
                    SetSelectability <LevelEntity_Light>(LevelEntity_Level.Instance.Lights.Values, enabled: false);
                    SetSelectability <LevelEntity_Media>(LevelEntity_Level.Instance.Medias.Values, enabled: false);
                    SetSelectability <LevelEntity_Platform>(LevelEntity_Level.Instance.CeilingPlatforms.Values, enabled: false);
                    SetSelectability <LevelEntity_Platform>(LevelEntity_Level.Instance.FloorPlatforms.Values, enabled: false);
                    SetSelectability <LevelEntity_MapObject>(LevelEntity_Level.Instance.MapObjects.Values, false);
                    SetSelectability <LevelEntity_Annotation>(LevelEntity_Level.Instance.Annotations.Values, false);
                    SetSelectability <LevelEntity_Level>(LevelEntity_Level.Instance, enabled: false);

                    SetSelectability <EditableSurface_Polygon>(LevelEntity_Level.Instance.EditableSurface_Polygons, enabled: false);
                    SetSelectability <EditableSurface_Side>(LevelEntity_Level.Instance.EditableSurface_Sides, enabled: false);
                    SetSelectability <EditableSurface_Media>(LevelEntity_Level.Instance.EditableSurface_Medias, enabled: false);
                    break;
                }
            }
        }
Пример #3
0
        private void UpdatePaletteToMatchMode(ModeManager.PrimaryModes primaryMode)
        {
            Clear();

            if (LevelEntity_Level.Instance)
            {
                switch (primaryMode)
                {
                case ModeManager.PrimaryModes.Geometry:
                    paletteToggleGroup.allowSwitchOff = false;

                    // TODO: populate with tools
                    //       - Line Drawing
                    //       - Polygon Fill (oh man... should this auto-fill when a poly is completed?)

                    break;

                case ModeManager.PrimaryModes.Textures:
                    paletteToggleGroup.allowSwitchOff = false;

                    var loadedTextureEntries = MaterialGeneration_Geometry.GetAllLoadedTextures().ToList();
                    loadedTextureEntries.Sort((entryA, entryB) => (entryA.Key.Collection == entryB.Key.Collection ?
                                                                   entryA.Key.Bitmap.CompareTo(entryB.Key.Bitmap) :
                                                                   ((entryA.Key.UsesLandscapeCollection() || entryB.Key.UsesLandscapeCollection()) ?
                                                                    -entryA.Key.Collection.CompareTo(entryB.Key.Collection) :
                                                                    entryA.Key.Collection.CompareTo(entryB.Key.Collection))));

                    GameObject currentHorizontalHelper = null;
                    var        activatedFirstSwatch    = false;

                    foreach (var textureEntry in loadedTextureEntries)
                    {
                        if (textureEntry.Key.UsesLandscapeCollection())
                        {
                            currentHorizontalHelper = null;

                            var swatch = Instantiate(textureSwatchPrefab, swatchesParent);
                            swatch.SetInitialValues(textureEntry, paletteToggleGroup);
                            currentSwatches.Add(swatch.gameObject);
                        }
                        else
                        {
                            if (!currentHorizontalHelper)
                            {
                                currentHorizontalHelper = Instantiate(horizontalLayoutHelperPrefab, swatchesParent);
                                currentLayoutHelpers.Add(currentHorizontalHelper);

                                var swatch = Instantiate(textureSwatchPrefab, currentHorizontalHelper.transform);
                                swatch.SetInitialValues(textureEntry, paletteToggleGroup);
                                currentSwatches.Add(swatch.gameObject);
                            }
                            else
                            {
                                var swatch = Instantiate(textureSwatchPrefab, currentHorizontalHelper.transform);
                                swatch.SetInitialValues(textureEntry, paletteToggleGroup);
                                currentSwatches.Add(swatch.gameObject);

                                currentHorizontalHelper = null;
                            }
                        }

                        if (!activatedFirstSwatch)
                        {
                            currentSwatches[0].GetComponent <Toggle>().isOn = true;

                            activatedFirstSwatch = true;
                        }
                    }

                    break;

                case ModeManager.PrimaryModes.Lights:
                    paletteToggleGroup.allowSwitchOff = true;

                    foreach (var light in LevelEntity_Level.Instance.Lights.Values)
                    {
                        var swatch = Instantiate(lightSwatchPrefab, swatchesParent);
                        swatch.SetInitialValues(light, paletteToggleGroup);
                        currentSwatches.Add(swatch.gameObject);
                    }

                    break;

                case ModeManager.PrimaryModes.Media:
                    paletteToggleGroup.allowSwitchOff = true;

                    foreach (var media in LevelEntity_Level.Instance.Medias.Values)
                    {
                        var swatch = Instantiate(mediaSwatchPrefab, swatchesParent);
                        swatch.SetInitialValues(media, paletteToggleGroup);
                        currentSwatches.Add(swatch.gameObject);
                    }

                    break;

                case ModeManager.PrimaryModes.Platforms:
                    paletteToggleGroup.allowSwitchOff = true;

                    // TODO: populate with shortcuts that focus the camera on the associated platform polygon when clicked.

                    break;

                case ModeManager.PrimaryModes.Objects:
                    paletteToggleGroup.allowSwitchOff = false;

                    // TODO: populate with placement tools
                    //       - Players
                    //       - Monsters
                    //           - foldout to show all subtypes
                    //           - load view-0, frame-0 sprite
                    //       - Items
                    //           - foldout to show all subtypes
                    //           - load view-0, frame-0 sprite
                    //       - Sceneries
                    //           - foldout to show all subtypes
                    //           - load view-0, frame-0 sprite
                    //       - Sounds
                    //           - foldout to show all subtypes
                    //           - plays sound when clicked
                    //       - Goals

                    break;

                case ModeManager.PrimaryModes.Annotations:
                    break;

                case ModeManager.PrimaryModes.Level:
                    break;

                case ModeManager.PrimaryModes.None:
                default:
                    break;
                }
            }
        }