/// <summary> /// 左クリックメニュー /// </summary> /// <param name="rect"></param> private void RightMenu(Rect rect) { GUI.enabled = true; if (Event.current.type == EventType.MouseDown && Event.current.button == 1) { GenericMenu menu = new GenericMenu(); menu.AddItem(new GUIContent("Copy"), false, () => { dynamicBoneColliderCopy = (DynamicBoneCollider)target; }); if (dynamicBoneColliderCopy == null) { menu.AddDisabledItem(new GUIContent("Paste")); } else { menu.AddItem(new GUIContent("Paste"), false, Paste); } menu.AddSeparator(""); menu.AddItem(new GUIContent("Export"), false, () => { Export(); }); menu.AddSeparator(""); foreach (string boneKey in boneColliderDatas.Keys) { BoneColliderData boneColliderData = boneColliderDatas[boneKey]; menu.AddItem(new GUIContent("Collider/" + boneColliderData.name), false, BoneSettiong, boneColliderData); } menu.ShowAsContext(); } }
/// <summary> /// 設定値の反映 /// </summary> /// <param name="obj"></param> private void BoneSettiong(object obj) { BoneColliderData boneColliderData = (BoneColliderData)obj; DynamicBoneSettingV1 setting = new DynamicBoneSettingV1(); DynamicBoneCollider bone = (DynamicBoneCollider)target; setting.SetXmlToCollider(boneColliderData.filePath, boneColliderData.name, bone); }
/// <summary> /// ボーンリストの読込 /// </summary> private void LoadBoneList() { boneColliderDatas = new Dictionary <string, BoneColliderData>(); string datasDir = Path.Combine(Application.dataPath, DATAS_BASE_DIR); foreach (string filePath in FileUtil.GetFileType(datasDir, "xml")) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(filePath); foreach (XmlNode nodeData in xmlDoc.SelectNodes("DynamicBones/Collider")) { XmlNode nameNode = nodeData.SelectSingleNode("Name"); BoneColliderData boneColliderData = new BoneColliderData { filePath = Path.Combine(datasDir, filePath), name = nameNode.InnerText }; boneColliderDatas.Add(boneColliderData.filePath + "__Collider__" + boneColliderData.name, boneColliderData); } } }