ModelItem.cs 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. using SC.XR.Unity.Module_InputSystem;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using UnityEngine;
  6. using UnityEngine.UI;
  7. using XRTool.Util;
  8. public enum ModelType
  9. {
  10. Image,
  11. Video,
  12. ABModel,
  13. Text,
  14. scene = -1,
  15. vuforial = -2,
  16. }
  17. public class ModelItem
  18. {
  19. public int updateTime { get; set; }
  20. //WEB端排版
  21. public string template { get; set; }
  22. //模型所在组合素材内
  23. public GameObject modelList;
  24. public GameObject prefabModel;
  25. public GameObject _model;
  26. //模型数据
  27. public GameObject Model
  28. {
  29. get {
  30. if(_model==null)
  31. {
  32. _model = new GameObject(name);
  33. _model.transform.parent = modelList.transform;
  34. // _model.transform.localPosition = getInfoPos();
  35. // _model.transform.localEulerAngles = getInfoEul();
  36. Debug.Log(" ModelName>>>> " + name + " Type " + type);
  37. }
  38. return _model; }
  39. }
  40. public void init()
  41. {
  42. Debug.LogError("ModelItem Init");
  43. if (modelType != ModelType.Text)
  44. LoadManager.Instance.load(this, (float f) =>
  45. {
  46. //显示加载
  47. }, (GameObject obj) =>
  48. {
  49. _model = prefabModel;
  50. obj.name ="加载出来的模型-----"+ obj.name;
  51. // obj.transform.parent = _model.transform;
  52. // obj.transform.localPosition = getInfoPos();
  53. // obj.transform.localEulerAngles = getInfoEul();
  54. });
  55. // else
  56. // SetData(null);
  57. }
  58. //模型地址
  59. public string url;
  60. //模型类型
  61. public ModelType modelType;
  62. ////模型原始信息
  63. //public string info;
  64. //模型版本
  65. public string Version { get; set; }
  66. Vector3 getInfoPos()
  67. {
  68. Debug.Log("初始化坐标===》"+ prefabModel.transform.localPosition);
  69. if (prefabModel.transform.localPosition != Vector3.zero)
  70. {
  71. return prefabModel.transform.localPosition;
  72. }
  73. if (prefabModel == null || objectTransform.nowPos==null)
  74. return Vector3.zero;
  75. Debug.Log("获取modelItem坐标==》"+prefabModel.name+ objectTransform.nowPos);
  76. //return Vector3.zero;
  77. if (objectTransform.nowPos == Vector3.zero&& prefabModel.transform.localPosition!=Vector3.zero)
  78. return objectTransform.startPos;
  79. else
  80. return objectTransform.nowPos;
  81. }
  82. Vector3 getInfoEul()
  83. {
  84. if (prefabModel.transform.localEulerAngles != Vector3.zero)
  85. {
  86. return prefabModel.transform.localEulerAngles;
  87. }
  88. if (prefabModel == null || objectTransform.nowPos == null)
  89. return Vector3.zero;
  90. if (objectTransform.nowRot == Vector3.zero && prefabModel.transform.localEulerAngles != Vector3.zero)
  91. return objectTransform.startRot;
  92. else
  93. return objectTransform.nowRot;
  94. // return Vector3.zero;
  95. }
  96. Vector3 getInfoScale()
  97. {
  98. if (prefabModel.transform.localScale != Vector3.zero&& prefabModel.transform.localScale != Vector3.one)
  99. {
  100. return prefabModel.transform.localScale;
  101. }
  102. if ( objectTransform.nowPos == null)
  103. return Vector3.one;
  104. if (objectTransform.nowScale == Vector3.zero)
  105. return objectTransform.startScale;
  106. else
  107. return objectTransform.nowScale;
  108. }
  109. //模型id
  110. public string uid { get; set; }
  111. //模型name
  112. public string name { get; set; }
  113. /// <summary>
  114. /// 模型类型
  115. /// </summary>
  116. public int type { get; set; }
  117. /// <summary>
  118. /// 文本内容
  119. /// </summary>
  120. public string textContent { get; set; }
  121. /// <summary>
  122. /// 文本框背景
  123. /// </summary>
  124. public string TextBJ { get; set; }
  125. public string textPosition { get; set; }
  126. /// <summary>
  127. /// 下载地址
  128. /// </summary>
  129. public string DownloadPath { get; set; }
  130. /// <summary>
  131. /// 本地保存地址
  132. /// </summary>
  133. public string localSavePath { get; set; }
  134. /// <summary>
  135. /// 坐标
  136. /// </summary>
  137. public ObjectTransform objectTransform { get; set; }
  138. public int fileId { get; set; }
  139. public int id { get; set; }
  140. Timer itemI;
  141. public void init(GameObject modelList)
  142. {
  143. switch (type)
  144. {
  145. case 1: // 图片
  146. modelType = ModelType.Image;
  147. break;
  148. case 2: // 视频
  149. modelType = ModelType.Video;
  150. break;
  151. case 3: // 模型
  152. modelType = ModelType.ABModel;
  153. break;
  154. case 4: // 文字
  155. modelType = ModelType.Text;
  156. break;
  157. default:
  158. Debug.LogError(name + " 素材结构类型异常!!!");
  159. break;
  160. }
  161. if (type == 0)
  162. return;
  163. url = DownloadPath;
  164. Debug.Log(url);
  165. this.modelList = modelList;
  166. if (Version == null)
  167. Version = Application.version.ToString();
  168. init();
  169. // if (Model != null)
  170. // Debug.Log(" 添加模型 " + name);
  171. }
  172. public void SetData(byte[] data)
  173. {
  174. if(data ==null && modelType!= ModelType.Video)
  175. {
  176. Debug.LogError(name + " 未下载完成 !!!!!");
  177. }
  178. switch (modelType)
  179. {
  180. case ModelType.Image:
  181. Texture2D texture = new Texture2D(1, 1);
  182. texture.LoadImage(data);
  183. Debug.Log(" LoadManager " + texture.width+"_"+ texture.height);
  184. Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.one * 0.5f);
  185. TemplateImage tlimg = prefabModel.GetComponent<TemplateImage>();
  186. Texture2D tex = texture;
  187. if (tex.height > tex.width)
  188. {
  189. float bl =((float)tex.height / (float)tex.width);
  190. tlimg.transform.Find("Canvas").GetComponent<RectTransform>().sizeDelta = new Vector2(500 / bl, 500);
  191. }
  192. else
  193. {
  194. float bl = ((float)tex.width / (float)tex.height);
  195. tlimg.transform.Find("Canvas").GetComponent<RectTransform>().sizeDelta = new Vector2(500, 500 / bl);
  196. }
  197. tlimg.M_Image.sprite = sprite;
  198. break;
  199. case ModelType.Video:
  200. Debug.Log(" DownloadPath " + DownloadPath);
  201. // prefabModel.GetComponent<TemplateVideo>().SetData(HttpAction.baseurvideo + DownloadPath);
  202. prefabModel.GetComponent<TemplateVideo>().SetData(Application.persistentDataPath+"/Material/"+Path.GetFileName(DownloadPath));
  203. break;
  204. case ModelType.ABModel:
  205. AssetBundle assetBundle = AssetBundle.LoadFromMemory(data);
  206. Debug.Log(data.Length);
  207. prefabModel.GetComponent<TemplateModel>().LoadModel(assetBundle);
  208. break;
  209. case ModelType.Text:
  210. Debug.Log("HJJTEST ModelType.Text " + DownloadPath);
  211. prefabModel.GetComponent<TemplateText>().SetData(textContent, TextBJ);
  212. break;
  213. default:
  214. break;
  215. }
  216. }
  217. public void initModelObj()
  218. {
  219. if (getInfoPos() != Vector3.zero)
  220. {
  221. prefabModel.transform.localPosition = getInfoPos();
  222. }
  223. if (getInfoEul() != Vector3.zero)
  224. {
  225. prefabModel.transform.localEulerAngles = getInfoEul();
  226. }
  227. if (getInfoEul() != Vector3.zero)
  228. {
  229. prefabModel.transform.localScale = getInfoScale();
  230. }
  231. // prefabModel.transform.localPosition = getInfoPos();
  232. // prefabModel.transform.localEulerAngles = getInfoEul();
  233. switch (modelType)
  234. {
  235. case ModelType.Text:
  236. prefabModel.GetComponent<TemplateText>().SetData(textContent, TextBJ);
  237. Debug.Log(" ddddddddddddddddddddd"+prefabModel.name);
  238. break;
  239. default:
  240. break;
  241. }
  242. }
  243. }