EditorPanel.cs 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using QFramework;
  4. using System.Collections.Generic;
  5. using UniRx;
  6. using System.Linq;
  7. using System.IO;
  8. using System;
  9. using LitJson;
  10. namespace QFramework.MREditor
  11. {
  12. public enum UIEditorEvent
  13. {
  14. Start = QMgrID.UI,
  15. OnUIOpenElenemt,
  16. OnAddSpoitObj,
  17. OnSelectObjName,
  18. OnSaveDataSetting,
  19. OnRemoveDataSetting,
  20. OnAddNewMaterial,
  21. OnCloseEditor,
  22. }
  23. public class OnUIOpenElenemt : QMsg
  24. {
  25. public bool state;
  26. public OnUIOpenElenemt(bool state) : base((int)UIEditorEvent.OnUIOpenElenemt)
  27. {
  28. this.state = state;
  29. }
  30. }
  31. public class OnAddSpoitObj : QMsg
  32. {
  33. public string path;
  34. public OnAddSpoitObj(string path) : base((int)UIEditorEvent.OnAddSpoitObj)
  35. {
  36. this.path = path;
  37. }
  38. }
  39. public class OnSelectObjName : QMsg
  40. {
  41. public string spoitName;
  42. public string Name;
  43. public string CMVName;
  44. public OnSelectObjName(string Name, string CMVName, string spoitName) : base((int)UIEditorEvent.OnSelectObjName)
  45. {
  46. this.Name = Name;
  47. this.CMVName = CMVName;
  48. this.spoitName = spoitName;
  49. }
  50. }
  51. public class OnSaveDataSetting : QMsg
  52. {
  53. public Vector3 pos;
  54. public Vector3 rot;
  55. public Vector3 scale;
  56. public string name;
  57. public OnSaveDataSetting(string name, Vector3 pos, Vector3 rot, Vector3 scale) : base((int)UIEditorEvent.OnSaveDataSetting)
  58. {
  59. this.name = name;
  60. this.pos = pos;
  61. this.rot = rot;
  62. this.scale = scale;
  63. }
  64. }
  65. public class OnRemoveDataSetting : QMsg
  66. {
  67. public string name;
  68. public OnRemoveDataSetting(string name) : base((int)UIEditorEvent.OnRemoveDataSetting)
  69. {
  70. this.name = name;
  71. }
  72. }
  73. public class OnCloseEditor : QMsg
  74. {
  75. public OnCloseEditor() : base((int)UIEditorEvent.OnCloseEditor)
  76. {
  77. }
  78. }
  79. public class OnAddNewMaterial : QMsg
  80. {
  81. public CompositeMaterialValue newMaterial;
  82. public OnAddNewMaterial(CompositeMaterialValue objValue) : base((int)UIEditorEvent.OnAddNewMaterial)
  83. {
  84. this.newMaterial = objValue;
  85. }
  86. }
  87. public class EditorPanelData : UIPanelData
  88. {
  89. public SceneValue SceneValue = new SceneValue();
  90. public List<CompositeMaterialValue> listLocalMaterials = new List<CompositeMaterialValue>();
  91. public List<CompositeMaterialValue> listUpLoadMaterials = new List<CompositeMaterialValue>();
  92. }
  93. public partial class EditorPanel : UIPanel
  94. {
  95. private Transform selectObj;
  96. private Transform selectCMVObj;
  97. private GameObject selectSpoit;
  98. // private bool state = true;
  99. public Dictionary<string, List<GameObject>> dicObjs;
  100. public Dictionary<string, List<GameObject>> dicCMVOjbes;
  101. public Dictionary<string, SelectBJImage> dicSelectBackImage;
  102. protected override void ProcessMsg(int eventId, QMsg msg)
  103. {
  104. Debug.Log(eventId);
  105. switch ((UIEditorEvent)eventId)
  106. {
  107. case UIEditorEvent.Start:
  108. break;
  109. case UIEditorEvent.OnUIOpenElenemt:
  110. var onUIOpenElenemt = msg as OnUIOpenElenemt;
  111. Debug.Log(onUIOpenElenemt.state);
  112. OpenElenemt(onUIOpenElenemt.state);
  113. break;
  114. case UIEditorEvent.OnAddSpoitObj:
  115. var OnAddSpoitObj = msg as OnAddSpoitObj;
  116. Debug.Log(OnAddSpoitObj.path + " ?????");
  117. break;
  118. case UIEditorEvent.OnSelectObjName:
  119. var OnSelectObjName = msg as OnSelectObjName;
  120. Debug.Log(OnSelectObjName.Name);
  121. SelectedObj(OnSelectObjName.Name, OnSelectObjName.spoitName);
  122. Debug.Log("OnSelectObjName");
  123. break;
  124. case UIEditorEvent.OnSaveDataSetting:
  125. var OnSaveDataSetting = msg as OnSaveDataSetting;
  126. Debug.Log(OnSaveDataSetting.name);
  127. // SaveData(OnSaveDataSetting.name, OnSaveDataSetting.pos, OnSaveDataSetting.rot, OnSaveDataSetting.scale);
  128. SaveData(OnSaveDataSetting.name);
  129. break;
  130. case UIEditorEvent.OnRemoveDataSetting:
  131. var OnRemoveDataSetting = msg as OnRemoveDataSetting;
  132. RemoveData();
  133. break;
  134. case UIEditorEvent.OnAddNewMaterial:
  135. var OnAddNewMaterial = msg as OnAddNewMaterial;
  136. Debug.Log(OnAddNewMaterial.newMaterial);
  137. // AddMaterialObj(OnAddNewMaterial.newMaterial);
  138. AddCMaterialObj(OnAddNewMaterial.newMaterial);
  139. break;
  140. case UIEditorEvent.OnCloseEditor:
  141. Debug.Log("CloseEditor");
  142. this.OnHide();
  143. break;
  144. }
  145. }
  146. protected override void OnInit(IUIData uiData = null)
  147. {
  148. mData = uiData as EditorPanelData ?? new EditorPanelData();
  149. selectObj = null;
  150. selectCMVObj = null;
  151. selectSpoit = null;
  152. dicObjs = new Dictionary<string, List<GameObject>>();
  153. // dicCMVOjbes = new Dictionary<string, List<GameObject>>();
  154. dicSelectBackImage = new Dictionary<string, SelectBJImage>();
  155. RegisterEvent(UIEditorEvent.OnUIOpenElenemt);
  156. RegisterEvent(UIEditorEvent.OnAddSpoitObj);
  157. RegisterEvent(UIEditorEvent.OnSelectObjName);
  158. RegisterEvent(UIEditorEvent.OnSaveDataSetting);
  159. RegisterEvent(UIEditorEvent.OnRemoveDataSetting);
  160. RegisterEvent(UIEditorEvent.OnAddNewMaterial);
  161. RegisterEvent(UIEditorEvent.OnCloseEditor);
  162. Debug.Log(mData.listUpLoadMaterials.Count);
  163. try
  164. {
  165. UIAddMaterial.Initialized(mData.listLocalMaterials, mData.listUpLoadMaterials, SingleMaterial);
  166. UIEditor.Initialized(mData.SceneValue.listSpoit);
  167. UISpoits.Initialized(mData.SceneValue.listSpoit, SpoitBtn, MaterialBtn, UIMaterials);
  168. UISpoits.Hide();
  169. UIMaterials.Hide();
  170. UIEditor.Hide();
  171. // state = true;
  172. }
  173. catch (Exception)
  174. {
  175. ErrorLogPanel.Instance.Show(" UI模块出现未知错误 ");
  176. }
  177. //UIMaterials.Hide();
  178. try
  179. {
  180. List<SpoitValue> listSpoit = new List<SpoitValue>();
  181. mData.SceneValue.listSpoit.ForEach(item =>
  182. {
  183. Debug.Log(item.name + " @@@@#### " + item.material[0].name);
  184. listSpoit.Add(item);
  185. // LoadSpoitObj(item.name, item);
  186. });
  187. SpoitValue spoit = null;
  188. for (int i = 0; i < listSpoit.Count; i++)
  189. {
  190. for (int j = 0; j < listSpoit.Count; j++)
  191. {
  192. if (listSpoit[i].id < listSpoit[j].id)
  193. {
  194. spoit = listSpoit[i];
  195. listSpoit[i] = listSpoit[j];
  196. listSpoit[j] = spoit;
  197. spoit = null;
  198. }
  199. }
  200. }
  201. listSpoit.ForEach(item => { Debug.Log(item.name + " @@@@ " + item.material[0].name); LoadSpoitObj(item.name, item); });
  202. // GameManager.Instance.targetManager.enabled = true;
  203. }
  204. catch (Exception)
  205. {
  206. ErrorLogPanel.Instance.Show(" 初始化场景信息出现错误");
  207. }
  208. }
  209. protected override void OnOpen(IUIData uiData = null)
  210. {
  211. //transform.parent = GameObject.Find("Canvas").transform;
  212. //RectTransform rect = transform.GetComponent<RectTransform>();
  213. //rect.localPosition = Vector3.zero;
  214. //rect.localScale = Vector3.one;
  215. // transform.parent.eulerAngles = new Vector3(30, 0, 0);
  216. }
  217. protected override void OnShow()
  218. {
  219. if (selectSpoit != null)
  220. selectSpoit.SetActive(true);
  221. }
  222. protected override void OnHide()
  223. {
  224. //foreach (var item in dicObjs)
  225. //{
  226. // item.Value[0].SetActive(false);
  227. //}
  228. //if (selectSpoit != null)
  229. // selectSpoit.SetActive(false);
  230. gameObject.SetActive(false);
  231. }
  232. protected override void OnClose()
  233. {
  234. }
  235. public void OpenElenemt(bool state)
  236. {
  237. if (state)
  238. {
  239. UIEditor.Show();
  240. UIAddMaterial.Close();
  241. }
  242. else
  243. {
  244. UIEditor.Close();
  245. UIAddMaterial.Show();
  246. }
  247. }
  248. public void FirstOnShow()
  249. {
  250. UIMaterials.Show();
  251. UIEditor.Show();
  252. }
  253. /// <summary>
  254. /// 加载景点
  255. /// </summary>
  256. /// <param name="name"></param>
  257. /// <param name="spoit"></param>
  258. public void LoadSpoitObj(string name, SpoitValue spoit)
  259. {
  260. dicObjs.Add(spoit.name, new List<GameObject>());
  261. GameObject target = new GameObject(spoit.name + "Target");
  262. GameObject targetShow = new GameObject("TargetShowObj");
  263. GameObject spoitObj = new GameObject(spoit.name);
  264. spoitObj.transform.parent = target.transform;
  265. spoitObj.transform.LocalIdentity();
  266. targetShow.transform.parent = target.transform;
  267. targetShow.transform.LocalIdentity();
  268. VuforialTargetMove vuforialTarget = target.AddComponent<VuforialTargetMove>();
  269. vuforialTarget.isClose = true;
  270. vuforialTarget.showObjs.Add(spoitObj.transform);
  271. vuforialTarget.listObjs.Add(targetShow.AddComponent<TargetShowObj>());
  272. VuforialControl.Instance.list_Target.Add(vuforialTarget);
  273. SetObjMaterial(spoitObj, spoit.spoitTf);
  274. dicObjs[spoit.name].Add(spoitObj);
  275. List<CMaterialValueShow> allMaterial = new List<CMaterialValueShow>();
  276. spoit.material.ForEach(item =>
  277. {
  278. Debug.Log(item.name);
  279. LoadCMaterialObj(item, spoitObj);
  280. });
  281. spoitObj.SetActive(false);
  282. Debug.Log(spoit.name + "AAA");
  283. //SelectedObj(name, spoit.Name);
  284. }
  285. /// <summary>
  286. /// 加载组合素材
  287. /// </summary>
  288. /// <param name="cMValue"></param>
  289. /// <param name="spoitObj"></param>
  290. public void LoadCMaterialObj(CompositeMaterialValue cMValue, GameObject spoitObj)
  291. {
  292. GameObject cMVObj = new GameObject(cMValue.name);
  293. cMVObj.transform.parent = spoitObj.transform;
  294. cMVObj.transform.Identity();
  295. SetObjMaterial(cMVObj, cMValue.objectTransform);
  296. CMaterialValueShow cMVShow = cMVObj.AddComponent<CMaterialValueShow>();
  297. cMVShow.spoitname = spoitObj.name;
  298. cMVShow.cMValue = cMValue;
  299. // Debug.Log(cMVShow.name);
  300. dicObjs[spoitObj.name].Add(cMVObj);
  301. }
  302. //public void LoadMaterialObj(MaterialObjValue item, GameObject spoitObj)
  303. //{
  304. // var loader = ResLoader.Allocate();
  305. // switch (item.type)
  306. // {
  307. // case MaterialType.Text:
  308. // StreamReader streamReader = new StreamReader(Application.streamingAssetsPath + item.DownloadPath);
  309. // string str = streamReader.ReadToEnd();
  310. // var mText = loader.LoadSync<GameObject>("Resources/Template/Prefab/Text");
  311. // GameObject objText = mText.Instantiate();
  312. // objText.GetComponent<SetTextV>().SetText(str);
  313. // objText.transform.SetParent(spoitObj.transform);
  314. // objText.name = item.name;
  315. // dicObjs[spoitObj.name].Add(objText);
  316. // SetObjMaterial(objText, item.objectTransform);
  317. // break;
  318. // case MaterialType.Image:
  319. // Sprite sprite = loader.LoadSync<Sprite>(item.DownloadPath);
  320. // var image = loader.LoadSync<GameObject>("Resources/Template/Prefab/Image");
  321. // GameObject obj = image.Instantiate();
  322. // obj.GetComponent<SetImageV>().SetImage(sprite);
  323. // obj.transform.SetParent(spoitObj.transform);
  324. // obj.name = item.name;
  325. // dicObjs[spoitObj.name].Add(obj);
  326. // SetObjMaterial(obj, item.objectTransform);
  327. // break;
  328. // case MaterialType.Video:
  329. // var video = loader.LoadSync<GameObject>("Resources/Template/Prefab/Video");
  330. // GameObject objVideo = video.Instantiate();
  331. // objVideo.GetComponent<VideoControl>().VideoURL = item.DownloadPath;
  332. // objVideo.transform.SetParent(spoitObj.transform);
  333. // objVideo.name = item.name;
  334. // dicObjs[spoitObj.name].Add(objVideo);
  335. // SetObjMaterial(objVideo, item.objectTransform);
  336. // break;
  337. // case MaterialType.Model:
  338. // var model = loader.LoadSync<GameObject>(item.DownloadPath);
  339. // GameObject objModel = model.Instantiate();
  340. // objModel.transform.SetParent(spoitObj.transform);
  341. // objModel.name = item.name;
  342. // dicObjs[spoitObj.name].Add(objModel);
  343. // SetObjMaterial(objModel, item.objectTransform);
  344. // break;
  345. // default:
  346. // break;
  347. // }
  348. //}
  349. public void SetObjMaterial(GameObject obj, ObjectTransform objectData)
  350. {
  351. if (objectData == null)
  352. return;
  353. if (objectData.nowScale == Vector3.zero)
  354. {
  355. if (objectData.startScale == Vector3.zero)
  356. objectData.startScale = Vector3.one;
  357. obj.transform.localPosition = Vector3.zero;
  358. obj.transform.localEulerAngles = Vector3.zero;
  359. obj.transform.localScale = Vector3.one;
  360. }
  361. else
  362. {
  363. obj.transform.localPosition = objectData.nowPos;
  364. obj.transform.localEulerAngles = objectData.nowRot;
  365. obj.transform.localScale = objectData.nowScale;
  366. }
  367. }
  368. /// <summary>
  369. /// 选择物体
  370. /// </summary>
  371. /// <param name="name"></param>
  372. /// <param name="spoitName"></param>
  373. public void SelectedObj(string name, string spoitName)
  374. {
  375. if (!dicObjs.ContainsKey(spoitName))
  376. mData.SceneValue.listSpoit.ForEach(item =>
  377. {
  378. Debug.LogError("未找到 景点 " + spoitName);
  379. //if (item.Name == spoitName)
  380. // Loader(name, item);
  381. });
  382. else
  383. {
  384. //int i = 0;
  385. //foreach (var item in dicObjs)
  386. //{
  387. // item.Value[0].SetActive(false);
  388. // if (item.Key == spoitName)
  389. // {
  390. // item.Value[0].SetActive(true);
  391. // item.Value[0].transform.parent.position = GameManager.Instance.listEditorBJs[0].transform.position += new Vector3(0, 0, -0.1f);
  392. // item.Value[0].transform.parent.eulerAngles = new Vector3(item.Value[0].transform.parent.eulerAngles.x, GameManager.Instance.listEditorBJs[0].transform.eulerAngles.y, item.Value[0].transform.parent.eulerAngles.z);
  393. // GameManager.Instance.SetImageBJ(i);
  394. // }
  395. // i++;
  396. //}
  397. dicObjs[spoitName].ForEach(item =>
  398. {
  399. Debug.Log(item.name + " " + name);
  400. if (item.name == name)
  401. {
  402. //Debug.Log(selectObj.name);
  403. //if (selectObj != null && selectObj.name != selectSpoit.name)
  404. //{
  405. //// selectObj.GetComponent<SelectBJImage>().SelectBj.SetActive(false);
  406. //}
  407. if (selectObj != null && dicSelectBackImage.ContainsKey(selectSpoit.name + selectObj.name))
  408. {
  409. dicSelectBackImage[selectSpoit.name + selectObj.name].SelectObj(false);
  410. }
  411. selectSpoit = dicObjs[spoitName][0];
  412. selectObj = item.transform;
  413. if (selectObj.parent.name == selectSpoit.name)
  414. selectCMVObj = item.transform;
  415. else
  416. selectCMVObj = selectObj.parent;
  417. Debug.Log(selectSpoit.name + " " + selectObj.name);
  418. UIEditor.SelectMaterial(item.transform);
  419. if (dicSelectBackImage.ContainsKey(selectSpoit.name + selectObj.name))
  420. {
  421. dicSelectBackImage[selectSpoit.name + selectObj.name].SelectObj(true);
  422. }
  423. //if (selectObj.name != selectSpoit.name)
  424. //{
  425. // // selectObj.GetComponent<SelectBJImage>().SelectBj.SetActive(true);
  426. //}
  427. }
  428. });
  429. //dicObjs[spoitName].ForEach(item =>
  430. //{
  431. // if (item.name == name)
  432. // {
  433. // selectSpoit = dicObjs[spoitName][0];
  434. // selectObj = item.transform;
  435. // UIEditor.SelectMaterial(item.transform);
  436. // }
  437. //});
  438. }
  439. }
  440. public void SelectSpoitObj(string name)
  441. {
  442. // Debug.Log(name + "@@@@@@");
  443. UISpoits.SelectSpoitObj(name);
  444. SelectedObj(name, name);
  445. HttpSocket.Instance.SendIpToPointTrigger(name);
  446. }
  447. /// <summary>
  448. /// 添加组合素材
  449. /// </summary>
  450. /// <param name="value"></param>
  451. public void AddCMaterialObj(CompositeMaterialValue value)
  452. {
  453. if (selectSpoit.IsNull())
  454. return;
  455. UIMaterials.AddMaterial(selectSpoit.name, value, MaterialBtn);
  456. AddData(value);
  457. LoadCMaterialObj(value, selectSpoit);
  458. }
  459. //public void AddMaterialObj(MaterialObjValue value)
  460. //{
  461. // if (selectSpoit.IsNull())
  462. // return;
  463. // LoadMaterialObj(value, selectSpoit);
  464. // UIMaterials.AddMaterial(selectSpoit.name, value, MaterialBtn);
  465. // AddData(value);
  466. //}
  467. //public void SaveData(string name, Vector3 pos, Vector3 rot, Vector3 scale)
  468. //{
  469. // if (selectObj == null)
  470. // return;
  471. // Debug.Log(selectObj.name + " " + name);
  472. // for (int i = 0; i < mData.SceneValue.listSpoit.Count; i++)
  473. // {
  474. // if (mData.SceneValue.listSpoit[i].name == selectSpoit.name)
  475. // {
  476. // if (selectSpoit.name == selectObj.name)
  477. // {
  478. // mData.SceneValue.listSpoit[i].spoitTransform.nowPos = pos;
  479. // mData.SceneValue.listSpoit[i].spoitTransform.nowRot = rot;
  480. // if (scale == Vector3.zero)
  481. // scale = mData.SceneValue.listSpoit[i].spoitTransform.startScale;
  482. // mData.SceneValue.listSpoit[i].spoitTransform.nowScale = scale;
  483. // // mData.SceneValue.listSpoit[i].updateTime = DateTime.Now;
  484. // break;
  485. // }
  486. // else
  487. // {
  488. // for (int j = 0; j < mData.SceneValue.listSpoit[i].listMaterial.Count; j++)
  489. // {
  490. // if (mData.SceneValue.listSpoit[i].listMaterial[j].name == selectObj.name)
  491. // {
  492. // mData.SceneValue.listSpoit[i].listMaterial[j].objectTransform.nowPos = pos;
  493. // mData.SceneValue.listSpoit[i].listMaterial[j].objectTransform.nowRot = rot;
  494. // if (scale == Vector3.zero)
  495. // scale = mData.SceneValue.listSpoit[i].listMaterial[j].objectTransform.startScale;
  496. // mData.SceneValue.listSpoit[i].listMaterial[j].objectTransform.nowScale = scale;
  497. // // mData.SceneValue.listSpoit[i].listMaterial[j].DataTime = DateTime.Now.ToString();
  498. // break;
  499. // }
  500. // }
  501. // }
  502. // }
  503. // }
  504. // GameManager.Instance.Save(mData.SceneValue);
  505. //}
  506. public void SaveData(string name)
  507. {
  508. List<GameObject> list_Material;
  509. list_Material = dicObjs[selectSpoit.name];
  510. Debug.Log(" SelectSpoit Name : " + selectSpoit.name);
  511. // list_Material.ForEach(item =>
  512. //{
  513. // SaveData(item.name, item.transform.localPosition, item.transform.localEulerAngles, item.transform.localScale);
  514. //});
  515. SaveData(list_Material);
  516. GameManager.Instance.Save(mData.SceneValue);
  517. }
  518. /// <summary>
  519. /// 保存数据
  520. /// </summary>
  521. /// <param name="name"> 选中的物体名 </param>
  522. /// <param name="pos"> 位置 </param>
  523. /// <param name="rot"> 旋转 </param>
  524. /// <param name="scale"> 尺寸 </param>
  525. //public void SaveData(string name)
  526. //{
  527. // #region old
  528. // //if (selectObj == null || selectSpoit == null)
  529. // // return;
  530. // //// selectCMVObj = new GameObject("样式测试").transform;
  531. // //Debug.Log(selectObj.name + " " + name + " " + selectCMVObj.name + " " + selectSpoit.name);
  532. // //#region old
  533. // ////for (int i = 0; i < mData.SceneValue.listSpoit.Count; i++)
  534. // ////{
  535. // //// if (mData.SceneValue.listSpoit[i].name == selectSpoit.name)
  536. // //// {
  537. // //// if (selectSpoit.name == selectObj.name)
  538. // //// {
  539. // //// mData.SceneValue.listSpoit[i].spoitTransform.nowPos = pos;
  540. // //// mData.SceneValue.listSpoit[i].spoitTransform.nowRot = rot;
  541. // //// if (scale == Vector3.zero)
  542. // //// scale = mData.SceneValue.listSpoit[i].spoitTransform.startScale;
  543. // //// mData.SceneValue.listSpoit[i].spoitTransform.nowScale = scale;
  544. // //// // mData.SceneValue.listSpoit[i].updateTime = DateTime.Now;
  545. // //// break;
  546. // //// }
  547. // //// else
  548. // //// {
  549. // //// for (int j = 0; j < mData.SceneValue.listSpoit[i].listMaterial.Count; j++)
  550. // //// {
  551. // //// if (mData.SceneValue.listSpoit[i].listMaterial[j].name == selectObj.name)
  552. // //// {
  553. // //// mData.SceneValue.listSpoit[i].listMaterial[j].objectTransform.nowPos = pos;
  554. // //// mData.SceneValue.listSpoit[i].listMaterial[j].objectTransform.nowRot = rot;
  555. // //// if (scale == Vector3.zero)
  556. // //// scale = mData.SceneValue.listSpoit[i].listMaterial[j].objectTransform.startScale;
  557. // //// mData.SceneValue.listSpoit[i].listMaterial[j].objectTransform.nowScale = scale;
  558. // //// // mData.SceneValue.listSpoit[i].listMaterial[j].DataTime = DateTime.Now.ToString();
  559. // //// break;
  560. // //// }
  561. // //// }
  562. // //// }
  563. // //// }
  564. // //#endregion
  565. // //SpoitValue spoitValue = null;
  566. // //for (int i = 0; i < mData.SceneValue.listSpoit.Count; i++)
  567. // //{
  568. // // if (mData.SceneValue.listSpoit[i].name == selectSpoit.name)
  569. // // {
  570. // // if (selectSpoit.name == selectObj.name) // 保存的是景点属性
  571. // // {
  572. // // mData.SceneValue.listSpoit[i].spoitTf.nowPos = pos;
  573. // // mData.SceneValue.listSpoit[i].spoitTf.nowRot = rot;
  574. // // if (scale == Vector3.zero)
  575. // // scale = mData.SceneValue.listSpoit[i].spoitTf.startScale;
  576. // // mData.SceneValue.listSpoit[i].spoitTf.nowScale = scale;
  577. // // // mData.SceneValue.listSpoit[i].updateTime = DateTime.Now;
  578. // // break;
  579. // // }
  580. // // spoitValue = mData.SceneValue.listSpoit[i];
  581. // // break;
  582. // // }
  583. // //}
  584. // //if (spoitValue != null)
  585. // //{
  586. // // for (int i = 0; i < spoitValue.material.Count; i++)
  587. // // {
  588. // // if (spoitValue.material[i].name == selectCMVObj.name)
  589. // // {
  590. // // if (spoitValue.material[i].name == selectObj.name)
  591. // // {
  592. // // spoitValue.material[i].objectTransform.nowPos = pos;
  593. // // spoitValue.material[i].objectTransform.nowRot = rot;
  594. // // if (scale == Vector3.zero)
  595. // // scale = spoitValue.material[i].objectTransform.startScale;
  596. // // spoitValue.material[i].objectTransform.nowScale = scale;
  597. // // break;
  598. // // }
  599. // // for (int j = 0; j < spoitValue.material[i].materialList.Count; j++)
  600. // // {
  601. // // if (spoitValue.material[i].materialList[j].name == selectObj.name)
  602. // // {
  603. // // spoitValue.material[i].materialList[j].ObjectTransform.nowPos = pos;
  604. // // spoitValue.material[i].materialList[j].ObjectTransform.nowRot = rot;
  605. // // if (scale == Vector3.zero)
  606. // // scale = spoitValue.material[i].materialList[j].ObjectTransform.startScale;
  607. // // spoitValue.material[i].materialList[j].ObjectTransform.nowScale = scale;
  608. // // break;
  609. // // }
  610. // // }
  611. // // break;
  612. // // }
  613. // // }
  614. // // for (int i = 0; i < mData.SceneValue.listSpoit.Count; i++)
  615. // // {
  616. // // if (mData.SceneValue.listSpoit[i].name == spoitValue.name)
  617. // // {
  618. // // mData.SceneValue.listSpoit[i] = spoitValue;
  619. // // break;
  620. // // }
  621. // // }
  622. // //}
  623. // //GameManager.Instance.Save(mData.SceneValue);
  624. // #endregion
  625. //}
  626. private void SaveData(List<GameObject> list_Material)
  627. {
  628. SpoitValue spoitValue = null;
  629. for (int i = 0; i < mData.SceneValue.listSpoit.Count; i++)
  630. {
  631. if (mData.SceneValue.listSpoit[i].name == selectSpoit.name)
  632. {
  633. if (mData.SceneValue.listSpoit[i].spoitTf == null)
  634. mData.SceneValue.listSpoit[i].spoitTf = new ObjectTransform();
  635. Debug.Log(" 景点已保存 " + list_Material[0].name + " "+list_Material[0].transform.localPosition);
  636. mData.SceneValue.listSpoit[i].spoitTf.nowPos = list_Material[0].transform.localPosition;
  637. mData.SceneValue.listSpoit[i].spoitTf.nowRot = list_Material[0].transform.localEulerAngles;
  638. if (list_Material[0].transform.localScale == Vector3.zero)
  639. list_Material[0].transform.localScale = mData.SceneValue.listSpoit[i].spoitTf.startScale;
  640. mData.SceneValue.listSpoit[i].spoitTf.nowScale = list_Material[0].transform.localScale;
  641. // mData.SceneValue.listSpoit[i].updateTime = DateTime.Now;
  642. spoitValue = mData.SceneValue.listSpoit[i];
  643. break;
  644. }
  645. }
  646. Transform material;
  647. Debug.Log(" ****** " + spoitValue.name);
  648. if (spoitValue != null)
  649. {
  650. for (int i = 0; i < spoitValue.material.Count; i++)
  651. {
  652. material = FindMaterial(list_Material, spoitValue.material[i].name);
  653. if (material != null)
  654. {
  655. Debug.Log(" 组合素材已保存 ");
  656. spoitValue.material[i].objectTransform.nowPos = material.localPosition;
  657. spoitValue.material[i].objectTransform.nowRot = material.localEulerAngles;
  658. spoitValue.material[i].objectTransform.nowScale = material.localScale;
  659. }
  660. for (int j = 0; j < spoitValue.material[i].materialList.Count; j++)
  661. {
  662. material = FindMaterial(list_Material, spoitValue.material[i].materialList[j].name);
  663. if (material != null)
  664. {
  665. Debug.Log(" 素材已保存 ");
  666. spoitValue.material[i].materialList[j].ObjectTransform.nowPos = material.localPosition;
  667. spoitValue.material[i].materialList[j].ObjectTransform.nowRot = material.localEulerAngles;
  668. spoitValue.material[i].materialList[j].ObjectTransform.nowScale = material.localScale;
  669. }
  670. }
  671. }
  672. }
  673. }
  674. private Transform FindMaterial(List<GameObject> list_Material, string name)
  675. {
  676. for (int i = 1; i < list_Material.Count; i++)
  677. {
  678. Debug.Log(list_Material[i].name + " " + name);
  679. if (list_Material[i].name == name)
  680. return list_Material[i].transform;
  681. }
  682. return null;
  683. }
  684. //public void RemoveData()
  685. //{
  686. // if (selectObj == null)
  687. // return;
  688. // if (selectSpoit.name == selectObj.name)
  689. // return;
  690. // for (int i = 0; i < mData.SceneValue.listSpoit.Count; i++)
  691. // {
  692. // if (mData.SceneValue.listSpoit[i].name == selectSpoit.name)
  693. // {
  694. // if (selectSpoit.name == selectObj.name)
  695. // {
  696. // mData.SceneValue.listSpoit.Remove(mData.SceneValue.listSpoit[i]);
  697. // break;
  698. // }
  699. // else
  700. // {
  701. // for (int j = 0; j < mData.SceneValue.listSpoit[i].listMaterial.Count; j++)
  702. // {
  703. // if (mData.SceneValue.listSpoit[i].listMaterial[j].name == selectObj.name)
  704. // {
  705. // mData.SceneValue.listSpoit[i].listMaterial.Remove(mData.SceneValue.listSpoit[i].listMaterial[j]);
  706. // break;
  707. // }
  708. // }
  709. // }
  710. // }
  711. // }
  712. // selectObj.gameObject.SetActive(false);
  713. // selectObj = null;
  714. // UIMaterials.RemoveMaterials();
  715. // GameManager.Instance.Save(mData.SceneValue);
  716. //}
  717. /// <summary>
  718. /// 移除选中数据
  719. /// </summary>
  720. public void RemoveData()
  721. {
  722. if (selectObj == null)
  723. return;
  724. if (selectSpoit.name == selectObj.name)
  725. return;
  726. SpoitValue spoitValue = null;
  727. for (int i = 0; i < mData.SceneValue.listSpoit.Count; i++)
  728. {
  729. if (mData.SceneValue.listSpoit[i].name == selectSpoit.name)
  730. {
  731. //if (selectSpoit.name == selectObj.name)
  732. //{
  733. // mData.SceneValue.listSpoit.Remove(mData.SceneValue.listSpoit[i]);
  734. // break;
  735. //}
  736. spoitValue = mData.SceneValue.listSpoit[i];
  737. break;
  738. }
  739. }
  740. if (spoitValue != null)
  741. {
  742. for (int i = 0; i < spoitValue.material.Count; i++)
  743. {
  744. if (spoitValue.material[i].name == selectObj.name)
  745. {
  746. spoitValue.material.Remove(spoitValue.material[i]);
  747. break;
  748. }
  749. for (int j = 0; j < spoitValue.material[i].materialList.Count; j++)
  750. {
  751. if (spoitValue.material[i].materialList[j].name == selectObj.name)
  752. {
  753. spoitValue.material[i].materialList.Remove(spoitValue.material[i].materialList[j]);
  754. break;
  755. }
  756. }
  757. }
  758. for (int i = 0; i < mData.SceneValue.listSpoit.Count; i++)
  759. {
  760. if (mData.SceneValue.listSpoit[i].name == spoitValue.name)
  761. {
  762. mData.SceneValue.listSpoit[i] = spoitValue;
  763. break;
  764. }
  765. }
  766. }
  767. UIMaterials.RemoveMaterials(selectSpoit.name + selectObj.name);
  768. selectObj.gameObject.SetActive(false);
  769. selectObj = null;
  770. GameManager.Instance.Save(mData.SceneValue);
  771. }
  772. //public void AddData(MaterialObjValue value)
  773. //{
  774. // for (int i = 0; i < mData.SceneValue.listSpoit.Count; i++)
  775. // {
  776. // if(mData.SceneValue.listSpoit[i].name == selectObj.name)
  777. // {
  778. // mData.SceneValue.listSpoit[i].listMaterial.Add(value);
  779. // GameManager.Instance.Save(mData.SceneValue);
  780. // break;
  781. // }
  782. // }
  783. //}
  784. /// <summary>
  785. /// 新添加数据
  786. /// </summary>
  787. /// <param name="value"></param>
  788. public void AddData(CompositeMaterialValue value)
  789. {
  790. for (int i = 0; i < mData.SceneValue.listSpoit.Count; i++)
  791. {
  792. if (mData.SceneValue.listSpoit[i].name == selectObj.name)
  793. {
  794. Debug.Log(JsonMapper.ToJson(mData.SceneValue.listSpoit[i]));
  795. mData.SceneValue.listSpoit[i].material.Add(value);
  796. Debug.Log(JsonMapper.ToJson(mData.SceneValue.listSpoit[i]));
  797. GameManager.Instance.Save(mData.SceneValue);
  798. break;
  799. }
  800. }
  801. }
  802. }
  803. }