Advertisement
Guest User

Untitled

a guest
Dec 11th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.09 KB | None | 0 0
  1. // Decompiled with JetBrains decompiler
  2. // Type: Piste
  3. // Assembly: Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
  4. // MVID: FABEABAD-DE18-438F-AE7D-0BB4BBA5B6CD
  5. // Assembly location: C:\Users\La Machine\Desktop\Démo AS-3D-2017\Démo AS-3D-2017_Data\Managed\Assembly-CSharp.dll
  6.  
  7. using System.Collections.Generic;
  8. using UnityEngine;
  9.  
  10. public class Piste : MonoBehaviour
  11. {
  12. private const int NB_TRIANGLES_PAR_TUILE = 2;
  13. private const int NB_SOMMETS_PAR_TRIANGLE = 3;
  14. private const float AJUSTEMENT_HAUTEUR = 0.7f;
  15. private const float SCALING_PISTE = 0.85f;
  16. [SerializeField]
  17. private GameObject PaysageDeLaPiste;
  18. [SerializeField]
  19. private GameObject SphèreÀAnimer;
  20. [SerializeField]
  21. private GameObject CubeÀRamasser;
  22. private Vector3 Origine;
  23.  
  24. private CarteDeHauteur CarteContrôleur { get; set; }
  25.  
  26. private Mesh Maillage { get; set; }
  27.  
  28. private Vector3[] Sommets { get; set; }
  29.  
  30. private Vector2[] CoordonnéesTexture { get; set; }
  31.  
  32. private DataPiste DonnéesPiste { get; set; }
  33.  
  34. private List<Vector3> BordureExtérieure { get; set; }
  35.  
  36. private List<Vector3> BordureIntérieure { get; set; }
  37.  
  38. private List<Vector3> PointsCube { get; set; }
  39.  
  40. private List<Vector3> PointsPatrouille { get; set; }
  41.  
  42. private Vector3 PositionSphère { get; set; }
  43.  
  44. private int NbColonnes { get; set; }
  45.  
  46. private int NbRangées { get; set; }
  47.  
  48. private int NbSommets { get; set; }
  49.  
  50. private int NbTriangles { get; set; }
  51.  
  52. private List<GameObject> listeCubes { get; set; }
  53.  
  54. private GameObject SphèreAutomate { get; set; }
  55.  
  56. private SphèreTexturée SphèreContrôleur { get; set; }
  57.  
  58. private void Start()
  59. {
  60. this.CarteContrôleur = this.PaysageDeLaPiste.GetComponent<CarteDeHauteur>();
  61. this.CréerPiste();
  62. this.CréerCubes();
  63. this.CréerSphèreAutomate();
  64. }
  65.  
  66. private void CréerPiste()
  67. {
  68. this.Origine = new Vector3(this.CarteContrôleur.Origine.x, 0.0f, this.CarteContrôleur.Origine.z);
  69. this.ChargerDonnéesPiste();
  70. this.CalculerDonnéesDeBase();
  71. this.GénérerTriangles();
  72. }
  73.  
  74. private void ChargerDonnéesPiste()
  75. {
  76. this.DonnéesPiste = new DataPiste(this.CarteContrôleur.DimensionCarte, "SplineX.txt", "SplineY.txt");
  77. this.BordureIntérieure = this.AjusterPoints(this.DonnéesPiste.GetBordureExtérieure(), 0.85f);
  78. this.BordureExtérieure = this.AjusterPoints(this.DonnéesPiste.GetBordureIntérieure(), 0.85f);
  79. this.PointsCube = this.AjusterPoints(this.DonnéesPiste.GetPointsCube(), 0.85f);
  80. this.PointsPatrouille = this.AjusterPoints(this.DonnéesPiste.GetPointsDePatrouille(), 0.85f);
  81. this.PositionSphère = this.PointsCube[0];
  82. }
  83.  
  84. private List<Vector3> AjusterPoints(List<Vector2> listePts2D, float valeurScaling)
  85. {
  86. List<Vector3> vector3List = new List<Vector3>();
  87. Vector2 scale = new Vector2(valeurScaling, valeurScaling);
  88. float num = (float) ((double) this.CarteContrôleur.NbColonnes * (1.0 - (double) valeurScaling) / 2.0);
  89. Vector2 vector2_1 = new Vector2(num, num);
  90. for (int index = 0; index < listePts2D.Count; ++index)
  91. {
  92. Vector2 vector2_2 = listePts2D[index];
  93. vector2_2.Scale(scale);
  94. Vector2 vecteurTemporaire = vector2_2 + vector2_1;
  95. vector3List.Add(this.CréerPt3D(vecteurTemporaire));
  96. }
  97. return vector3List;
  98. }
  99.  
  100. private Vector3 CréerPt3D(Vector2 vecteurTemporaire)
  101. {
  102. Vector3 vector3_1 = new Vector3(vecteurTemporaire.x, 0.0f, vecteurTemporaire.y);
  103. Vector3 pointSpatial = this.CarteContrôleur.GetPointSpatial((int) Mathf.Round(vector3_1.x), (int) Mathf.Round(vector3_1.z));
  104. Vector3 vector3_2 = pointSpatial - this.Origine - vector3_1;
  105. vector3_2.y = 0.0f;
  106. Vector3 vector3_3 = pointSpatial - vector3_2;
  107. vector3_3.y += 0.7f;
  108. return vector3_3;
  109. }
  110.  
  111. private void CalculerDonnéesDeBase()
  112. {
  113. this.NbColonnes = this.BordureExtérieure.Count;
  114. this.NbRangées = 1;
  115. this.NbSommets = this.NbColonnes * (this.NbRangées + 1);
  116. this.NbTriangles = (this.NbColonnes - 1) * 2;
  117. }
  118.  
  119. private void GénérerTriangles()
  120. {
  121. this.Maillage = new Mesh();
  122. this.Maillage.name = nameof (Piste);
  123. this.GénérerSommetsEtTexture();
  124. this.GénérerListeTriangles();
  125. this.TexturerSurface();
  126. this.GetComponent<MeshFilter>().mesh = this.Maillage;
  127. this.GetComponent<MeshCollider>().sharedMesh = this.Maillage;
  128. }
  129.  
  130. private void GénérerSommetsEtTexture()
  131. {
  132. int indiceSommet = 0;
  133. this.Sommets = new Vector3[this.NbSommets];
  134. this.CoordonnéesTexture = new Vector2[this.NbSommets];
  135. this.GénérerSommetsBordure(this.BordureIntérieure, 0, ref indiceSommet);
  136. this.GénérerSommetsBordure(this.BordureExtérieure, 1, ref indiceSommet);
  137. this.Maillage.vertices = this.Sommets;
  138. this.Maillage.uv = this.CoordonnéesTexture;
  139. }
  140.  
  141. private void GénérerSommetsBordure(List<Vector3> listeBordure, int noRangée, ref int indiceSommet)
  142. {
  143. float x = 0.0f;
  144. for (int index1 = 0; index1 < this.NbColonnes; ++index1)
  145. {
  146. this.Sommets[indiceSommet] = listeBordure[index1];
  147. Vector2[] coordonnéesTexture = this.CoordonnéesTexture;
  148. int num;
  149. indiceSommet = (num = indiceSommet) + 1;
  150. int index2 = num;
  151. coordonnéesTexture[index2] = new Vector2(x, (float) noRangée);
  152. x = (double) x != 0.0 ? 0.0f : 1f;
  153. }
  154. }
  155.  
  156. private void GénérerListeTriangles()
  157. {
  158. int[] triangles = new int[this.NbTriangles * 3];
  159. int indiceTriangle = 0;
  160. int num1 = 0;
  161. for (int index = 0; index < this.NbColonnes - 1; ++index)
  162. {
  163. int indiceA = num1;
  164. int num2 = indiceA + this.NbColonnes;
  165. this.AjouterTriangle(triangles, indiceA, num2, indiceA + 1, ref indiceTriangle);
  166. this.AjouterTriangle(triangles, num2, num2 + 1, indiceA + 1, ref indiceTriangle);
  167. ++num1;
  168. }
  169. this.Maillage.triangles = triangles;
  170. this.Maillage.RecalculateNormals();
  171. }
  172.  
  173. public bool EstDansLeSensDesAiguillesDUneMontre(int indPtA, int indPtB, int indPtC)
  174. {
  175. Vector3 sommet1 = this.Sommets[indPtA];
  176. Vector3 sommet2 = this.Sommets[indPtB];
  177. Vector3 sommet3 = this.Sommets[indPtC];
  178. return (double) ((float) (((double) sommet2.x - (double) sommet1.x) * ((double) sommet2.z + (double) sommet1.z)) + (float) (((double) sommet3.x - (double) sommet2.x) * ((double) sommet3.z + (double) sommet2.z)) + (float) (((double) sommet1.x - (double) sommet3.x) * ((double) sommet1.z + (double) sommet3.z))) > 0.0;
  179. }
  180.  
  181. private void AjouterTriangle(int[] triangles, int indiceA, int indiceB, int indiceC, ref int indiceTriangle)
  182. {
  183. int[] numArray1 = triangles;
  184. int num1;
  185. indiceTriangle = (num1 = indiceTriangle) + 1;
  186. int index1 = num1;
  187. int num2 = indiceA;
  188. numArray1[index1] = num2;
  189. int[] numArray2 = triangles;
  190. int num3;
  191. indiceTriangle = (num3 = indiceTriangle) + 1;
  192. int index2 = num3;
  193. int num4 = indiceB;
  194. numArray2[index2] = num4;
  195. int[] numArray3 = triangles;
  196. int num5;
  197. indiceTriangle = (num5 = indiceTriangle) + 1;
  198. int index3 = num5;
  199. int num6 = indiceC;
  200. numArray3[index3] = num6;
  201. }
  202.  
  203. private void TexturerSurface()
  204. {
  205. Vector4[] vector4Array = new Vector4[this.Sommets.Length];
  206. Vector4 vector4 = new Vector4(1f, 0.0f, 0.0f, -1f);
  207. for (int index = 0; index < vector4Array.Length; ++index)
  208. vector4Array[index] = vector4;
  209. this.Maillage.tangents = vector4Array;
  210. }
  211.  
  212. private void CréerCubes()
  213. {
  214. this.listeCubes = new List<GameObject>();
  215. Quaternion identity = Quaternion.identity;
  216. for (int index = 1; index < this.PointsCube.Count; ++index)
  217. this.listeCubes.Add(Object.Instantiate<GameObject>(this.CubeÀRamasser, this.PointsCube[index] + Vector3.up, identity, this.transform));
  218. }
  219.  
  220. private void CréerSphèreAutomate()
  221. {
  222. this.SphèreAutomate = Object.Instantiate<GameObject>(this.SphèreÀAnimer, this.PositionSphère, Quaternion.identity, this.transform);
  223. this.SphèreContrôleur = this.SphèreAutomate.GetComponent<SphèreTexturée>();
  224. this.SphèreContrôleur.InitialiserPointsDePatrouille(this.PointsPatrouille);
  225. }
  226. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement