790 lines
21 KiB
C#
790 lines
21 KiB
C#
using UnityEngine;
|
|
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System;
|
|
using EasyRoads3D;
|
|
|
|
public class RoadObjectScript : MonoBehaviour {
|
|
static public string version = "";
|
|
public int objectType = 0;
|
|
public bool displayRoad = true;
|
|
public float roadWidth = 5.0f;
|
|
public float indent = 3.0f;
|
|
public float surrounding = 5.0f;
|
|
public float raise = 1.0f;
|
|
public float raiseMarkers = 0.5f;
|
|
public bool OOQDOOQQ = false;
|
|
public bool renderRoad = true;
|
|
public bool beveledRoad = false;
|
|
public bool applySplatmap = false;
|
|
public int splatmapLayer = 4;
|
|
public bool autoUpdate = true;
|
|
public float geoResolution = 5.0f;
|
|
public int roadResolution = 1;
|
|
public float tuw = 15.0f;
|
|
public int splatmapSmoothLevel;
|
|
public float opacity = 1.0f;
|
|
public int expand = 0;
|
|
public int offsetX = 0;
|
|
public int offsetY = 0;
|
|
private Material surfaceMaterial;
|
|
public float surfaceOpacity = 1.0f;
|
|
public float smoothDistance = 1.0f;
|
|
public float smoothSurDistance = 3.0f;
|
|
private bool handleInsertFlag;
|
|
public bool handleVegetation = true;
|
|
public float OCQQCOCCCQ = 2.0f;
|
|
public float OODODDCCCQ = 1f;
|
|
public int materialType = 0;
|
|
String[] materialStrings;
|
|
public string uname;
|
|
public string email;
|
|
private MarkerScript[] mSc;
|
|
|
|
private bool OOCDOOCQOQ;
|
|
private bool[] OCCOCODOCO = null;
|
|
private bool[] OQODOOOOQC = null;
|
|
public string[] OOCODCOQDQ;
|
|
public string[] ODODQOQO;
|
|
public int[] ODODQOQOInt;
|
|
public int OCCCOCOQOC = -1;
|
|
public int OOCOQOOODC = -1;
|
|
static public GUISkin OCDQQDOODQ;
|
|
static public GUISkin ODDOQQCQDC;
|
|
public bool ODCQDCQDOC = false;
|
|
private Vector3 cPos;
|
|
private Vector3 ePos;
|
|
public bool OCDQCOOOOC;
|
|
static public Texture2D OCDCQCDOCC;
|
|
public int markers = 1;
|
|
public OOQCOQOQQD OOOOODODCQ;
|
|
private GameObject ODOQDQOO;
|
|
public bool OQCCDOOOCC;
|
|
public bool doTerrain;
|
|
private Transform OOCODCOCQQ = null;
|
|
public GameObject[] OOCODCOCQQs;
|
|
private static string ODCCQODQCO = null;
|
|
public Transform obj;
|
|
private string OQCDDDCQQO;
|
|
public static string erInit = "";
|
|
static public Transform ODCQQODDCO;
|
|
private RoadObjectScript OQOCQODQCO;
|
|
public bool flyby;
|
|
|
|
|
|
private Vector3 pos;
|
|
private float fl;
|
|
private float oldfl;
|
|
private bool OQQOQDDQQQ;
|
|
private bool OOODCQDCOQ;
|
|
private bool OCOQDCOCCQ;
|
|
public Transform OCCOCOOOCC;
|
|
public int OdQODQOD = 1;
|
|
public float OOQQQDOD = 0f;
|
|
public float OOQQQDODOffset = 0f;
|
|
public float OOQQQDODLength = 0f;
|
|
public bool ODODDDOO = false;
|
|
static public string[] ODOQDOQO;
|
|
static public string[] ODODOQQO;
|
|
static public string[] ODODQOOQ;
|
|
public int ODQDOOQO = 0;
|
|
public string[] ODQQQQQO;
|
|
public string[] ODODDQOO;
|
|
public bool[] ODODQQOD;
|
|
public int[] OOQQQOQO;
|
|
public int ODOQOOQO = 0;
|
|
|
|
public bool forceY = false;
|
|
public float yChange = 0f;
|
|
public float floorDepth = 2f;
|
|
public float waterLevel = 1.5f;
|
|
public bool lockWaterLevel = true;
|
|
public float lastY = 0f;
|
|
public string distance = "0";
|
|
public string markerDisplayStr = "Hide Markers";
|
|
static public string[] objectStrings;
|
|
public string objectText = "Road";
|
|
public bool applyAnimation = false;
|
|
public float waveSize = 1.5f;
|
|
public float waveHeight = 0.15f;
|
|
public bool snapY = true;
|
|
|
|
private TextAnchor origAnchor;
|
|
public bool autoODODDQQO;
|
|
public Texture2D roadTexture;
|
|
public Texture2D roadMaterial;
|
|
public string[] ODCDCDCCDO;
|
|
public string[] OQDDDDCQOQ;
|
|
public int selectedWaterMaterial;
|
|
public int selectedWaterScript;
|
|
private bool doRestore = false;
|
|
public bool doFlyOver;
|
|
public static GameObject tracer;
|
|
public Camera goCam;
|
|
public float speed = 1f;
|
|
public float offset = 0f;
|
|
public bool camInit;
|
|
public GameObject customMesh = null;
|
|
static public bool disableFreeAlerts = true;
|
|
public bool multipleTerrains;
|
|
public bool editRestore = true;
|
|
public Material roadMaterialEdit;
|
|
static public int backupLocation = 0;
|
|
public string[] backupStrings = new string[2]{"Outside Assets folder path","Inside Assets folder path"};
|
|
public Vector3[] leftVecs = new Vector3[0];
|
|
public Vector3[] rightVecs = new Vector3[0];
|
|
public bool applyTangents = false;
|
|
public bool sosBuild = false;
|
|
public float splinePos = 0;
|
|
public float camHeight = 3;
|
|
public Vector3 splinePosV3 = Vector3.zero;
|
|
public bool blendFlag;
|
|
public float startBlendDistance = 5;
|
|
public float endBlendDistance = 5;
|
|
public bool iOS = false;
|
|
static public string extensionPath = "";
|
|
public void ODODCDOOQC(List<ODODDQQO> arr, String[] DOODQOQO, String[] OODDQOQO){
|
|
|
|
OCQOQOCQDC(transform, arr, DOODQOQO, OODDQOQO);
|
|
}
|
|
public void OQCQDQCDQO(MarkerScript markerScript){
|
|
|
|
OOCODCOCQQ = markerScript.transform;
|
|
|
|
|
|
|
|
List<GameObject> tmp = new List<GameObject>();
|
|
for(int i=0;i<OOCODCOCQQs.Length;i++){
|
|
if(OOCODCOCQQs[i] != markerScript.gameObject)tmp.Add(OOCODCOCQQs[i]);
|
|
}
|
|
|
|
|
|
|
|
|
|
tmp.Add(markerScript.gameObject);
|
|
OOCODCOCQQs = tmp.ToArray();
|
|
OOCODCOCQQ = markerScript.transform;
|
|
|
|
OOOOODODCQ.OOQDOCCDQO(OOCODCOCQQ, OOCODCOCQQs, markerScript.OQODDCOODQ, markerScript.OOQQQOCQCD, OCCOCOOOCC, out markerScript.OOCODCOCQQs, out markerScript.trperc, OOCODCOCQQs);
|
|
|
|
OOCOQOOODC = -1;
|
|
}
|
|
public void ODQOCODDCQ(MarkerScript markerScript){
|
|
if(markerScript.OOQQQOCQCD != markerScript.ODOOQQOO || markerScript.OOQQQOCQCD != markerScript.ODOOQQOO){
|
|
OOOOODODCQ.OOQDOCCDQO(OOCODCOCQQ, OOCODCOCQQs, markerScript.OQODDCOODQ, markerScript.OOQQQOCQCD, OCCOCOOOCC, out markerScript.OOCODCOCQQs, out markerScript.trperc, OOCODCOCQQs);
|
|
markerScript.ODQDOQOO = markerScript.OQODDCOODQ;
|
|
markerScript.ODOOQQOO = markerScript.OOQQQOCQCD;
|
|
}
|
|
if(OQOCQODQCO.autoUpdate) ODQCCQDQQC(OQOCQODQCO.geoResolution, false, false);
|
|
}
|
|
public void ResetMaterials(MarkerScript markerScript){
|
|
if(OOOOODODCQ != null)OOOOODODCQ.OOQDOCCDQO(OOCODCOCQQ, OOCODCOCQQs, markerScript.OQODDCOODQ, markerScript.OOQQQOCQCD, OCCOCOOOCC, out markerScript.OOCODCOCQQs, out markerScript.trperc, OOCODCOCQQs);
|
|
}
|
|
public void OOODQCCQDD(MarkerScript markerScript){
|
|
if(markerScript.OOQQQOCQCD != markerScript.ODOOQQOO){
|
|
OOOOODODCQ.OOQDOCCDQO(OOCODCOCQQ, OOCODCOCQQs, markerScript.OQODDCOODQ, markerScript.OOQQQOCQCD, OCCOCOOOCC, out markerScript.OOCODCOCQQs, out markerScript.trperc, OOCODCOCQQs);
|
|
markerScript.ODOOQQOO = markerScript.OOQQQOCQCD;
|
|
}
|
|
ODQCCQDQQC(OQOCQODQCO.geoResolution, false, false);
|
|
}
|
|
private void OOCQQQOODD(string ctrl, MarkerScript markerScript){
|
|
int i = 0;
|
|
foreach(Transform tr in markerScript.OOCODCOCQQs){
|
|
MarkerScript wsScript = (MarkerScript) tr.GetComponent<MarkerScript>();
|
|
if(ctrl == "rs") wsScript.LeftSurrounding(markerScript.rs - markerScript.ODOQQOOO, markerScript.trperc[i]);
|
|
else if(ctrl == "ls") wsScript.RightSurrounding(markerScript.ls - markerScript.DODOQQOO, markerScript.trperc[i]);
|
|
else if(ctrl == "ri") wsScript.LeftIndent(markerScript.ri - markerScript.OOQOQQOO, markerScript.trperc[i]);
|
|
else if(ctrl == "li") wsScript.RightIndent(markerScript.li - markerScript.ODODQQOO, markerScript.trperc[i]);
|
|
else if(ctrl == "rt") wsScript.LeftTilting(markerScript.rt - markerScript.ODDQODOO, markerScript.trperc[i]);
|
|
else if(ctrl == "lt") wsScript.RightTilting(markerScript.lt - markerScript.ODDOQOQQ, markerScript.trperc[i]);
|
|
else if(ctrl == "floorDepth") wsScript.FloorDepth(markerScript.floorDepth - markerScript.oldFloorDepth, markerScript.trperc[i]);
|
|
i++;
|
|
}
|
|
}
|
|
public void OOODDQDQQO(){
|
|
if(markers > 1) ODQCCQDQQC(OQOCQODQCO.geoResolution, false, false);
|
|
}
|
|
public void OCQOQOCQDC(Transform tr, List<ODODDQQO> arr, String[] DOODQOQO, String[] OODDQOQO){
|
|
version = "2.5.9.3";
|
|
OCDQQDOODQ = (GUISkin)Resources.Load("ER3DSkin", typeof(GUISkin));
|
|
|
|
|
|
OCDCQCDOCC = (Texture2D)Resources.Load("ER3DLogo", typeof(Texture2D));
|
|
if(RoadObjectScript.objectStrings == null){
|
|
RoadObjectScript.objectStrings = new string[3];
|
|
RoadObjectScript.objectStrings[0] = "Road Object"; RoadObjectScript.objectStrings[1]="River Object";RoadObjectScript.objectStrings[2]="Procedural Mesh Object";
|
|
}
|
|
obj = tr;
|
|
OOOOODODCQ = new OOQCOQOQQD();
|
|
OQOCQODQCO = obj.GetComponent<RoadObjectScript>();
|
|
foreach(Transform child in obj){
|
|
if(child.name == "Markers") OCCOCOOOCC = child;
|
|
}
|
|
RoadObjectScript[] rscrpts = (RoadObjectScript[])FindObjectsOfType(typeof(RoadObjectScript));
|
|
OOQCOQOQQD.terrainList.Clear();
|
|
Terrain[] terrains = (Terrain[])FindObjectsOfType(typeof(Terrain));
|
|
foreach(Terrain terrain in terrains) {
|
|
Terrains t = new Terrains();
|
|
t.terrain = terrain;
|
|
if(!terrain.gameObject.GetComponent<EasyRoads3DTerrainID>()){
|
|
EasyRoads3DTerrainID terrainscript = (EasyRoads3DTerrainID)terrain.gameObject.AddComponent<EasyRoads3DTerrainID>();
|
|
string id = UnityEngine.Random.Range(100000000,999999999).ToString();
|
|
terrainscript.terrainid = id;
|
|
t.id = id;
|
|
}else{
|
|
t.id = terrain.gameObject.GetComponent<EasyRoads3DTerrainID>().terrainid;
|
|
}
|
|
OOOOODODCQ.OCDCQQCDDC(t);
|
|
}
|
|
OQCQQDCCCO.OCDCQQCDDC();
|
|
if(roadMaterialEdit == null){
|
|
roadMaterialEdit = (Material)Resources.Load("materials/roadMaterialEdit", typeof(Material));
|
|
}
|
|
if(objectType == 0 && GameObject.Find(gameObject.name + "/road") == null){
|
|
GameObject road = new GameObject("road");
|
|
road.transform.parent = transform;
|
|
}
|
|
|
|
OOOOODODCQ.OOOODCDDQD(obj, ODCCQODQCO, OQOCQODQCO.roadWidth, surfaceOpacity, out OCDQCOOOOC, out indent, applyAnimation, waveSize, waveHeight);
|
|
OOOOODODCQ.OODODDCCCQ = OODODDCCCQ;
|
|
OOOOODODCQ.OCQQCOCCCQ = OCQQCOCCCQ;
|
|
OOOOODODCQ.OdQODQOD = OdQODQOD + 1;
|
|
OOOOODODCQ.OOQQQDOD = OOQQQDOD;
|
|
OOOOODODCQ.OOQQQDODOffset = OOQQQDODOffset;
|
|
OOOOODODCQ.OOQQQDODLength = OOQQQDODLength;
|
|
OOOOODODCQ.objectType = objectType;
|
|
OOOOODODCQ.snapY = snapY;
|
|
OOOOODODCQ.terrainRendered = OQCCDOOOCC;
|
|
OOOOODODCQ.handleVegetation = handleVegetation;
|
|
OOOOODODCQ.raise = raise;
|
|
OOOOODODCQ.roadResolution = roadResolution;
|
|
OOOOODODCQ.multipleTerrains = multipleTerrains;
|
|
OOOOODODCQ.editRestore = editRestore;
|
|
OOOOODODCQ.roadMaterialEdit = roadMaterialEdit;
|
|
OOOOODODCQ.renderRoad = renderRoad;
|
|
OOOOODODCQ.rscrpts = rscrpts.Length;
|
|
OOOOODODCQ.blendFlag = blendFlag;
|
|
OOOOODODCQ.startBlendDistance = startBlendDistance;
|
|
OOOOODODCQ.endBlendDistance = endBlendDistance;
|
|
|
|
OOOOODODCQ.iOS = iOS;
|
|
|
|
if(backupLocation == 0)ODQQDOOOOO.backupFolder = "/EasyRoads3D";
|
|
else ODQQDOOOOO.backupFolder = ODQQDOOOOO.extensionPath + "/Backups";
|
|
|
|
ODODQOQO = OOOOODODCQ.OCDCOOOOQC();
|
|
ODODQOQOInt = OOOOODODCQ.OCQQCCDCDD();
|
|
|
|
|
|
if(OQCCDOOOCC){
|
|
|
|
|
|
|
|
|
|
doRestore = true;
|
|
}
|
|
|
|
|
|
OQOQQQCDOQ();
|
|
|
|
if(arr != null || ODODQOOQ == null) OCODODQDDO(arr, DOODQOQO, OODDQOQO);
|
|
|
|
|
|
if(doRestore) return;
|
|
}
|
|
public void UpdateBackupFolder(){
|
|
}
|
|
public void ODQQCODQDC(){
|
|
if(!ODODDDOO || objectType == 2){
|
|
if(OCCOCODOCO != null){
|
|
for(int i = 0; i < OCCOCODOCO.Length; i++){
|
|
OCCOCODOCO[i] = false;
|
|
OQODOOOOQC[i] = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void OQDCOOOOQC(Vector3 pos){
|
|
|
|
|
|
if(!displayRoad){
|
|
displayRoad = true;
|
|
OOOOODODCQ.OOQCQOCOOC(displayRoad, OCCOCOOOCC);
|
|
}
|
|
pos.y += OQOCQODQCO.raiseMarkers;
|
|
if(forceY && ODOQDQOO != null){
|
|
float dist = Vector3.Distance(pos, ODOQDQOO.transform.position);
|
|
pos.y = ODOQDQOO.transform.position.y + (yChange * (dist / 100f));
|
|
}else if(forceY && markers == 0) lastY = pos.y;
|
|
GameObject go = null;
|
|
if (ODOQDQOO != null)
|
|
go = (GameObject)Instantiate (ODOQDQOO);
|
|
else {
|
|
go = Instantiate (Resources.Load ("marker", typeof(GameObject))) as GameObject;
|
|
|
|
}
|
|
Transform newnode = go.transform;
|
|
newnode.position = pos;
|
|
newnode.parent = OCCOCOOOCC;
|
|
markers++;
|
|
string n;
|
|
if(markers < 10) n = "Marker000" + markers.ToString();
|
|
else if (markers < 100) n = "Marker00" + markers.ToString();
|
|
else n = "Marker0" + markers.ToString();
|
|
newnode.gameObject.name = n;
|
|
MarkerScript scr = newnode.GetComponent<MarkerScript>();
|
|
foreach(Transform child in go.transform)
|
|
{
|
|
if(child.name == "surface"){
|
|
scr.surface = child;
|
|
if(child.GetComponent<MeshFilter>()){
|
|
if(child.GetComponent<MeshFilter> ().sharedMesh == null)child.GetComponent<MeshFilter> ().sharedMesh = new Mesh ();
|
|
if(child.GetComponent<MeshCollider>()){
|
|
child.GetComponent<MeshCollider> ().sharedMesh = child.GetComponent<MeshFilter> ().sharedMesh;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scr.OCDQCOOOOC = false;
|
|
scr.objectScript = obj.GetComponent<RoadObjectScript>();
|
|
if(ODOQDQOO == null){
|
|
scr.waterLevel = OQOCQODQCO.waterLevel;
|
|
scr.floorDepth = OQOCQODQCO.floorDepth;
|
|
scr.ri = OQOCQODQCO.indent;
|
|
scr.li = OQOCQODQCO.indent;
|
|
scr.rs = OQOCQODQCO.surrounding;
|
|
scr.ls = OQOCQODQCO.surrounding;
|
|
scr.tension = 0.5f;
|
|
if(objectType == 1){
|
|
|
|
pos.y -= waterLevel;
|
|
newnode.position = pos;
|
|
}
|
|
}
|
|
if(objectType == 2){
|
|
#if UNITY_3_5
|
|
if(scr.surface != null)scr.surface.gameObject.active = false;
|
|
#else
|
|
if(scr.surface != null)scr.surface.gameObject.SetActive(false);
|
|
#endif
|
|
}
|
|
ODOQDQOO = newnode.gameObject;
|
|
if(markers > 1){
|
|
ODQCCQDQQC(OQOCQODQCO.geoResolution, false, false);
|
|
if(materialType == 0){
|
|
|
|
OOOOODODCQ.OCCDCCQDCQ(materialType);
|
|
|
|
}
|
|
}
|
|
}
|
|
public void ODQCCQDQQC(float geo, bool renderMode, bool camMode){
|
|
OOOOODODCQ.OCDQDDDDCO.Clear();
|
|
int ii = 0;
|
|
ODQOOCQDQD k;
|
|
foreach(Transform child in obj)
|
|
{
|
|
if(child.name == "Markers"){
|
|
foreach(Transform marker in child) {
|
|
MarkerScript markerScript = marker.GetComponent<MarkerScript>();
|
|
markerScript.objectScript = obj.GetComponent<RoadObjectScript>();
|
|
if(!markerScript.OCDQCOOOOC) markerScript.OCDQCOOOOC = OOOOODODCQ.OCODDOQQDO(marker);
|
|
k = new ODQOOCQDQD();
|
|
k.position = marker.position;
|
|
k.num = OOOOODODCQ.OCDQDDDDCO.Count;
|
|
k.object1 = marker;
|
|
k.object2 = markerScript.surface;
|
|
k.tension = markerScript.tension;
|
|
k.ri = markerScript.ri;
|
|
if(k.ri < 1)k.ri = 1f;
|
|
k.li =markerScript.li;
|
|
if(k.li < 1)k.li = 1f;
|
|
k.rt = markerScript.rt;
|
|
k.lt = markerScript.lt;
|
|
k.rs = markerScript.rs;
|
|
if(k.rs < 1)k.rs = 1f;
|
|
k.OQQQOOOQQQ = markerScript.rs;
|
|
k.ls = markerScript.ls;
|
|
if(k.ls < 1)k.ls = 1f;
|
|
k.OQDDOOQCOC = markerScript.ls;
|
|
k.renderFlag = markerScript.bridgeObject;
|
|
k.OOQOCDCQDD = markerScript.distHeights;
|
|
k.newSegment = markerScript.newSegment;
|
|
k.tunnelFlag = markerScript.tunnelFlag;
|
|
k.floorDepth = markerScript.floorDepth;
|
|
k.waterLevel = waterLevel;
|
|
k.lockWaterLevel = markerScript.lockWaterLevel;
|
|
k.sharpCorner = markerScript.sharpCorner;
|
|
k.OQCQOCOOQD = OOOOODODCQ;
|
|
markerScript.markerNum = ii;
|
|
markerScript.distance = "-1";
|
|
markerScript.OCOQOQCDCD = "-1";
|
|
OOOOODODCQ.OCDQDDDDCO.Add(k);
|
|
ii++;
|
|
}
|
|
}
|
|
}
|
|
distance = "-1";
|
|
|
|
OOOOODODCQ.OOOQDCCOCD = OQOCQODQCO.roadWidth;
|
|
|
|
OOOOODODCQ.OOOOQCCQOO(geo, obj, OQOCQODQCO.OOQDOOQQ, renderMode, camMode, objectType);
|
|
if(OOOOODODCQ.leftVecs.Count > 0){
|
|
leftVecs = OOOOODODCQ.leftVecs.ToArray();
|
|
rightVecs = OOOOODODCQ.rightVecs.ToArray();
|
|
}
|
|
}
|
|
public void StartCam(){
|
|
|
|
ODQCCQDQQC(0.5f, false, true);
|
|
|
|
}
|
|
public void OQOQQQCDOQ(){
|
|
int i = 0;
|
|
foreach(Transform child in obj)
|
|
{
|
|
if(child.name == "Markers"){
|
|
i = 1;
|
|
string n;
|
|
foreach(Transform marker in child) {
|
|
if(i < 10) n = "Marker000" + i.ToString();
|
|
else if (i < 100) n = "Marker00" + i.ToString();
|
|
else n = "Marker0" + i.ToString();
|
|
marker.name = n;
|
|
ODOQDQOO = marker.gameObject;
|
|
i++;
|
|
}
|
|
}
|
|
}
|
|
markers = i - 1;
|
|
|
|
ODQCCQDQQC(OQOCQODQCO.geoResolution, false, false);
|
|
}
|
|
public List<Transform> RebuildObjs(){
|
|
RoadObjectScript[] scripts = (RoadObjectScript[])FindObjectsOfType(typeof(RoadObjectScript));
|
|
List<Transform> rObj = new List<Transform>();
|
|
foreach (RoadObjectScript script in scripts) {
|
|
if(script.transform != transform) rObj.Add(script.transform);
|
|
}
|
|
return rObj;
|
|
}
|
|
public void RestoreTerrain1(){
|
|
|
|
ODQCCQDQQC(OQOCQODQCO.geoResolution, false, false);
|
|
if(OOOOODODCQ != null) OOOOODODCQ.OOOQOODDOC();
|
|
ODODDDOO = false;
|
|
}
|
|
public void ODCDQOOOQC(){
|
|
OOOOODODCQ.ODCDQOOOQC(OQOCQODQCO.applySplatmap, OQOCQODQCO.splatmapSmoothLevel, OQOCQODQCO.renderRoad, OQOCQODQCO.tuw, OQOCQODQCO.roadResolution, OQOCQODQCO.raise, OQOCQODQCO.opacity, OQOCQODQCO.expand, OQOCQODQCO.offsetX, OQOCQODQCO.offsetY, OQOCQODQCO.beveledRoad, OQOCQODQCO.splatmapLayer, OQOCQODQCO.OdQODQOD, OOQQQDOD, OOQQQDODOffset, OOQQQDODLength);
|
|
}
|
|
public void OQOQQDOQDQ(){
|
|
OOOOODODCQ.OQOQQDOQDQ(OQOCQODQCO.renderRoad, OQOCQODQCO.tuw, OQOCQODQCO.roadResolution, OQOCQODQCO.raise, OQOCQODQCO.beveledRoad, OQOCQODQCO.OdQODQOD, OOQQQDOD, OOQQQDODOffset, OOQQQDODLength);
|
|
}
|
|
public void OQODDQOODQ(Vector3 pos, bool doInsert){
|
|
|
|
|
|
if(!displayRoad){
|
|
displayRoad = true;
|
|
OOOOODODCQ.OOQCQOCOOC(displayRoad, OCCOCOOOCC);
|
|
}
|
|
|
|
int first = -1;
|
|
int second = -1;
|
|
float dist1 = 10000;
|
|
float dist2 = 10000;
|
|
Vector3 newpos = pos;
|
|
ODQOOCQDQD k;
|
|
ODQOOCQDQD k1 = (ODQOOCQDQD)OOOOODODCQ.OCDQDDDDCO[0];
|
|
ODQOOCQDQD k2 = (ODQOOCQDQD)OOOOODODCQ.OCDQDDDDCO[1];
|
|
|
|
if(doInsert){
|
|
|
|
}
|
|
OOOOODODCQ.OOOCDCDQDD(pos, out first, out second, out dist1, out dist2, out k1, out k2, out newpos, doInsert);
|
|
if(doInsert){
|
|
|
|
|
|
}
|
|
pos = newpos;
|
|
if(doInsert && first >= 0 && second >= 0){
|
|
|
|
|
|
if(OQOCQODQCO.OOQDOOQQ && second == OOOOODODCQ.OCDQDDDDCO.Count - 1){
|
|
OQDCOOOOQC(pos);
|
|
}else{
|
|
k = (ODQOOCQDQD)OOOOODODCQ.OCDQDDDDCO[second];
|
|
string name = k.object1.name;
|
|
string n;
|
|
int j = second + 2;
|
|
for(int i = second; i < OOOOODODCQ.OCDQDDDDCO.Count - 1; i++){
|
|
k = (ODQOOCQDQD)OOOOODODCQ.OCDQDDDDCO[i];
|
|
if(j < 10) n = "Marker000" + j.ToString();
|
|
else if (j < 100) n = "Marker00" + j.ToString();
|
|
else n = "Marker0" + j.ToString();
|
|
k.object1.name = n;
|
|
j++;
|
|
}
|
|
k = (ODQOOCQDQD)OOOOODODCQ.OCDQDDDDCO[first];
|
|
Transform newnode = (Transform)Instantiate(k.object1.transform, pos, k.object1.rotation);
|
|
newnode.gameObject.name = name;
|
|
newnode.parent = OCCOCOOOCC;
|
|
newnode.SetSiblingIndex(second);
|
|
MarkerScript scr = newnode.GetComponent<MarkerScript>();
|
|
scr.OCDQCOOOOC = false;
|
|
float totalDist = dist1 + dist2;
|
|
float perc1 = dist1 / totalDist;
|
|
float paramDif = k1.ri - k2.ri;
|
|
scr.ri = k1.ri - (paramDif * perc1);
|
|
paramDif = k1.li - k2.li;
|
|
scr.li = k1.li - (paramDif * perc1);
|
|
paramDif = k1.rt - k2.rt;
|
|
scr.rt = k1.rt - (paramDif * perc1);
|
|
paramDif = k1.lt - k2.lt;
|
|
scr.lt = k1.lt - (paramDif * perc1);
|
|
paramDif = k1.rs - k2.rs;
|
|
scr.rs = k1.rs - (paramDif * perc1);
|
|
paramDif = k1.ls - k2.ls;
|
|
scr.ls = k1.ls - (paramDif * perc1);
|
|
ODQCCQDQQC(OQOCQODQCO.geoResolution, false, false);
|
|
if(materialType == 0)OOOOODODCQ.OCCDCCQDCQ(materialType);
|
|
#if UNITY_3_5
|
|
if(objectType == 2) scr.surface.gameObject.active = false;
|
|
#else
|
|
if(objectType == 2) scr.surface.gameObject.SetActive(false);
|
|
#endif
|
|
}
|
|
}
|
|
OQOQQQCDOQ();
|
|
}
|
|
public void OCDCCCOCDD(){
|
|
|
|
DestroyImmediate(OQOCQODQCO.OOCODCOCQQ.gameObject);
|
|
OOCODCOCQQ = null;
|
|
OQOQQQCDOQ();
|
|
}
|
|
public void OCCCDOQDOD(){
|
|
|
|
OOOOODODCQ.OOQODOOQOD(12);
|
|
|
|
}
|
|
|
|
public List<SideObjectParams> OOCCOOODOO(){
|
|
|
|
List<SideObjectParams> param = new List<SideObjectParams>();
|
|
SideObjectParams sop;
|
|
foreach(Transform child in obj){
|
|
if(child.name == "Markers"){
|
|
foreach(Transform marker in child){
|
|
MarkerScript markerScript = marker.GetComponent<MarkerScript>();
|
|
sop = new SideObjectParams();
|
|
sop.ODDGDOOO = markerScript.ODDGDOOO;
|
|
sop.ODDQOODO = markerScript.ODDQOODO;
|
|
sop.ODDQOOO = markerScript.ODDQOOO;
|
|
param.Add(sop);
|
|
}
|
|
}
|
|
}
|
|
return param;
|
|
|
|
}
|
|
public void OCCDOOOOCC(){
|
|
|
|
List<string> arrNames = new List<string>();
|
|
List<int> arrInts = new List<int>();
|
|
List<string> arrIDs = new List<string>();
|
|
|
|
for(int i=0;i<ODODOQQO.Length;i++){
|
|
if(ODODQQOD[i] == true){
|
|
arrNames.Add(ODODQOOQ[i]);
|
|
arrIDs.Add(ODODOQQO[i]);
|
|
arrInts.Add(i);
|
|
}
|
|
}
|
|
ODODDQOO = arrNames.ToArray();
|
|
OOQQQOQO = arrInts.ToArray();
|
|
|
|
}
|
|
public void OCODODQDDO(List<ODODDQQO> arr, String[] DOODQOQO, String[] OODDQOQO){
|
|
|
|
|
|
|
|
|
|
bool saveSOs = false;
|
|
ODODOQQO = DOODQOQO;
|
|
ODODQOOQ = OODDQOQO;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<MarkerScript> markerArray = new List<MarkerScript>();
|
|
if(obj == null)OCQOQOCQDC(transform, null, null, null);
|
|
foreach(Transform child in obj) {
|
|
if(child.name == "Markers"){
|
|
foreach(Transform marker in child) {
|
|
MarkerScript markerScript = marker.GetComponent<MarkerScript>();
|
|
markerScript.OQODQQDO.Clear();
|
|
markerScript.ODOQQQDO.Clear();
|
|
markerScript.OQQODQQOO.Clear();
|
|
markerScript.ODDOQQOO.Clear();
|
|
markerArray.Add(markerScript);
|
|
}
|
|
}
|
|
}
|
|
mSc = markerArray.ToArray();
|
|
|
|
|
|
|
|
|
|
|
|
List<bool> arBools = new List<bool>();
|
|
|
|
|
|
|
|
int counter1 = 0;
|
|
int counter2 = 0;
|
|
|
|
if(ODQQQQQO != null){
|
|
|
|
if(arr.Count == 0) return;
|
|
|
|
|
|
|
|
for(int i = 0; i < ODODOQQO.Length; i++){
|
|
ODODDQQO so = (ODODDQQO)arr[i];
|
|
|
|
for(int j = 0; j < ODQQQQQO.Length; j++){
|
|
if(ODODOQQO[i] == ODQQQQQO[j]){
|
|
counter1++;
|
|
|
|
|
|
if(ODODQQOD.Length > j ) arBools.Add(ODODQQOD[j]);
|
|
else arBools.Add(false);
|
|
|
|
foreach(MarkerScript scr in mSc) {
|
|
|
|
|
|
int l = -1;
|
|
for(int k = 0; k < scr.ODDOOQDO.Length; k++){
|
|
if(so.id == scr.ODDOOQDO[k]){
|
|
l = k;
|
|
break;
|
|
}
|
|
}
|
|
if(l >= 0){
|
|
scr.OQODQQDO.Add(scr.ODDOOQDO[l]);
|
|
scr.ODOQQQDO.Add(scr.ODDGDOOO[l]);
|
|
scr.OQQODQQOO.Add(scr.ODDQOOO[l]);
|
|
|
|
if(so.sidewaysDistanceUpdate == 0 || (so.sidewaysDistanceUpdate == 2 && (float)scr.ODDQOODO[l] != so.oldSidwaysDistance)){
|
|
scr.ODDOQQOO.Add(scr.ODDQOODO[l]);
|
|
|
|
}else{
|
|
scr.ODDOQQOO.Add(so.splinePosition);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}else{
|
|
scr.OQODQQDO.Add(so.id);
|
|
scr.ODOQQQDO.Add(so.markerActive);
|
|
scr.OQQODQQOO.Add(true);
|
|
scr.ODDOQQOO.Add(so.splinePosition);
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
if(so.sidewaysDistanceUpdate != 0){
|
|
|
|
|
|
|
|
}
|
|
saveSOs = false;
|
|
}
|
|
}
|
|
|
|
|
|
for(int i = 0; i < ODODOQQO.Length; i++){
|
|
ODODDQQO so = (ODODDQQO)arr[i];
|
|
bool flag = false;
|
|
for(int j = 0; j < ODQQQQQO.Length; j++){
|
|
|
|
if(ODODOQQO[i] == ODQQQQQO[j])flag = true;
|
|
}
|
|
if(!flag){
|
|
counter2++;
|
|
|
|
arBools.Add(false);
|
|
|
|
foreach(MarkerScript scr in mSc) {
|
|
scr.OQODQQDO.Add(so.id);
|
|
scr.ODOQQQDO.Add(so.markerActive);
|
|
scr.OQQODQQOO.Add(true);
|
|
scr.ODDOQQOO.Add(so.splinePosition);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
ODODQQOD = arBools.ToArray();
|
|
|
|
|
|
ODQQQQQO = new String[ODODOQQO.Length];
|
|
ODODOQQO.CopyTo(ODQQQQQO,0);
|
|
|
|
|
|
|
|
|
|
|
|
List<int> arInt= new List<int>();
|
|
for(int i = 0; i < ODODQQOD.Length; i++){
|
|
if(ODODQQOD[i]) arInt.Add(i);
|
|
}
|
|
OOQQQOQO = arInt.ToArray();
|
|
|
|
|
|
foreach(MarkerScript scr in mSc) {
|
|
scr.ODDOOQDO = scr.OQODQQDO.ToArray();
|
|
scr.ODDGDOOO = scr.ODOQQQDO.ToArray();
|
|
scr.ODDQOOO = scr.OQQODQQOO.ToArray();
|
|
scr.ODDQOODO = scr.ODDOQQOO.ToArray();
|
|
|
|
}
|
|
if(saveSOs){
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
public void SetMultipleTerrains(bool flag){
|
|
RoadObjectScript[] scrpts = (RoadObjectScript[])FindObjectsOfType(typeof(RoadObjectScript));
|
|
foreach(RoadObjectScript scr in scrpts){
|
|
scr.multipleTerrains = flag;
|
|
if(scr.OOOOODODCQ != null)scr.OOOOODODCQ.multipleTerrains = flag;
|
|
}
|
|
}
|
|
public bool CheckWaterHeights(){
|
|
if(OQCQQDCCCO.terrain == null) return false;
|
|
bool flag = true;
|
|
|
|
float y = OQCQQDCCCO.terrain.transform.position.y;
|
|
foreach(Transform child in obj) {
|
|
if(child.name == "Markers"){
|
|
foreach(Transform marker in child) {
|
|
|
|
if(marker.position.y - y <= 0.1f) flag = false;
|
|
}
|
|
}
|
|
}
|
|
return flag;
|
|
}
|
|
}
|