123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using UnityEngine;
- using UnityEngine.UI;
- [DisallowMultipleComponent]
- [ExecuteInEditMode, RequireComponent(typeof(CanvasRenderer), typeof(RectTransform))]
- public class DragonBoneGraphic : MaskableGraphic
- {
- private Material OriginMaterial;
- public Mesh SharedMesh
- {
- get { return sharedMesh; }
- }
- public Mesh sharedMesh;
- private Texture _texture;
- public override Texture mainTexture
- {
- get { return _texture == null ? material.mainTexture : _texture; }
- }
- private MaskableGraphic maskableGraphic;
- public Transform parent;
- public Transform copyTrans;
- /// <summary>
- /// Texture to be used.
- /// </summary>
- public Texture texture
- {
- get { return _texture; }
- set
- {
- if (_texture == value)
- {
- return;
- }
- _texture = value;
- SetMaterialDirty();
- }
- }
- public void Disable()
- {
- DestroyImmediate(gameObject);
- //material = OriginMaterial;
- }
- public void Enable(Transform parent, Transform copyTrans, MeshFilter meshFilter, MeshRenderer meshRenderer)
- {
- this.parent = parent;
- this.copyTrans = copyTrans;
- if (meshRenderer.sharedMaterial != null)
- {
- sharedMesh = meshFilter.sharedMesh;
- }
- OriginMaterial = material;
- material = Lib.DragonboneUGUIMat;
- if (meshRenderer.sharedMaterial != null)
- {
- material.mainTexture = meshRenderer.sharedMaterial.mainTexture;
- texture = material.mainTexture;
- }
- }
- protected override void OnPopulateMesh(VertexHelper vh)
- {
- vh.Clear();
- }
- public override void Rebuild(CanvasUpdate update)
- {
- base.Rebuild(update);
- if (canvasRenderer.cull)
- {
- return;
- }
- if (update == CanvasUpdate.PreRender)
- {
- canvasRenderer.SetMesh(SharedMesh);
- }
- }
- public void Update()
- {
- if (copyTrans == null)
- {
- DestroyImmediate(gameObject);
- return;
- }
- if (copyTrans.gameObject.activeInHierarchy == false)
- {
- gameObject.SetActive(false);
- }
- int siblingIndex = transform.GetSiblingIndex();
- transform.SetParent(copyTrans.parent);
- transform.localPosition = copyTrans.localPosition;
- transform.localRotation = copyTrans.localRotation;
- transform.localScale = copyTrans.localScale;
- transform.SetParent(parent);
- transform.SetSiblingIndex(siblingIndex);
- canvasRenderer.SetMesh(SharedMesh);
- }
- }
|