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; } }
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(); }