mirror of
https://gitgud.io/AbstractConcept/rimworld-animation-studio.git
synced 2024-08-15 00:43:27 +00:00
Initial commit
This commit is contained in:
commit
3c7cc0c973
8391 changed files with 704313 additions and 0 deletions
|
@ -0,0 +1,97 @@
|
|||
// -----------------------------------------------------------------------
|
||||
// <copyright file="Segment.cs" company="">
|
||||
// Original Triangle code by Jonathan Richard Shewchuk, http://www.cs.cmu.edu/~quake/triangle.html
|
||||
// Triangle.NET code by Christian Woltering, http://triangle.codeplex.com/
|
||||
// </copyright>
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
namespace UnityEngine.U2D.Animation.TriangleNet
|
||||
.Topology
|
||||
{
|
||||
using System;
|
||||
using Animation.TriangleNet.Geometry;
|
||||
|
||||
/// <summary>
|
||||
/// The subsegment data structure.
|
||||
/// </summary>
|
||||
internal class SubSegment : ISegment
|
||||
{
|
||||
// Hash for dictionary. Will be set by mesh instance.
|
||||
internal int hash;
|
||||
|
||||
internal Osub[] subsegs;
|
||||
internal Vertex[] vertices;
|
||||
internal Otri[] triangles;
|
||||
internal int boundary;
|
||||
|
||||
public SubSegment()
|
||||
{
|
||||
// Four NULL vertices.
|
||||
vertices = new Vertex[4];
|
||||
|
||||
// Set the boundary marker to zero.
|
||||
boundary = 0;
|
||||
|
||||
// Initialize the two adjoining subsegments to be the omnipresent
|
||||
// subsegment.
|
||||
subsegs = new Osub[2];
|
||||
|
||||
// Initialize the two adjoining triangles to be "outer space."
|
||||
triangles = new Otri[2];
|
||||
}
|
||||
|
||||
#region Public properties
|
||||
|
||||
/// <summary>
|
||||
/// Gets the first endpoints vertex id.
|
||||
/// </summary>
|
||||
public int P0
|
||||
{
|
||||
get { return this.vertices[0].id; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the seconds endpoints vertex id.
|
||||
/// </summary>
|
||||
public int P1
|
||||
{
|
||||
get { return this.vertices[1].id; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the segment boundary mark.
|
||||
/// </summary>
|
||||
public int Label
|
||||
{
|
||||
get { return this.boundary; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Gets the segments endpoint.
|
||||
/// </summary>
|
||||
public Vertex GetVertex(int index)
|
||||
{
|
||||
return this.vertices[index]; // TODO: Check range?
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets an adjoining triangle.
|
||||
/// </summary>
|
||||
public ITriangle GetTriangle(int index)
|
||||
{
|
||||
return triangles[index].tri.hash == Mesh.DUMMY ? null : triangles[index].tri;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return this.hash;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return String.Format("SID {0}", hash);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue