SW 중심대학 OSS GIT 서버 박건태, 이승준, 고기완, 이준호 새로운 배포
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

121 lines
5.0 KiB

4 years ago
  1. using System;
  2. using System.Collections.Generic;
  3. namespace UnityEngine.XR.ARFoundation
  4. {
  5. /// <summary>
  6. /// Event arguments for the <see cref="ARMeshManager.meshesChanged"/> event.
  7. /// </summary>
  8. public struct ARMeshesChangedEventArgs : IEquatable<ARMeshesChangedEventArgs>
  9. {
  10. /// <summary>
  11. /// The list of <c>MeshFilter</c>s added since the last event.
  12. /// </summary>
  13. public List<MeshFilter> added { get; private set; }
  14. /// <summary>
  15. /// The list of <c>MeshFilter</c>s udpated since the last event.
  16. /// </summary>
  17. public List<MeshFilter> updated { get; private set; }
  18. /// <summary>
  19. /// The list of <c>MeshFilter</c>s removed since the last event.
  20. /// </summary>
  21. public List<MeshFilter> removed { get; private set; }
  22. /// <summary>
  23. /// Constructs an <see cref="ARMeshesChangedEventArgs"/>.
  24. /// </summary>
  25. /// <param name="added">The list of <c>MeshFilter</c>s added since the last event.</param>
  26. /// <param name="updated">The list of <c>MeshFilter</c>s updated since the last event.</param>
  27. /// <param name="removed">The list of <c>MeshFilter</c>s removed since the last event.</param>
  28. public ARMeshesChangedEventArgs(
  29. List<MeshFilter> added,
  30. List<MeshFilter> updated,
  31. List<MeshFilter> removed)
  32. {
  33. this.added = added;
  34. this.updated = updated;
  35. this.removed = removed;
  36. }
  37. /// <summary>
  38. /// Generates a hash code suitable for use in a <c>Dictionary</c> or <c>HashSet</c>.
  39. /// </summary>
  40. public override int GetHashCode()
  41. {
  42. unchecked
  43. {
  44. int hash = 0;
  45. hash = hash * 486187739 + (added == null ? 0 : added.GetHashCode());
  46. hash = hash * 486187739 + (updated == null ? 0 : updated.GetHashCode());
  47. hash = hash * 486187739 + (removed == null ? 0 : removed.GetHashCode());
  48. return hash;
  49. }
  50. }
  51. /// <summary>
  52. /// <c>IEquatable</c> interface.
  53. /// </summary>
  54. /// <param name="obj">The object to compare for equality.</param>
  55. /// <returns><c>True</c> if <paramref name="obj"/> is of type <see cref="ARMeshesChangedEventArgs"/>
  56. /// and compares equal using <see cref="Equals(ARMeshesChangedEventArgs)"/>.</returns>
  57. public override bool Equals(object obj)
  58. {
  59. if (!(obj is ARMeshesChangedEventArgs))
  60. return false;
  61. return Equals((ARMeshesChangedEventArgs)obj);
  62. }
  63. /// <summary>
  64. /// Generates a string representation of this struct, including the number of
  65. /// added, updated, and removed meshes.
  66. /// </summary>
  67. /// <returns>A string representation of this struct.</returns>
  68. public override string ToString()
  69. {
  70. return string.Format("Added: {0}, Updated: {1}, Removed: {2}",
  71. added == null ? 0 : added.Count,
  72. updated == null ? 0 : updated.Count,
  73. removed == null ? 0 : removed.Count);
  74. }
  75. /// <summary>
  76. /// Compares <paramref name="other"/> for equality.
  77. /// </summary>
  78. /// <param name="other">The <see cref="ARMeshesChangedEventArgs"/> to compare for equality.</param>
  79. /// <returns><c>True</c> if <see cref="added"/>, <see cref="updated"/>, and <see cref="removed"/>
  80. /// have the same <c>List</c> references as the corresponding properties of <paramref name="other"/>.</returns>
  81. public bool Equals(ARMeshesChangedEventArgs other)
  82. {
  83. return
  84. ReferenceEquals(added, other.added) &&
  85. ReferenceEquals(updated, other.updated) &&
  86. ReferenceEquals(removed, other.removed);
  87. }
  88. /// <summary>
  89. /// Compares for equality. Same as <see cref="Equals(ARMeshesChangedEventArgs)"/>.
  90. /// </summary>
  91. /// <param name="lhs">The first <see cref="ARMeshesChangedEventArgs"/> to compare.</param>
  92. /// <param name="rhs">The second <see cref="ARMeshesChangedEventArgs"/> to compare.</param>
  93. /// <returns>The same value as <see cref="Equals(ARMeshesChangedEventArgs)"/></returns>
  94. public static bool operator ==(ARMeshesChangedEventArgs lhs, ARMeshesChangedEventArgs rhs)
  95. {
  96. return lhs.Equals(rhs);
  97. }
  98. /// <summary>
  99. /// Compares for inequality. Same as <c>!</c><see cref="Equals(ARMeshesChangedEventArgs)"/>.
  100. /// </summary>
  101. /// <param name="lhs">The first <see cref="ARMeshesChangedEventArgs"/> to compare.</param>
  102. /// <param name="rhs">The second <see cref="ARMeshesChangedEventArgs"/> to compare.</param>
  103. /// <returns>The same value as <c>!</c><see cref="Equals(ARMeshesChangedEventArgs)"/></returns>
  104. public static bool operator !=(ARMeshesChangedEventArgs lhs, ARMeshesChangedEventArgs rhs)
  105. {
  106. return !lhs.Equals(rhs);
  107. }
  108. }
  109. }