AVProWindowsMediaMeshApply.cs
1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using UnityEngine;
using System.Collections;
//-----------------------------------------------------------------------------
// Copyright 2012-2016 RenderHeads Ltd. All rights reserverd.
//-----------------------------------------------------------------------------
[AddComponentMenu("AVPro Windows Media/Mesh Apply")]
public class AVProWindowsMediaMeshApply : MonoBehaviour
{
public MeshRenderer _mesh;
public AVProWindowsMediaMovie _movie;
public Texture2D _defaultTexture;
void Update()
{
bool applied = false;
if (_movie != null && _movie.MovieInstance != null)
{
Texture texture = _movie.OutputTexture;
if (texture != null)
{
ApplyMapping(texture, _movie.MovieInstance.RequiresFlipY);
applied = true;
}
}
if (!applied)
{
ApplyMapping(_defaultTexture, false);
}
}
private void ApplyMapping(Texture texture, bool requiresYFlip)
{
if (_mesh != null && texture != null)
{
Vector2 scale = Vector2.one;
Vector2 offset = Vector2.zero;
if (requiresYFlip)
{
scale = new Vector2(1.0f, -1.0f);
offset = new Vector3(0.0f, 1.0f);
}
foreach (Material m in _mesh.materials)
{
m.mainTexture = texture;
m.mainTextureScale = scale;
m.mainTextureOffset = offset;
}
}
}
void OnEnable()
{
Update();
}
void OnDisable()
{
ApplyMapping(_defaultTexture, false);
}
}