private void LoadSettings() { if (!File.Exists(SaveFileName)) { return; } var xdoc = XDocument.Load(SaveFileName); var toggleKey = xdoc.Root.Attribute("toggleKey"); if (toggleKey != null && !String.IsNullOrEmpty(toggleKey.Value)) { foreach (string keyName in Enum.GetNames(typeof(KeyCode))) { if (toggleKey.Value.Equals(keyName)) { this.toggleKey = (KeyCode)Enum.Parse(typeof(KeyCode), toggleKey.Value); } } } var presetNodes = xdoc.Descendants("preset"); if (presetNodes.Count() == 0) { return; } presets = new Dictionary<string, CCPreset>(); foreach (var presetNode in presetNodes) { CCPreset preset = new CCPreset(); preset.name = presetNode.Attribute("name").Value; var clearMask = presetNode.Attribute("clearMask"); if (clearMask != null && !String.IsNullOrEmpty(clearMask.Value)) { preset.clearMask = (bool)clearMask; } preset.slots = new Dictionary<string, CCSlot>(); var slotNodes = presetNode.Element("slots").Elements("slot"); foreach (var slotNode in slotNodes) { var slot = new CCSlot(); slot.name = slotNode.Attribute("slotname").Value; slot.materials = new Dictionary<string, CCMaterial>(); var materialNodes = slotNode.Elements("material"); foreach (var materialNode in materialNodes) { var material = new CCMaterial(); material.name = materialNode.Element("name").Value; material.shader = materialNode.Element("shader").Value; var colorNode = materialNode.Element("color"); var r = (float)colorNode.Attribute("R"); var g = (float)colorNode.Attribute("G"); var b = (float)colorNode.Attribute("B"); var a = (float)colorNode.Attribute("A"); material.color = new Color(r, g, b, a); colorNode = materialNode.Element("shadowColor"); if (colorNode != null) { r = (float)colorNode.Attribute("R"); g = (float)colorNode.Attribute("G"); b = (float)colorNode.Attribute("B"); a = (float)colorNode.Attribute("A"); } material.shadowColor = new Color(r, g, b, a); colorNode = materialNode.Element("rimColor"); if (colorNode != null) { r = (float)colorNode.Attribute("R"); g = (float)colorNode.Attribute("G"); b = (float)colorNode.Attribute("B"); a = (float)colorNode.Attribute("A"); } material.rimColor = new Color(r, g, b, a); colorNode = materialNode.Element("outlineColor"); if (colorNode != null) { r = (float)colorNode.Attribute("R"); g = (float)colorNode.Attribute("G"); b = (float)colorNode.Attribute("B"); a = (float)colorNode.Attribute("A"); } material.outlineColor = new Color(r, g, b, a); var f = materialNode.Element("shininess"); if (f != null) { material.shininess = (float)f; } f = materialNode.Element("outlineWidth"); if (f != null) { material.outlineWidth = (float)f; } f = materialNode.Element("rimPower"); if (f != null) { material.rimPower = (float)f; } f = materialNode.Element("rimShift"); if (f != null) { material.rimShift = (float)f; } slot.materials.Add(material.name, material); } preset.slots.Add(slot.name, slot); } preset.mpns = new Dictionary<string, string>(); var mpnNodes = presetNode.Element("mpns").Elements("mpn"); foreach (var mpnNode in mpnNodes) { preset.mpns.Add(mpnNode.Attribute("name").Value, mpnNode.Value); } preset.delNodes = new Dictionary<string, bool>(); var nodes = presetNode.Element("nodes").Elements("node"); foreach (var node in nodes) { string key = Nodenames[node.Attribute("name").Value]; preset.delNodes.Add(key, (bool)node.Attribute("visible")); } presets.Add(preset.name, preset); } }
private void DoSelectPreset(int winId) { float margin = FixPx(marginPx); float fontSize = FixPx(fontPx); float itemHeight = FixPx(itemHeightPx); Rect scrollRect = new Rect(margin, (itemHeight + margin) * 2, winRect.width - margin * 2, winRect.height - (itemHeight + margin) * 4); Rect conRect = new Rect(0, 0, scrollRect.width - 20, 0); Rect outRect = new Rect(0, 0, winRect.width - margin * 2, itemHeight); GUIStyle lStyle = "label"; GUIStyle bStyle = "button"; GUIStyle tStyle = "toggle"; Color color = new Color(1f, 1f, 1f, 0.98f); lStyle.fontSize = FixPx(fontPx); lStyle.normal.textColor = color; bStyle.fontSize = FixPx(fontPx); bStyle.normal.textColor = color; tStyle.fontSize = FixPx(fontPx); tStyle.normal.textColor = color; GUI.Label(outRect, "プリセット適用", lStyle); outRect.y += itemHeight + margin; conRect.height += (itemHeight + margin) * presets.Count + margin * 2; outRect.y = 0; outRect.x = margin * 2; scrollViewVector = GUI.BeginScrollView(scrollRect, scrollViewVector, conRect); foreach (var preset in presets) { if (GUI.Button(outRect, preset.Key, bStyle)) { targetPreset = preset.Value; ApplyMpns(); menuType = MenuType.Main; } outRect.y += itemHeight + margin; } GUI.EndScrollView(); outRect.y = winRect.height - (itemHeight + margin) + margin; if (GUI.Button(outRect, "閉じる", bStyle)) { menuType = MenuType.Main; } GUI.DragWindow(); }