123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class RenderParcours : MonoBehaviour
- {
- public Transform MyParent;
- public Material LineMaterial;
- public ConfigReader Config;
- void Start()
- {
- GetParcoursData();
- }
- void GetParcoursData()
- {
- /** "LineWidth" : 0.1,
- "Kind" : "PieceWise",
- "LinePieces" : [
- { "x" : 1.1, "y" : 12.2},
- { "x" : 1.43, "y" : 4.5},
- { "x" : 1.8, "y" : 3.5},
- { "x" : 1.1, "y" : 2.5}
- ]**/
- if (Config.configuration.Parcours.Kind == "PieceWise")
- {
- ConfigLinePieces[] lps = Config.configuration.Parcours.LinePieces;
- int AmntLinePieces = lps.Length / 2; // Length should have been checked by ConfigReader.ValidParcours() already
- for (int i = 0; i < AmntLinePieces; i++)
- {
- GameObject Renderer = new GameObject();
- Renderer.transform.SetParent(MyParent);
- LineRenderer lr = Renderer.AddComponent<LineRenderer>();
- PrepareLR(lr, Renderer);
- lr.widthCurve = AnimationCurve.Constant(0.0f, 1f, Config.configuration.Parcours.LineWidth);
- Vector3[] posvector = new Vector3[2];
- posvector[0] = new Vector3(lps[i*2].x, lps[i*2].y, 0f);
- posvector[1] = new Vector3(lps[i * 2 + 1].x, lps[i * 2 + 1].y, 0f);
- lr.positionCount = posvector.Length;
- lr.SetPositions(posvector);
- }
- }
- else if (Config.configuration.Parcours.Kind == "Trail")
- {
- GameObject Renderer = new GameObject();
- Renderer.transform.SetParent(MyParent);
- LineRenderer lr = Renderer.AddComponent<LineRenderer>();
- PrepareLR(lr, Renderer);
- lr.widthCurve = AnimationCurve.Constant(0.0f, 1f, Config.configuration.Parcours.LineWidth);
- ConfigLinePieces[] lps = Config.configuration.Parcours.LinePieces;
- Vector3[] posvector = new Vector3[lps.Length];
- for (int i = 0; i < lps.Length; i++)
- {
- posvector[i] = new Vector3(lps[i].x, lps[i].y, 0f);
- }
- lr.positionCount = posvector.Length;
- lr.SetPositions(posvector);
- }
- }
- void PrepareLR(LineRenderer lr, GameObject Renderer)
- {
- lr.alignment = LineAlignment.TransformZ;
- lr.material = LineMaterial;
- lr.textureMode = LineTextureMode.Stretch;
- lr.useWorldSpace = false;
- lr.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
- Renderer.transform.localPosition = new Vector3(0, 0, -0.0001f);
- Renderer.transform.localRotation = Quaternion.identity;
- lr.generateLightingData = true;
- lr.numCornerVertices = 3;
- lr.numCapVertices = 3;
- }
- }
|