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; } }
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; } } }
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; } } }