WeaponController_inspector.cs 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEditor;
  5. namespace SoftKitty.MasterCharacterCreator
  6. {
  7. [CustomEditor(typeof(WeaponController))]
  8. public class WeaponController_inspector : Editor
  9. {
  10. Color _activeColor = new Color(0.1F, 0.3F, 0.5F);
  11. Color _disableColor = new Color(0F, 0.1F, 0.3F);
  12. Color _actionColor = new Color(0F, 1F, 0.4F);
  13. Color _titleColor = new Color(0.3F, 0.5F, 1F);
  14. Color _buttonColor = new Color(0F, 0.8F, 0.3F);
  15. GUIStyle _titleButtonStyle;
  16. string _thePath;
  17. WeaponController myTarget;
  18. List<string> CarryBoneNames = new List<string>(){
  19. "Custom",
  20. "CarryPointHipL",
  21. "CarryPointHipR",
  22. "CarryPointHipBack",
  23. "CarryPointThighL",
  24. "CarryPointThighR",
  25. "CarryPointBack",
  26. "CarryPointArmL",
  27. "CarryPointArmR"
  28. };
  29. List<string> HoldBoneNames = new List<string>(){
  30. "Custom",
  31. "WeaponBoneL",
  32. "WeaponBoneR",
  33. "Bip001 L UpperArm",
  34. "Bip001 L Forearm",
  35. "Bip001 R UpperArm",
  36. "Bip001 R Forearm"
  37. };
  38. List<string> HoldBoneLNames = new List<string>(){
  39. "Custom",
  40. "WeaponBoneL",
  41. };
  42. List<string> HoldBoneRNames = new List<string>(){
  43. "Custom",
  44. "WeaponBoneR",
  45. };
  46. List<string> HoldBoneTwoHandedNames = new List<string>(){
  47. "Custom",
  48. "WeaponBoneL",
  49. "WeaponBoneR"
  50. };
  51. bool SyncScale = true;
  52. private void Awake()
  53. {
  54. var script = MonoScript.FromScriptableObject(this);
  55. _thePath = AssetDatabase.GetAssetPath(script);
  56. _thePath = _thePath.Replace("WeaponController_inspector.cs", "");
  57. myTarget = (WeaponController)target;
  58. }
  59. public override void OnInspectorGUI()
  60. {
  61. GUI.changed = false;
  62. bool _valueChanged = false;
  63. _titleButtonStyle = new GUIStyle(GUI.skin.button);
  64. _titleButtonStyle.alignment = TextAnchor.MiddleLeft;
  65. Color _backgroundColor = GUI.backgroundColor;
  66. Texture logoIcon = (Texture)AssetDatabase.LoadAssetAtPath(_thePath + "Logo.png", typeof(Texture));
  67. Texture warningIcon = (Texture)AssetDatabase.LoadAssetAtPath(_thePath + "warning.png", typeof(Texture));
  68. GUILayout.BeginHorizontal();
  69. GUILayout.Box(logoIcon);
  70. GUILayout.EndHorizontal();
  71. GUILayout.BeginHorizontal();
  72. EditorGUILayout.HelpBox("Add this script to an empty GameObject,\n" +
  73. "then put your weapon model as a child of this GameObject,\n" +
  74. "assign it to <Weapon Model> slot.", MessageType.Info, true);
  75. GUILayout.EndHorizontal();
  76. EditorGUILayout.BeginHorizontal();
  77. GUILayout.Label("uid:", GUILayout.Width(40));
  78. myTarget.uid = EditorGUILayout.TextField(myTarget.uid);
  79. GUI.backgroundColor = _buttonColor;
  80. if (GUILayout.Button("Random", GUILayout.Width(60)))
  81. {
  82. myTarget.RandomUid();
  83. }
  84. GUI.backgroundColor = _backgroundColor;
  85. EditorGUILayout.EndHorizontal();
  86. GUILayout.BeginHorizontal();
  87. GUILayout.Label("Weapon Model:",GUILayout.Width(150));
  88. myTarget.WeaponModel = (Transform)EditorGUILayout.ObjectField(myTarget.WeaponModel, typeof(Transform), true, GUILayout.Width(150));
  89. GUILayout.EndHorizontal();
  90. if (myTarget.WeaponModel != null)
  91. {
  92. if (myTarget.WeaponModel.IsChildOf(myTarget.transform))
  93. {
  94. EditorGUILayout.Separator();
  95. GUILayout.BeginHorizontal();
  96. GUI.color = _buttonColor;
  97. GUILayout.Label("Type:", GUILayout.Width(150));
  98. GUI.color = Color.white;
  99. GUI.backgroundColor = _buttonColor;
  100. myTarget.Type = (WeaponType)EditorGUILayout.EnumPopup(myTarget.Type, GUILayout.Width(150));
  101. GUI.backgroundColor = Color.white;
  102. GUILayout.EndHorizontal();
  103. EditorGUILayout.Separator();
  104. GUILayout.BeginHorizontal();
  105. GUI.color = _buttonColor;
  106. GUILayout.Label("Parent Bone when holding the weapon:");
  107. GUI.color = Color.white;
  108. GUILayout.EndHorizontal();
  109. GUILayout.BeginHorizontal();
  110. GUI.backgroundColor = _buttonColor;
  111. myTarget.Data.HoldParentTransform = GUILayout.TextField(myTarget.Data.HoldParentTransform, GUILayout.Width(150));
  112. int _sel = GetHoldBoneList(myTarget.Type).IndexOf(myTarget.Data.HoldParentTransform);
  113. if (_sel < 0) _sel = 0;
  114. EditorGUI.BeginChangeCheck();
  115. _sel = EditorGUILayout.Popup(_sel, GetHoldBoneList(myTarget.Type).ToArray(), GUILayout.Width(150));
  116. if (EditorGUI.EndChangeCheck() && _sel > 0)
  117. {
  118. myTarget.Data.HoldParentTransform = GetHoldBoneList(myTarget.Type)[_sel];
  119. _valueChanged = true;
  120. }
  121. GUI.backgroundColor = Color.white;
  122. GUILayout.EndHorizontal();
  123. if (myTarget.Data.HoldParentTransform == "")
  124. {
  125. GUILayout.BeginHorizontal();
  126. GUI.color = Color.red;
  127. GUILayout.Label("The parent bone name can not be empty!");
  128. GUI.color = Color.white;
  129. GUILayout.EndHorizontal();
  130. }
  131. EditorGUILayout.Separator();
  132. GUILayout.BeginHorizontal();
  133. myTarget.Data.VisibleWhenCarry = GUILayout.Toggle(myTarget.Data.VisibleWhenCarry, "Visible when carrying");
  134. GUILayout.EndHorizontal();
  135. if (myTarget.Data.VisibleWhenCarry)
  136. {
  137. GUILayout.BeginHorizontal();
  138. GUI.color = _buttonColor;
  139. GUILayout.Label("Parent Bone when carry the weapon:");
  140. GUI.color = Color.white;
  141. GUILayout.EndHorizontal();
  142. GUILayout.BeginHorizontal();
  143. GUI.backgroundColor = _buttonColor;
  144. myTarget.Data.CarryParentTransform = GUILayout.TextField(myTarget.Data.CarryParentTransform, GUILayout.Width(150));
  145. _sel = CarryBoneNames.IndexOf(myTarget.Data.CarryParentTransform);
  146. if (_sel < 0) _sel = 0;
  147. EditorGUI.BeginChangeCheck();
  148. _sel = EditorGUILayout.Popup(_sel, CarryBoneNames.ToArray(), GUILayout.Width(150));
  149. if (EditorGUI.EndChangeCheck() && _sel > 0)
  150. {
  151. myTarget.Data.CarryParentTransform = CarryBoneNames[_sel];
  152. _valueChanged = true;
  153. }
  154. GUI.backgroundColor = Color.white;
  155. GUILayout.EndHorizontal();
  156. GUILayout.BeginHorizontal();
  157. GUILayout.Label("Sheath Model:", GUILayout.Width(150));
  158. myTarget.SheathModel = (Transform)EditorGUILayout.ObjectField(myTarget.SheathModel, typeof(Transform), true, GUILayout.Width(150));
  159. GUILayout.EndHorizontal();
  160. if (myTarget.SheathModel != null && !myTarget.SheathModel.IsChildOf(myTarget.WeaponModel))
  161. {
  162. GUILayout.BeginHorizontal();
  163. GUI.color = Color.red;
  164. GUILayout.Label("The <Sheath Model> must be a child of the Weapon Model!");
  165. GUI.color = Color.white;
  166. GUILayout.EndHorizontal();
  167. }
  168. }
  169. EditorGUILayout.Separator();
  170. EditorGUILayout.Separator();
  171. GUILayout.BeginHorizontal();
  172. GUI.backgroundColor = myTarget.PositionMode ? _actionColor : _buttonColor;
  173. GUI.color = myTarget.PositionMode ? _actionColor : Color.white * 0.7F;
  174. if (GUILayout.Button("Position Mode", GUILayout.Width(100)))
  175. {
  176. myTarget.PositionMode = !myTarget.PositionMode;
  177. EditorGUI.FocusTextInControl(null);
  178. }
  179. GUI.color = Color.white;
  180. GUI.backgroundColor = _activeColor;
  181. if (GUILayout.Button("Copy Setting", GUILayout.Width(100)))
  182. {
  183. string _json = JsonUtility.ToJson(myTarget.Data);
  184. TextEditor te = new TextEditor();
  185. te.text = _json;
  186. te.SelectAll();
  187. te.Copy();
  188. EditorUtility.DisplayDialog("Copy Setting", "Successfully copied settings to clipboard!", "OK");
  189. }
  190. if (GUILayout.Button("Paste Setting", GUILayout.Width(100)))
  191. {
  192. string _json = GUIUtility.systemCopyBuffer;
  193. try
  194. {
  195. WeaponPositionData _data = JsonUtility.FromJson<WeaponPositionData>(_json);
  196. myTarget.Data.CarryParentTransform = _data.CarryParentTransform;
  197. myTarget.Data.HoldParentTransform = _data.HoldParentTransform;
  198. myTarget.Data.VisibleWhenCarry = _data.VisibleWhenCarry;
  199. myTarget.Data.Pos = new Vector3[_data.Pos.Length];
  200. myTarget.Data.Rot = new Vector3[_data.Rot.Length];
  201. myTarget.Data.Scale = new Vector3[_data.Scale.Length];
  202. for (int i = 0; i < _data.Pos.Length; i++) myTarget.Data.Pos[i] = _data.Pos[i];
  203. for (int i = 0; i < _data.Rot.Length; i++) myTarget.Data.Rot[i] = _data.Rot[i];
  204. for (int i = 0; i < _data.Scale.Length; i++) myTarget.Data.Scale[i] = _data.Scale[i];
  205. EditorUtility.DisplayDialog("Paste Setting", "Successfully pasted settings from clipboard!", "OK");
  206. }
  207. catch
  208. {
  209. EditorUtility.DisplayDialog("Paste Setting", "Invalid data from clipboard!", "OK");
  210. }
  211. }
  212. GUI.backgroundColor = Color.white;
  213. GUILayout.EndHorizontal();
  214. if (myTarget.PositionMode)
  215. {
  216. GUILayout.BeginHorizontal();
  217. GUILayout.Space(20);
  218. GUI.backgroundColor = myTarget.PreviewSex == Sex.Male ? _titleColor : Color.black;
  219. GUI.color = myTarget.PreviewSex == Sex.Male ? Color.white : Color.white * 0.7F;
  220. if (GUILayout.Button("Male Positioning", GUILayout.Width(120)))
  221. {
  222. if (myTarget.PreviewSex != Sex.Male)
  223. {
  224. myTarget.PreviewSex = Sex.Male;
  225. ResetPreview();
  226. EditorGUI.FocusTextInControl(null);
  227. }
  228. }
  229. GUI.backgroundColor = myTarget.PreviewSex == Sex.Female ? _titleColor : Color.black;
  230. GUI.color = myTarget.PreviewSex == Sex.Female ? Color.white : Color.white * 0.7F;
  231. if (GUILayout.Button("Female Positioning", GUILayout.Width(120)))
  232. {
  233. if (myTarget.PreviewSex != Sex.Female)
  234. {
  235. myTarget.PreviewSex = Sex.Female;
  236. ResetPreview();
  237. EditorGUI.FocusTextInControl(null);
  238. }
  239. }
  240. GUI.backgroundColor = Color.white;
  241. GUI.color = Color.white;
  242. GUILayout.EndHorizontal();
  243. if (myTarget.Data.Pos.Length < 4) myTarget.Data.Pos = new Vector3[4];
  244. if (myTarget.Data.Rot.Length < 4) myTarget.Data.Rot = new Vector3[4];
  245. if (myTarget.Data.Scale.Length < 4) myTarget.Data.Scale = new Vector3[4] { new Vector3(1F, 1F, 1F), new Vector3(1F, 1F, 1F), new Vector3(1F, 1F, 1F), new Vector3(1F, 1F, 1F) };
  246. EditorGUILayout.Separator();
  247. GUILayout.BeginHorizontal();
  248. GUILayout.Space(20);
  249. if (GUILayout.Button(myTarget.PreviewSex == Sex.Male ? "Copy Male Positioning to Female" : "Copy Female Positioning to Male", GUILayout.Width(240)))
  250. {
  251. int _baseId = myTarget.PreviewSex == Sex.Male ? 0 : 2;
  252. int _targetId = myTarget.PreviewSex == Sex.Male ? 2 : 0;
  253. for (int i = 0; i < 2; i++)
  254. {
  255. myTarget.Data.Pos[_targetId + i] = myTarget.Data.Pos[_baseId + i];
  256. myTarget.Data.Rot[_targetId + i] = myTarget.Data.Rot[_baseId + i];
  257. myTarget.Data.Scale[_targetId + i] = myTarget.Data.Scale[_baseId + i];
  258. }
  259. EditorUtility.DisplayDialog("Copy Positioning", "Successfully copied!", "OK");
  260. }
  261. GUILayout.EndHorizontal();
  262. EditorGUILayout.Separator();
  263. if (myTarget.PreviewModel == null)
  264. {
  265. myTarget.PreviewModel = Instantiate(Resources.Load<GameObject>("MasterCharacterCreator/Player/Character" + myTarget.PreviewSex.ToString()), myTarget.transform.position, Quaternion.identity);
  266. myTarget.OriginalPos = myTarget.transform.localPosition;
  267. myTarget.OriginalRot = myTarget.transform.localRotation;
  268. myTarget.OriginalScale = myTarget.transform.localScale;
  269. myTarget.OriginalParent = myTarget.transform.parent;
  270. }
  271. else
  272. {
  273. GUILayout.BeginHorizontal();
  274. GUILayout.Space(20);
  275. GUILayout.Label("Preview:", GUILayout.Width(60));
  276. myTarget.PreviewHold = GUILayout.Toggle(myTarget.PreviewHold, "Holding", GUILayout.Width(70));
  277. if (myTarget.PreviewHold)
  278. {
  279. Transform _targetBone = FindChildTransform(myTarget.PreviewModel.transform, myTarget.Data.HoldParentTransform);
  280. if (_targetBone != null)
  281. {
  282. if (myTarget.transform.parent != _targetBone)
  283. {
  284. myTarget.transform.SetParent(_targetBone);
  285. EditorGUI.FocusTextInControl(null);
  286. }
  287. myTarget.PreviewCarry = false;
  288. }
  289. else
  290. {
  291. myTarget.PreviewHold = false;
  292. EditorUtility.DisplayDialog("Preview Oositioning", "You must input the Parent Bone name before preview the positioning.", "OK");
  293. }
  294. }
  295. GUILayout.Space(10);
  296. myTarget.PreviewCarry = GUILayout.Toggle(myTarget.PreviewCarry, "Carrying", GUILayout.Width(70));
  297. if (myTarget.PreviewCarry)
  298. {
  299. Transform _targetBone = FindChildTransform(myTarget.PreviewModel.transform, myTarget.Data.CarryParentTransform);
  300. if (_targetBone != null)
  301. {
  302. if (myTarget.transform.parent != _targetBone)
  303. {
  304. myTarget.transform.SetParent(_targetBone);
  305. EditorGUI.FocusTextInControl(null);
  306. }
  307. myTarget.PreviewHold = false;
  308. }
  309. else
  310. {
  311. myTarget.PreviewCarry = false;
  312. EditorUtility.DisplayDialog("Preview Oositioning", "You must input the Parent Bone name before preview the positioning.", "OK");
  313. }
  314. }
  315. GUILayout.EndHorizontal();
  316. if (myTarget.PreviewHold || myTarget.PreviewCarry)
  317. {
  318. int _id = (int)myTarget.PreviewSex * 2 + (myTarget.PreviewCarry ? 1 : 0);
  319. GUILayout.BeginHorizontal();
  320. GUILayout.Space(20);
  321. GUI.color = _titleColor;
  322. GUILayout.Label("Position:");
  323. GUI.color = Color.white;
  324. GUI.backgroundColor = _buttonColor;
  325. if (GUILayout.Button("Reset", GUILayout.Width(60)))
  326. {
  327. myTarget.Data.Pos[_id] = Vector3.zero;
  328. }
  329. GUI.backgroundColor = Color.white;
  330. GUILayout.EndHorizontal();
  331. GUILayout.BeginHorizontal();
  332. GUILayout.Space(40);
  333. GUILayout.Label("x:", GUILayout.Width(20));
  334. myTarget.Data.Pos[_id].x = EditorGUILayout.Slider(myTarget.Data.Pos[_id].x, -1F, 1F);
  335. GUILayout.EndHorizontal();
  336. GUILayout.BeginHorizontal();
  337. GUILayout.Space(40);
  338. GUILayout.Label("y:", GUILayout.Width(20));
  339. myTarget.Data.Pos[_id].y = EditorGUILayout.Slider(myTarget.Data.Pos[_id].y, -1F, 1F);
  340. GUILayout.EndHorizontal();
  341. GUILayout.BeginHorizontal();
  342. GUILayout.Space(40);
  343. GUILayout.Label("z:", GUILayout.Width(20));
  344. myTarget.Data.Pos[_id].z = EditorGUILayout.Slider(myTarget.Data.Pos[_id].z, -1F, 1F);
  345. GUILayout.EndHorizontal();
  346. EditorGUILayout.Separator();
  347. GUILayout.BeginHorizontal();
  348. GUILayout.Space(20);
  349. GUI.color = _titleColor;
  350. GUILayout.Label("Rotation:");
  351. GUI.color = Color.white;
  352. GUI.backgroundColor = _buttonColor;
  353. if (GUILayout.Button("Reset", GUILayout.Width(60)))
  354. {
  355. myTarget.Data.Rot[_id] = Vector3.zero;
  356. }
  357. GUI.backgroundColor = Color.white;
  358. GUILayout.EndHorizontal();
  359. GUILayout.BeginHorizontal();
  360. GUILayout.Space(40);
  361. GUILayout.Label("x:", GUILayout.Width(20));
  362. myTarget.Data.Rot[_id].x = EditorGUILayout.Slider(myTarget.Data.Rot[_id].x, -180F, 180F);
  363. GUILayout.EndHorizontal();
  364. GUILayout.BeginHorizontal();
  365. GUILayout.Space(40);
  366. GUILayout.Label("y:", GUILayout.Width(20));
  367. myTarget.Data.Rot[_id].y = EditorGUILayout.Slider(myTarget.Data.Rot[_id].y, -180F, 180F);
  368. GUILayout.EndHorizontal();
  369. GUILayout.BeginHorizontal();
  370. GUILayout.Space(40);
  371. GUILayout.Label("z:", GUILayout.Width(20));
  372. myTarget.Data.Rot[_id].z = EditorGUILayout.Slider(myTarget.Data.Rot[_id].z, -180F, 180F);
  373. GUILayout.EndHorizontal();
  374. EditorGUILayout.Separator();
  375. GUILayout.BeginHorizontal();
  376. GUILayout.Space(20);
  377. GUI.color = _titleColor;
  378. GUILayout.Label("Scale:", GUILayout.Width(70F));
  379. GUI.color = Color.white;
  380. SyncScale = GUILayout.Toggle(SyncScale, "Uniform Scale");
  381. GUI.backgroundColor = _buttonColor;
  382. if (GUILayout.Button("Reset", GUILayout.Width(60)))
  383. {
  384. myTarget.Data.Scale[_id] = Vector3.one;
  385. }
  386. GUI.backgroundColor = Color.white;
  387. GUILayout.EndHorizontal();
  388. if (SyncScale)
  389. {
  390. GUILayout.BeginHorizontal();
  391. GUILayout.Space(40);
  392. myTarget.Data.Scale[_id].x = EditorGUILayout.Slider(myTarget.Data.Scale[_id].x, 0.5F, 1.5F);
  393. myTarget.Data.Scale[_id].y = myTarget.Data.Scale[_id].x;
  394. myTarget.Data.Scale[_id].z = myTarget.Data.Scale[_id].x;
  395. GUILayout.EndHorizontal();
  396. }
  397. else
  398. {
  399. GUILayout.BeginHorizontal();
  400. GUILayout.Space(40);
  401. GUILayout.Label("x:", GUILayout.Width(20));
  402. myTarget.Data.Scale[_id].x = EditorGUILayout.Slider(myTarget.Data.Scale[_id].x, 0.5F, 1.5F);
  403. GUILayout.EndHorizontal();
  404. GUILayout.BeginHorizontal();
  405. GUILayout.Space(40);
  406. GUILayout.Label("y:", GUILayout.Width(20));
  407. myTarget.Data.Scale[_id].y = EditorGUILayout.Slider(myTarget.Data.Scale[_id].y, 0.5F, 1.5F);
  408. GUILayout.EndHorizontal();
  409. GUILayout.BeginHorizontal();
  410. GUILayout.Space(40);
  411. GUILayout.Label("z:", GUILayout.Width(20));
  412. myTarget.Data.Scale[_id].z = EditorGUILayout.Slider(myTarget.Data.Scale[_id].z, 0.5F, 1.5F);
  413. GUILayout.EndHorizontal();
  414. }
  415. myTarget.transform.localPosition = myTarget.Data.Pos[_id];
  416. myTarget.transform.localEulerAngles = myTarget.Data.Rot[_id];
  417. myTarget.transform.localScale = myTarget.Data.Scale[_id];
  418. }
  419. }
  420. }
  421. else
  422. {
  423. ResetPreview();
  424. }
  425. }
  426. else
  427. {
  428. GUILayout.BeginHorizontal();
  429. GUI.color = Color.red;
  430. GUILayout.Label("The <Weapon Model> must be a child of this transform!");
  431. GUI.color = Color.white;
  432. GUILayout.EndHorizontal();
  433. ResetPreview();
  434. }
  435. }
  436. else
  437. {
  438. ResetPreview();
  439. }
  440. EditorGUILayout.Separator();
  441. GUILayout.Label("Select parent bones before entering <Position Mode>.");
  442. if ((_valueChanged || GUI.changed) && !Application.isPlaying) UnityEditor.EditorUtility.SetDirty(myTarget);
  443. }
  444. private Transform FindChildTransform(Transform _trans, string _name)
  445. {
  446. if (_name == "") return null;
  447. foreach (var obj in _trans.GetComponentsInChildren<Transform>(true)) {
  448. if (obj.name == _name) return obj;
  449. }
  450. return null;
  451. }
  452. private void ResetPreview() {
  453. if (myTarget.PreviewModel != null)
  454. {
  455. myTarget.transform.SetParent(myTarget.OriginalParent);
  456. myTarget.transform.SetAsLastSibling();
  457. myTarget.transform.localRotation = myTarget.OriginalRot;
  458. myTarget.transform.localPosition= myTarget.OriginalPos;
  459. myTarget.transform.localScale=myTarget.OriginalScale;
  460. DestroyImmediate(myTarget.PreviewModel);
  461. }
  462. }
  463. private void OnDestroy()
  464. {
  465. ResetPreview();
  466. }
  467. private void OnDisable()
  468. {
  469. myTarget.PositionMode = false;
  470. ResetPreview();
  471. }
  472. private List<string> GetHoldBoneList(WeaponType _type) {
  473. if (_type == WeaponType.LeftHand)
  474. {
  475. return HoldBoneLNames;
  476. }
  477. else if (_type == WeaponType.RightHand)
  478. {
  479. return HoldBoneRNames;
  480. }
  481. else if (_type == WeaponType.TwoHanded)
  482. {
  483. return HoldBoneTwoHandedNames;
  484. }
  485. else
  486. {
  487. return HoldBoneNames;
  488. }
  489. }
  490. }
  491. }