ModelItem.cs 6.7 KB

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