Fix error on image.frame(s) not set.

This commit is contained in:
2023-02-17 21:12:41 +08:00
parent 2d4087dc89
commit 6a648c2dcd
2 changed files with 12 additions and 8 deletions

View File

@@ -49,6 +49,9 @@ namespace Cryville.Crtr.Components {
_mat.mainTexture = Frame == null ? null : Frame.Texture; _mat.mainTexture = Frame == null ? null : Frame.Texture;
} }
} }
public static bool IsNullOrEmpty(SpriteInfo sprite) {
return sprite == null || sprite.Frame == null;
}
} }
public class SpritePlane : SpriteBase { public class SpritePlane : SpriteBase {
@@ -98,6 +101,7 @@ namespace Cryville.Crtr.Components {
} }
protected SpriteInfo CurrentFrame { protected SpriteInfo CurrentFrame {
get { get {
if (m_frames.Length == 0) return null;
if (m_index < 0) m_index = 0; if (m_index < 0) m_index = 0;
else if (m_index >= m_frames.Length) m_index = m_frames.Length - 1; else if (m_index >= m_frames.Length) m_index = m_frames.Length - 1;
return m_frames[m_index]; return m_frames[m_index];
@@ -105,22 +109,20 @@ namespace Cryville.Crtr.Components {
} }
protected void OnFrameUpdate() { protected void OnFrameUpdate() {
if (!mesh.Initialized) return; if (!mesh.Initialized) return;
if (CurrentFrame.Frame == null) { var frame = CurrentFrame;
if (SpriteInfo.IsNullOrEmpty(frame)) {
mesh.Renderer.enabled = false; mesh.Renderer.enabled = false;
return; return;
} }
mesh.Renderer.enabled = true; mesh.Renderer.enabled = true;
mesh.Renderer.material.mainTexture = CurrentFrame.Frame.Texture; mesh.Renderer.material.mainTexture = frame.Frame.Texture;
UpdateUV(); UpdateUV();
UpdateScale(); UpdateScale();
UpdateZIndex(); UpdateZIndex();
} }
protected virtual void UpdateUV() { protected virtual void UpdateUV() {
var frame = CurrentFrame; var frame = CurrentFrame;
if (frame.Frame == null) { if (SpriteInfo.IsNullOrEmpty(frame)) return;
Logger.Log("main", 4, "Skin", "Unable to load texture {0}", frame.FrameName);
return;
}
Vector2[] muv = OriginalUV; Vector2[] muv = OriginalUV;
Vector2[] uv = new Vector2[muv.Length]; Vector2[] uv = new Vector2[muv.Length];
for (int i = 0; i < uv.Length; i++) { for (int i = 0; i < uv.Length; i++) {
@@ -157,7 +159,7 @@ namespace Cryville.Crtr.Components {
} }
protected override void UpdateScale() { protected override void UpdateScale() {
if (CurrentFrame.Frame == null) return; if (SpriteInfo.IsNullOrEmpty(CurrentFrame)) return;
base.UpdateScale(); base.UpdateScale();
if (m_fit != FitMode.none && Scale.x != Scale.y) m_fit = FitMode.none; if (m_fit != FitMode.none && Scale.x != Scale.y) m_fit = FitMode.none;
} }

View File

@@ -45,10 +45,12 @@ namespace Cryville.Crtr.Components {
} }
protected override void UpdateUV() { protected override void UpdateUV() {
var frame = CurrentFrame;
if (SpriteInfo.IsNullOrEmpty(frame)) return;
Vector2[] muv = OriginalUV; Vector2[] muv = OriginalUV;
Vector2[] uv = new Vector2[muv.Length]; Vector2[] uv = new Vector2[muv.Length];
var frame = CurrentFrame;
var or = frame.Ratio; var or = frame.Ratio;
var sr = Scale.x / Scale.y; var sr = Scale.x / Scale.y;
var b = new Vector2( var b = new Vector2(