From bf942cbe45f1b40e39dc7afbe4057dbe6bb72b99 Mon Sep 17 00:00:00 2001 From: PopSlime Date: Fri, 18 Nov 2022 09:58:01 +0800 Subject: [PATCH] Fix z-index. Pull up z-index to MeshBase. --- Assets/Cryville/Crtr/Components/MeshBase.cs | 28 +++++++++++++++++++ .../Cryville/Crtr/Components/MeshBase.cs.meta | 11 ++++++++ .../Crtr/Components/SectionalGameObject.cs | 3 +- Assets/Cryville/Crtr/Components/SpriteBase.cs | 20 +------------ Assets/Cryville/Crtr/GenericResources.cs | 1 + 5 files changed, 42 insertions(+), 21 deletions(-) create mode 100644 Assets/Cryville/Crtr/Components/MeshBase.cs create mode 100644 Assets/Cryville/Crtr/Components/MeshBase.cs.meta diff --git a/Assets/Cryville/Crtr/Components/MeshBase.cs b/Assets/Cryville/Crtr/Components/MeshBase.cs new file mode 100644 index 0000000..9f26a59 --- /dev/null +++ b/Assets/Cryville/Crtr/Components/MeshBase.cs @@ -0,0 +1,28 @@ +using System; + +namespace Cryville.Crtr.Components { + public abstract class MeshBase : SkinComponent { + public MeshBase() { + SubmitProperty("zindex", new PropOp.Integer(v => ZIndex = (short)v)); + } + + protected MeshWrapper mesh = new MeshWrapper(); + + short _zindex; + public short ZIndex { + get { + return _zindex; + } + set { + if (value < 0 || value > 5000) + throw new ArgumentOutOfRangeException("value", "Z-index must be in [0..5000]"); + _zindex = value; + UpdateZIndex(); + } + } + protected void UpdateZIndex() { + if (!mesh.Initialized) return; + mesh.Renderer.material.renderQueue = _zindex; + } + } +} diff --git a/Assets/Cryville/Crtr/Components/MeshBase.cs.meta b/Assets/Cryville/Crtr/Components/MeshBase.cs.meta new file mode 100644 index 0000000..f730ec3 --- /dev/null +++ b/Assets/Cryville/Crtr/Components/MeshBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 75daba44e5811b943a08e6f137cc2b0c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Cryville/Crtr/Components/SectionalGameObject.cs b/Assets/Cryville/Crtr/Components/SectionalGameObject.cs index 067a731..c1e2548 100644 --- a/Assets/Cryville/Crtr/Components/SectionalGameObject.cs +++ b/Assets/Cryville/Crtr/Components/SectionalGameObject.cs @@ -5,11 +5,10 @@ using System.Collections.Generic; using UnityEngine; namespace Cryville.Crtr.Components { - public abstract class SectionalGameObject : SkinComponent { + public abstract class SectionalGameObject : MeshBase { protected Vector3? prevpt; protected Quaternion? prevrot; protected int vertCount = 0; - protected MeshWrapper mesh = new MeshWrapper(); protected override void OnDestroy() { mesh.Destroy(); diff --git a/Assets/Cryville/Crtr/Components/SpriteBase.cs b/Assets/Cryville/Crtr/Components/SpriteBase.cs index 3da6918..ea5162b 100644 --- a/Assets/Cryville/Crtr/Components/SpriteBase.cs +++ b/Assets/Cryville/Crtr/Components/SpriteBase.cs @@ -2,14 +2,13 @@ using UnityEngine; namespace Cryville.Crtr.Components { - public abstract class SpriteBase : SkinComponent { + public abstract class SpriteBase : MeshBase { public SpriteBase() { SubmitProperty("bound", new op_set_bound(this)); SubmitProperty("transparent", new PropOp.Boolean(v => transparent = v)); SubmitProperty("pivot", new PropOp.Vector2(v => Pivot = v)); SubmitProperty("scale", new PropOp.Vector2(v => Scale = v)); SubmitProperty("ui", new PropOp.Boolean(v => UI = v)); - SubmitProperty("zindex", new PropOp.Integer(v => ZIndex = (short)v)); } #pragma warning disable IDE1006 @@ -27,8 +26,6 @@ namespace Cryville.Crtr.Components { } #pragma warning restore IDE1006 - protected MeshWrapper mesh = new MeshWrapper(); - protected override void OnDestroy() { mesh.Destroy(); } @@ -82,21 +79,6 @@ namespace Cryville.Crtr.Components { if (da.x != 0) _scale.x = dp.x / da.x; if (da.y != 0) _scale.y = dp.z / da.y; } - - short _zindex; - public short ZIndex { - get { - return _zindex; - } - set { - _zindex = value; - UpdateZIndex(); - } - } - protected void UpdateZIndex() { - if (!mesh.Initialized) return; - mesh.Renderer.sortingOrder = _zindex; - } static readonly Quaternion uirot = Quaternion.Euler(new Vector3(-90, 0, 0)); diff --git a/Assets/Cryville/Crtr/GenericResources.cs b/Assets/Cryville/Crtr/GenericResources.cs index e389e23..010d42a 100644 --- a/Assets/Cryville/Crtr/GenericResources.cs +++ b/Assets/Cryville/Crtr/GenericResources.cs @@ -19,6 +19,7 @@ namespace Cryville.Crtr { public static void LoadDefault() { if (loaded) return; Components.Add("image", typeof(SpritePlane)); + Components.Add("mesh", typeof(MeshBase)); Components.Add("polysec", typeof(PolygonSGO)); Components.Add("rect", typeof(SpriteRect)); Components.Add("scale3", typeof(SpriteScale3));