mirror of
https://github.com/BlackMATov/unity-flash-tools.git
synced 2025-12-16 14:11:19 +07:00
preview fixes
This commit is contained in:
@@ -6,9 +6,9 @@ using System.Linq;
|
||||
namespace FlashTools.Internal {
|
||||
[CustomPreview(typeof(SwfClipAsset))]
|
||||
public class SwfClipAssetPreview : ObjectPreview {
|
||||
int _sequence = 0;
|
||||
PreviewRenderUtility _previewUtil = null;
|
||||
MaterialPropertyBlock _matPropBlock = null;
|
||||
int _sequence = 0;
|
||||
static MaterialPropertyBlock _matPropBlock = null;
|
||||
static PreviewRenderUtility _previewUtils = null;
|
||||
|
||||
Texture2D targetAtlas {
|
||||
get {
|
||||
@@ -103,8 +103,12 @@ namespace FlashTools.Internal {
|
||||
|
||||
public override void Initialize(Object[] targets) {
|
||||
base.Initialize(targets);
|
||||
_matPropBlock = new MaterialPropertyBlock();
|
||||
_previewUtil = new PreviewRenderUtility();
|
||||
if ( _matPropBlock == null ) {
|
||||
_matPropBlock = new MaterialPropertyBlock();
|
||||
}
|
||||
if ( _previewUtils == null ) {
|
||||
_previewUtils = new PreviewRenderUtility();
|
||||
}
|
||||
}
|
||||
|
||||
public override bool HasPreviewGUI() {
|
||||
@@ -142,21 +146,21 @@ namespace FlashTools.Internal {
|
||||
var frame = targetFrame;
|
||||
var sequence = targetSequence;
|
||||
if ( atlas && frame != null && sequence != null ) {
|
||||
_previewUtil.BeginPreview(r, background);
|
||||
_previewUtils.BeginPreview(r, background);
|
||||
{
|
||||
_matPropBlock.SetTexture("_MainTex", atlas);
|
||||
ConfigureCameraForSequence(_previewUtil.m_Camera, sequence);
|
||||
ConfigureCameraForSequence(_previewUtils.m_Camera, sequence);
|
||||
for ( var i = 0; i < frame.Materials.Length; ++i ) {
|
||||
_previewUtil.DrawMesh(
|
||||
_previewUtils.DrawMesh(
|
||||
frame.Mesh,
|
||||
Matrix4x4.identity,
|
||||
frame.Materials[i],
|
||||
i,
|
||||
_matPropBlock);
|
||||
}
|
||||
_previewUtil.m_Camera.Render();
|
||||
_previewUtils.m_Camera.Render();
|
||||
}
|
||||
_previewUtil.EndAndDrawPreview(r);
|
||||
_previewUtils.EndAndDrawPreview(r);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,6 +132,15 @@ namespace FlashTools.Internal {
|
||||
GUILayout.EndHorizontal();
|
||||
}
|
||||
|
||||
void SetupPreviews() {
|
||||
_previews.Clear();
|
||||
foreach ( var clip in _clips.Where(p => !!p.clip) ) {
|
||||
var preview = new SwfClipAssetPreview();
|
||||
preview.Initialize(new Object[]{clip.clip});
|
||||
_previews.Add(clip, preview);
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
//
|
||||
// Messages
|
||||
@@ -140,11 +149,7 @@ namespace FlashTools.Internal {
|
||||
|
||||
void OnEnable() {
|
||||
_clips = targets.OfType<SwfClip>().ToList();
|
||||
foreach ( var clip in _clips.Where(p => !!p.clip) ) {
|
||||
var preview = new SwfClipAssetPreview();
|
||||
preview.Initialize(new Object[]{clip.clip});
|
||||
_previews.Add(clip, preview);
|
||||
}
|
||||
SetupPreviews();
|
||||
}
|
||||
|
||||
public override void OnInspectorGUI() {
|
||||
@@ -154,6 +159,7 @@ namespace FlashTools.Internal {
|
||||
DrawCurrentFrame();
|
||||
if ( GUI.changed ) {
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
SetupPreviews();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user