1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using UnityEngine;
- namespace CommonUnity3D.UGUI
- {
- public class DisplayRoot : DisplayNode
- {
- private Canvas mCanvas;
- private RectTransform mCanvasTransform;
- public Canvas RootCanvas { get { return mCanvas; } }
- private CavaseMonoBehaviour canvasBehaviour;
- public DisplayRoot(Canvas canvas, string name = "") : base(name)
- {
- this.mCanvas = canvas;
- this.mCanvasTransform = canvas.GetComponent<RectTransform>();
- this.mTransform.SetParent(canvas.gameObject.transform);
- this.mGameObject.SetActive(true);
- this.EnableChildren = true;
- this.mTransform.localScale = Vector3.one;
- this.mTransform.localRotation = Quaternion.identity;
- this.UpdateSize();
- canvasBehaviour = canvas.gameObject.AddComponent<CavaseMonoBehaviour>();
- canvasBehaviour.displayRoot = this;
- }
- public void OnRectTransformDimensionsChange()
- {
- //Debug.Log("RootCanvase OnRectTransformDimensionsChange " + Time.frameCount);
- UpdateSize();
- }
-
- protected override DisplayNodeBehaviour GenNodeBehavior()
- {
- return this.mGameObject.AddComponent<DisplayRootBehaviour>();
- }
- internal override void InternalUpdate()
- {
- // do not update from parent
- }
- internal void ForceUpdate()
- {
- //Debug.Log("ForceUpdate " + Time.frameCount);
- //this.UpdateSize();
- base.InternalUpdate();
- DisplayNode.FuckFuckList();
- }
- protected void UpdateSize()
- {
- {
- mTransform.sizeDelta = mCanvasTransform.sizeDelta;
- mTransform.localPosition = Vector3.zero;
- //mTransform.position = new Vector3(0, mCanvasTransform.sizeDelta.y, 0);
- mTransform.localScale = Vector3.one;
- mTransform.localRotation = Quaternion.identity;
- mTransform.anchoredPosition = Vector2.zero;
- }
- }
- public UnityEngine.Canvas Canvas { get { return mCanvas; } }
- }
- public class DisplayRootBehaviour : DisplayNodeBehaviour
- {
- void Update()
- {
- (mBinding as DisplayRoot).ForceUpdate();
- }
- }
- internal class CavaseMonoBehaviour : MonoBehaviour
- {
- public DisplayRoot displayRoot;
- void OnRectTransformDimensionsChange()
- {
- displayRoot.OnRectTransformDimensionsChange();
- }
-
- }
- }
|