using System; namespace Uigenx { /// Presentation layers, ordered from the world outwards. public enum UgxLayer { Scene = 0, Hud = 1, Overlay = 2, Modal = 3, System = 4, } public static class UgxLayers { public const int Count = 5; /// PanelSettings sort order for a layer. Layers are 100 apart so games can slot panels between them. public static float SortOrder(UgxLayer layer) => (int)layer * 100f; public static string ToWireName(this UgxLayer layer) { switch (layer) { case UgxLayer.Scene: return "scene"; case UgxLayer.Hud: return "hud"; case UgxLayer.Overlay: return "overlay"; case UgxLayer.Modal: return "modal"; case UgxLayer.System: return "system"; default: throw new ArgumentOutOfRangeException(nameof(layer)); } } public static bool TryParse(string wireName, out UgxLayer layer) { switch (wireName) { case "scene": layer = UgxLayer.Scene; return true; case "hud": layer = UgxLayer.Hud; return true; case "overlay": layer = UgxLayer.Overlay; return true; case "modal": layer = UgxLayer.Modal; return true; case "system": layer = UgxLayer.System; return true; default: layer = UgxLayer.Hud; return false; } } } }