public static void GUITextureCap(int controlID, Texture texture, Vector3 position, Quaternion rotation, float size, EventType eventType)
        {
            switch (eventType)
            {
            case (EventType.Layout):
                HandleUtility.AddControl(controlID, DistanceToRectangle(position, rotation, Vector2.one * size * 0.5f));
                break;

            case (EventType.Repaint):

                FilterMode filterMode = texture.filterMode;
                texture.filterMode = FilterMode.Bilinear;

                EditorSpriteGUIUtility.spriteMaterial.mainTexture = texture;

                float w   = (float)texture.width;
                float h   = (float)texture.height;
                float max = Mathf.Max(w, h);

                Vector3 scale = new Vector2(w / max, h / max) * size;

                if (Camera.current == null)
                {
                    scale.y *= -1f;
                }

                EditorSpriteGUIUtility.DrawMesh(textureCapMesh, EditorSpriteGUIUtility.spriteMaterial, position, rotation, scale);

                texture.filterMode = filterMode;
                break;
            }
        }
Exemple #2
0
        private void DrawSpritePreview(Rect rect)
        {
            if (Event.current.type != EventType.Repaint)
            {
                return;
            }

            if (selectedIndex == kInvalidMinimum)
            {
                return;
            }

            var sprites = angleRanges[selectedIndex].sprites;

            if (sprites.Count == 0)
            {
                return;
            }

            var selectedSpriteIndex = GetPreviewSpriteIndexFromSessionState(selectedIndex);

            if (selectedSpriteIndex == kInvalidMinimum)
            {
                return;
            }

            var sprite = sprites[selectedSpriteIndex];

            if (sprite == null)
            {
                return;
            }

            if (m_PreviewSprite != sprite)
            {
                m_PreviewSprite = sprite;
                EditorSpriteGUIUtility.DrawSpriteInRectPrepare(rect, sprite, EditorSpriteGUIUtility.FitMode.Tiled, true, true, previewSpriteMesh);
            }

            var material = EditorSpriteGUIUtility.spriteMaterial;

            material.mainTexture = EditorSpriteGUIUtility.GetOriginalSpriteTexture(sprite);

            GUI.BeginClip(rect);
            EditorSpriteGUIUtility.DrawMesh(previewSpriteMesh, material, rect.size * 0.5f, Quaternion.AngleAxis(m_PreviewAngle, Vector3.forward), new Vector3(1f, -1f, 1f));
            GUI.EndClip();
        }