|
@@ -1,4 +1,4 @@
|
|
|
-using SC.XR.Unity;
|
|
|
+using SC.XR.Unity;
|
|
|
using System.Collections;
|
|
|
using System.Collections.Generic;
|
|
|
using UnityEngine;
|
|
@@ -151,6 +151,140 @@ public class DRTitleLayout : MonoBehaviour
|
|
|
return objectValues;
|
|
|
}
|
|
|
|
|
|
+ public static void CalLayout(ModelList materialObls, GameObject par)
|
|
|
+ {
|
|
|
+ BaseTemPlate text = new BaseTemPlate();
|
|
|
+ ModelItem textmat = null;
|
|
|
+ List<BaseTemPlate> noText = new List<BaseTemPlate>();
|
|
|
+ List<ObjectValue> objectValues = new List<ObjectValue>();
|
|
|
+ if (materialObls.materialList != null || materialObls.materialList.Count > 0)
|
|
|
+ for (int i = 0; i < materialObls.materialList.Count; i++)
|
|
|
+ {
|
|
|
+ var mat = materialObls.materialList[i];
|
|
|
+ GameObject go = null;
|
|
|
+ switch (mat.type)
|
|
|
+ {
|
|
|
+ case (int)MaterialType.None:
|
|
|
+ break;
|
|
|
+ case (int)MaterialType.Image:
|
|
|
+ var pImage = ResMgr.Instance.Load<GameObject>("Template/Prefab/Image");
|
|
|
+ go = Instantiate(pImage, par.transform);
|
|
|
+ var imageitem = go.AddComponent<TemplateImage>();
|
|
|
+ go.SetActive(true);
|
|
|
+
|
|
|
+ noText.Add(imageitem);
|
|
|
+ break;
|
|
|
+ case (int)MaterialType.Video:
|
|
|
+ var pVideo = ResMgr.Instance.Load<GameObject>("Template/Prefab/Video");
|
|
|
+ go = Instantiate(pVideo, par.transform);
|
|
|
+ var videoitem = go.AddComponent<TemplateVideo>();
|
|
|
+ go.SetActive(true);
|
|
|
+
|
|
|
+ noText.Add(videoitem);
|
|
|
+ break;
|
|
|
+ case (int)MaterialType.Text:
|
|
|
+ textmat = mat;
|
|
|
+ var pText = ResMgr.Instance.Load<GameObject>("Template/Prefab/Text");
|
|
|
+ go = Instantiate(pText, par.transform);
|
|
|
+ var textitem = go.AddComponent<TemplateText>();
|
|
|
+ go.SetActive(true);
|
|
|
+
|
|
|
+ text = textitem;
|
|
|
+ go.SetActive(false);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (go != null)
|
|
|
+ {
|
|
|
+ go.name = string.IsNullOrWhiteSpace(mat.name) ? par.name + "-" + i.ToString() : mat.name;
|
|
|
+ go.AddComponent<EditorEventHandler>().Type = (MaterialType)(mat.type);
|
|
|
+
|
|
|
+ if (materialObls.select)
|
|
|
+ {
|
|
|
+ go.transform.localPosition = mat.objectTransform.nowPos;
|
|
|
+ go.transform.localEulerAngles = mat.objectTransform.nowRot;
|
|
|
+ go.transform.localScale = mat.objectTransform.nowScale;
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ go.transform.localEulerAngles = Vector3.zero;
|
|
|
+ go.transform.localScale = new Vector3(1, 1, 1);
|
|
|
+
|
|
|
+ if (mat.type != (int)MaterialType.Text)
|
|
|
+ {
|
|
|
+ go.transform.localPosition = Vector3.zero;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+
|
|
|
+ if (mat.textPosition == "top")
|
|
|
+ {
|
|
|
+ go.transform.localPosition = new Vector3(0, 0.3f, 0);
|
|
|
+ }
|
|
|
+ else if (mat.textPosition == "bottom")
|
|
|
+ {
|
|
|
+ go.transform.localPosition = new Vector3(0, -0.3f, 0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ mat.objectTransform.SetStartValue(go.transform.localPosition, go.transform.localEulerAngles, go.transform.localScale);
|
|
|
+ }
|
|
|
+
|
|
|
+ ObjectValue objectValue = new ObjectValue(i, materialObls.id, mat.name, go);
|
|
|
+ objectValues.Add(objectValue);
|
|
|
+
|
|
|
+ mat.prefabModel = go;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ #region 需要判断是否是第一次编辑坐标,若是则执行下方代码,不是则直接返回
|
|
|
+
|
|
|
+ if (!materialObls.select)
|
|
|
+ {
|
|
|
+ var count = noText.Count;
|
|
|
+ switch (count)
|
|
|
+ {
|
|
|
+ case 2:
|
|
|
+ Column_2(noText, 2, par);
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ Column_3(noText);
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ Column_2(noText, 4, par);
|
|
|
+ break;
|
|
|
+ case 5:
|
|
|
+ Column_5(noText, par);
|
|
|
+ break;
|
|
|
+ case 6:
|
|
|
+ Column_2(noText, 6, par);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ for (int i = 0; i < objectValues.Count; i++)
|
|
|
+ {
|
|
|
+ objectValues[i].InitTransform();
|
|
|
+ objectValues[i].Object.SetActive(true);
|
|
|
+ var go = objectValues[i].Object;
|
|
|
+ materialObls.materialList[objectValues[i].ID].objectTransform.SetStartValue(go.transform.localPosition, go.transform.localEulerAngles, go.transform.localScale);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (textmat != null)
|
|
|
+ {
|
|
|
+ text.gameObject.SetActive(true);
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
private static void Column_2(List<BaseTemPlate> data, int colum, GameObject game)
|
|
|
{
|
|
|
var scgrid = game.AddComponent<SCGridLayoutGroup>();
|