You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.0 KiB
82 lines
2.0 KiB
using UnityEngine; |
|
using System.Collections; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Copyright 2015-2016 RenderHeads Ltd. All rights reserverd. |
|
//----------------------------------------------------------------------------- |
|
|
|
namespace RenderHeads.Media.AVProVideo |
|
{ |
|
[AddComponentMenu("AVPro Video/Display IMGUI")] |
|
[ExecuteInEditMode] |
|
public class DisplayIMGUI : MonoBehaviour |
|
{ |
|
public MediaPlayer _mediaPlayer; |
|
|
|
public bool _displayInEditor = true; |
|
public ScaleMode _scaleMode = ScaleMode.ScaleToFit; |
|
public Color _color = Color.white; |
|
public bool _alphaBlend = false; |
|
|
|
public bool _fullScreen = true; |
|
public int _depth = 0; |
|
public float _x = 0.0f; |
|
public float _y = 0.0f; |
|
public float _width = 1.0f; |
|
public float _height = 1.0f; |
|
|
|
public void OnGUI() |
|
{ |
|
if (_mediaPlayer == null || !_displayInEditor) |
|
{ |
|
return; |
|
} |
|
|
|
bool requiresVerticalFlip = false; |
|
Texture texture = Texture2D.whiteTexture; |
|
|
|
if (_mediaPlayer.Info != null && !_mediaPlayer.Info.HasVideo()) |
|
{ |
|
texture = null; |
|
} |
|
|
|
if (_mediaPlayer.TextureProducer != null) |
|
{ |
|
if (_mediaPlayer.TextureProducer.GetTexture() != null) |
|
{ |
|
texture = _mediaPlayer.TextureProducer.GetTexture(); |
|
requiresVerticalFlip = _mediaPlayer.TextureProducer.RequiresVerticalFlip(); |
|
} |
|
} |
|
|
|
if (texture != null) |
|
{ |
|
if (!_alphaBlend || _color.a > 0) |
|
{ |
|
GUI.depth = _depth; |
|
GUI.color = _color; |
|
|
|
Rect rect = GetRect(); |
|
|
|
if (requiresVerticalFlip) |
|
{ |
|
GUIUtility.ScaleAroundPivot(new Vector2(1f, -1f), new Vector2(0, rect.y + (rect.height / 2))); |
|
} |
|
|
|
GUI.DrawTexture(rect, texture, _scaleMode, _alphaBlend); |
|
} |
|
} |
|
} |
|
|
|
public Rect GetRect() |
|
{ |
|
Rect rect; |
|
if (_fullScreen) |
|
rect = new Rect(0.0f, 0.0f, Screen.width, Screen.height); |
|
else |
|
rect = new Rect(_x * (Screen.width-1), _y * (Screen.height-1), _width * Screen.width, _height * Screen.height); |
|
|
|
return rect; |
|
} |
|
} |
|
}
|
|
|