Fix z-index. Pull up z-index to MeshBase.

This commit is contained in:
2022-11-18 09:58:01 +08:00
parent 79bfd6764c
commit bf942cbe45
5 changed files with 42 additions and 21 deletions

View File

@@ -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;
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 75daba44e5811b943a08e6f137cc2b0c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -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();

View File

@@ -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));

View File

@@ -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));