123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- // -----------------------------------------------------------------------
- // <copyright file="Vertex.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
- .Geometry
- {
- using System;
- using Animation.TriangleNet.Topology;
- /// <summary>
- /// The vertex data structure.
- /// </summary>
- internal class Vertex : Point
- {
- // Hash for dictionary. Will be set by mesh instance.
- internal int hash;
- #if USE_ATTRIBS
- internal double[] attributes;
- #endif
- internal VertexType type;
- internal Otri tri;
- /// <summary>
- /// Initializes a new instance of the <see cref="Vertex" /> class.
- /// </summary>
- public Vertex()
- : this(0, 0, 0)
- {
- }
- /// <summary>
- /// Initializes a new instance of the <see cref="Vertex" /> class.
- /// </summary>
- /// <param name="x">The x coordinate of the vertex.</param>
- /// <param name="y">The y coordinate of the vertex.</param>
- public Vertex(double x, double y)
- : this(x, y, 0)
- {
- }
- /// <summary>
- /// Initializes a new instance of the <see cref="Vertex" /> class.
- /// </summary>
- /// <param name="x">The x coordinate of the vertex.</param>
- /// <param name="y">The y coordinate of the vertex.</param>
- /// <param name="mark">The boundary mark.</param>
- public Vertex(double x, double y, int mark)
- : base(x, y, mark)
- {
- this.type = VertexType.InputVertex;
- }
- #if USE_ATTRIBS
- /// <summary>
- /// Initializes a new instance of the <see cref="Vertex" /> class.
- /// </summary>
- /// <param name="x">The x coordinate of the vertex.</param>
- /// <param name="y">The y coordinate of the vertex.</param>
- /// <param name="mark">The boundary mark.</param>
- /// <param name="attribs">The number of point attributes.</param>
- public Vertex(double x, double y, int mark, int attribs)
- : this(x, y, mark)
- {
- if (attribs > 0)
- {
- this.attributes = new double[attribs];
- }
- }
- #endif
- #region Public properties
- #if USE_ATTRIBS
- /// <summary>
- /// Gets the vertex attributes (may be null).
- /// </summary>
- public double[] Attributes
- {
- get { return this.attributes; }
- }
- #endif
- /// <summary>
- /// Gets the vertex type.
- /// </summary>
- public VertexType Type
- {
- get { return this.type; }
- }
- /// <summary>
- /// Gets the specified coordinate of the vertex.
- /// </summary>
- /// <param name="i">Coordinate index.</param>
- /// <returns>X coordinate, if index is 0, Y coordinate, if index is 1.</returns>
- public double this[int i]
- {
- get
- {
- if (i == 0)
- {
- return x;
- }
- if (i == 1)
- {
- return y;
- }
- throw new ArgumentOutOfRangeException("Index must be 0 or 1.");
- }
- }
- #endregion
- public override int GetHashCode()
- {
- return this.hash;
- }
- }
- }
|