Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #if UNITY_EDITOR
- using System;
- #endif
- using UnityEngine;
- public class Test : MonoBehaviour
- {
- public GameObject m_item;
- #if UNITY_EDITOR
- private GameObject currentItem;
- private SpriteRenderer[] cachedRenderers;
- private GUIOps[] ops;
- private void OnDrawGizmos()
- {
- if (currentItem != m_item)
- {
- currentItem = m_item;
- cachedRenderers = null;
- }
- // Cache renderers
- if ((cachedRenderers == null || ops == null) && currentItem != null)
- {
- cachedRenderers = currentItem.GetComponentsInChildren<SpriteRenderer>(true);
- ops = new GUIOps[cachedRenderers.Length];
- for (int i = 0; i != cachedRenderers.Length; i++)
- {
- SpriteRenderer cachedRenderer = cachedRenderers[i];
- Sprite sprite = cachedRenderer.sprite;
- Texture2D croppedTexture = new Texture2D((int)sprite.textureRect.width, (int)sprite.textureRect.height, TextureFormat.ARGB32, false);
- Color[] pixels = sprite.texture.GetPixels(
- (int)sprite.textureRect.x,
- (int)sprite.textureRect.y,
- (int)sprite.textureRect.width,
- (int)sprite.textureRect.height
- );
- Array.Reverse(pixels);
- croppedTexture.SetPixels(pixels);
- croppedTexture.Apply();
- Vector3 size = Vector3.Scale(cachedRenderer.bounds.size, cachedRenderer.transform.lossyScale);
- ops[i] = new GUIOps
- {
- screenRect = new Rect(cachedRenderer.bounds.center - (size/2), size),
- texture = croppedTexture
- };
- }
- }
- if (ops != null)
- for (int i = 0; i != ops.Length; i++)
- {
- GUIOps op = ops[i];
- Rect rect = op.screenRect;
- rect.center += (Vector2) transform.position;
- Gizmos.DrawGUITexture(rect, op.texture);
- }
- }
- private class GUIOps
- {
- public Rect screenRect;
- public Texture2D texture;
- }
- #endif
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement