mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 22:49:01 +08:00
[unity] Prepared MeshGenerator class for creating subclasses.
This commit is contained in:
parent
b235b42175
commit
7f5e7c3bfc
@ -98,10 +98,10 @@ namespace Spine.Unity {
|
|||||||
const float BoundsMinDefault = float.PositiveInfinity;
|
const float BoundsMinDefault = float.PositiveInfinity;
|
||||||
const float BoundsMaxDefault = float.NegativeInfinity;
|
const float BoundsMaxDefault = float.NegativeInfinity;
|
||||||
|
|
||||||
[NonSerialized] readonly ExposedList<Vector3> vertexBuffer = new ExposedList<Vector3>(4);
|
[NonSerialized] protected readonly ExposedList<Vector3> vertexBuffer = new ExposedList<Vector3>(4);
|
||||||
[NonSerialized] readonly ExposedList<Vector2> uvBuffer = new ExposedList<Vector2>(4);
|
[NonSerialized] protected readonly ExposedList<Vector2> uvBuffer = new ExposedList<Vector2>(4);
|
||||||
[NonSerialized] readonly ExposedList<Color32> colorBuffer = new ExposedList<Color32>(4);
|
[NonSerialized] protected readonly ExposedList<Color32> colorBuffer = new ExposedList<Color32>(4);
|
||||||
[NonSerialized] readonly ExposedList<ExposedList<int>> submeshes = new ExposedList<ExposedList<int>> { new ExposedList<int>(6) }; // start with 1 submesh.
|
[NonSerialized] protected readonly ExposedList<ExposedList<int>> submeshes = new ExposedList<ExposedList<int>> { new ExposedList<int>(6) }; // start with 1 submesh.
|
||||||
|
|
||||||
[NonSerialized] Vector2 meshBoundsMin, meshBoundsMax;
|
[NonSerialized] Vector2 meshBoundsMin, meshBoundsMax;
|
||||||
[NonSerialized] float meshBoundsThickness;
|
[NonSerialized] float meshBoundsThickness;
|
||||||
@ -121,6 +121,7 @@ namespace Spine.Unity {
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public int VertexCount { get { return vertexBuffer.Count; } }
|
public int VertexCount { get { return vertexBuffer.Count; } }
|
||||||
|
public int SubmeshIndexCount (int submeshIndex) { return submeshes.Items[submeshIndex].Count; }
|
||||||
|
|
||||||
/// <summary>A set of mesh arrays whose values are modifiable by the user. Modify these values before they are passed to the UnityEngine mesh object in order to see the effect.</summary>
|
/// <summary>A set of mesh arrays whose values are modifiable by the user. Modify these values before they are passed to the UnityEngine mesh object in order to see the effect.</summary>
|
||||||
public MeshGeneratorBuffers Buffers {
|
public MeshGeneratorBuffers Buffers {
|
||||||
@ -1007,6 +1008,20 @@ namespace Spine.Unity {
|
|||||||
meshBoundsThickness *= scale;
|
meshBoundsThickness *= scale;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Bounds GetMeshBounds () {
|
||||||
|
if (float.IsInfinity(meshBoundsMin.x)) { // meshBoundsMin.x == BoundsMinDefault // == doesn't work on float Infinity constants.
|
||||||
|
return new Bounds();
|
||||||
|
} else {
|
||||||
|
//mesh.bounds = ArraysMeshGenerator.ToBounds(meshBoundsMin, meshBoundsMax);
|
||||||
|
float halfWidth = (meshBoundsMax.x - meshBoundsMin.x) * 0.5f;
|
||||||
|
float halfHeight = (meshBoundsMax.y - meshBoundsMin.y) * 0.5f;
|
||||||
|
return new Bounds {
|
||||||
|
center = new Vector3(meshBoundsMin.x + halfWidth, meshBoundsMin.y + halfHeight),
|
||||||
|
extents = new Vector3(halfWidth, halfHeight, meshBoundsThickness * 0.5f)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void AddAttachmentTintBlack (float r2, float g2, float b2, float a, int vertexCount) {
|
void AddAttachmentTintBlack (float r2, float g2, float b2, float a, int vertexCount) {
|
||||||
var rg = new Vector2(r2, g2);
|
var rg = new Vector2(r2, g2);
|
||||||
var bo = new Vector2(b2, a);
|
var bo = new Vector2(b2, a);
|
||||||
@ -1054,18 +1069,7 @@ namespace Spine.Unity {
|
|||||||
mesh.vertices = vbi;
|
mesh.vertices = vbi;
|
||||||
mesh.uv = ubi;
|
mesh.uv = ubi;
|
||||||
mesh.colors32 = cbi;
|
mesh.colors32 = cbi;
|
||||||
|
mesh.bounds = GetMeshBounds();
|
||||||
if (float.IsInfinity(meshBoundsMin.x)) { // meshBoundsMin.x == BoundsMinDefault // == doesn't work on float Infinity constants.
|
|
||||||
mesh.bounds = new Bounds();
|
|
||||||
} else {
|
|
||||||
//mesh.bounds = ArraysMeshGenerator.ToBounds(meshBoundsMin, meshBoundsMax);
|
|
||||||
float halfWidth = (meshBoundsMax.x - meshBoundsMin.x) * 0.5f;
|
|
||||||
float halfHeight = (meshBoundsMax.y - meshBoundsMin.y) * 0.5f;
|
|
||||||
mesh.bounds = new Bounds {
|
|
||||||
center = new Vector3(meshBoundsMin.x + halfWidth, meshBoundsMin.y + halfHeight),
|
|
||||||
extents = new Vector3(halfWidth, halfHeight, meshBoundsThickness * 0.5f)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user