public void setInitialpos() { altitude = alldata[0][3]; float[] xzy = MathCalculations.Convert(alldata[0][1], alldata[0][2], alldata[0][3]); //lat long //MathCalculations.DistanceToLatlong(new Vector2(xzy[0], xzy[1])); x = xzy[0]; z = xzy[1]; //maxheight = y; y = xzy[2]; targetPosition = new Vector3(x, y, z); transform.localPosition = targetPosition; //This is correct and verified roll = alldata[0][4]; pitch = alldata[0][5]; heading = alldata[0][6]; speed = alldata[0][11]; targetRotation = Quaternion.Euler(pitch, heading, -roll); //roll and heading are swapped transform.localRotation = targetRotation; startPosition = targetPosition = gameObject.transform.localPosition; startRotation = targetRotation = transform.localRotation; initialPosition = transform.position; t1 = alldata[0][0]; //Debug.Log("Time T1"+ t1); //Add Time Offset to start time //int offset = (type == "F7") ? 8 : 0; // hr = GameObject.Find("StartTimeManager").GetComponent<EditStartTime>().hrs.ToString(); // min = GameObject.Find ("StartTimeManager").GetComponent<EditStartTime> ().mins.ToString(); // sec = GameObject.Find ("StartTimeManager").GetComponent<EditStartTime> ().secs.ToString(); // // updatedStartTime = hr + ":" + min + ":" + sec; //Debug.Log ("Updated Time From UI From AddMission Scene = " + updatedStartTime); localtime = MathCalculations.ConvertTime(t1, offset); // hr = PlayerPrefs.GetFloat("StartHour").ToString(); // min = PlayerPrefs.GetFloat("StartMinute").ToString(); // sec = PlayerPrefs.GetFloat("StartSecond").ToString(); //UnityEngine.Debug.Log("list values" + TailIDElements); //starttime = updatedStartTime; starttime = localtime; //Debug.Log("Starttime after mathcalculation = "+ starttime); endtime = MathCalculations.ConvertTime(alldata[alldata.Count - 1][0], offset); //dashboardData = alldata[counterAllData]; counterAllData = 1; //time.GetComponent<TextMesh>().text = "Local Time:\n" + localtime; planeInfo.GetComponent <TextMesh>().text = "Callsign: " + callsign + "\nTailID: " + tailID + "\nAltitude: " + altitude.ToString() + "ft\nHeading: " + heading.ToString() + "\nSpeed: " + speed.ToString() + "kn"; }
public void ExtractData(string filepath) { string[] text = File.ReadAllText(filepath).Split('\n'); //Debug.Log(filepath); text = text.Skip(3).ToArray(); //Debug.Log(text[0]); alldata.Clear(); foreach (var item in text) { //Debug.Log(item); if (!(item == "")) { string[] datapoints = item.Split('\t'); List <float> rdata = new List <float>(); int maxFields = 0; foreach (var datapoint in datapoints) { float num1; bool res = float.TryParse(datapoint, out num1); if (res) { rdata.Add(float.Parse(datapoint)); maxFields++; if (maxFields >= 12) { break; } } } if (rdata[11] >= 100) { alldata.Add(rdata); } } } //Etime = alldata[alldata.Count-1][0]; for (int i = 0; i < alldata.Count; i++) { Stime = MathCalculations.ConvertTime(alldata[0][0]); Etime = MathCalculations.ConvertTime(alldata[i][0]); leftlat = Math.Min(leftlat, alldata[i][1]); leftlong = Math.Min(leftlong, alldata[i][2]); rightlat = Math.Max(rightlat, alldata[i][1]); rightlong = Math.Max(rightlong, alldata[i][2]); } Debug.Log(filepath + " starttime " + Stime + " endtime " + Etime); }
public void RecieveData() { Byte[] recData = receivingUdpClient.Receive(ref RemoteIpEndPoint); ACMIdata liveData = new ACMIdata(); if (recData.Length == 289) { liveData.Time = BitConverter.ToSingle(recData, 5); liveData.TailID = BitConverter.ToInt32(recData, 9); liveData.AircraftType = BitConverter.ToInt32(recData, 13); liveData.Latitude = BitConverter.ToSingle(recData, 17); liveData.Longitude = BitConverter.ToSingle(recData, 21); liveData.Altitude = BitConverter.ToSingle(recData, 25); liveData.Roll = BitConverter.ToSingle(recData, 29); liveData.Pitch = BitConverter.ToSingle(recData, 33); liveData.Heading = BitConverter.ToSingle(recData, 37); liveData.MachNo = BitConverter.ToSingle(recData, 41); liveData.Speed = BitConverter.ToSingle(recData, 45); liveData.G = BitConverter.ToSingle(recData, 49); liveData.Aoa = BitConverter.ToSingle(recData, 53); //Debug.Log("<<<<<<<<<<<<<<<<<<<<<<<DATA PACKET>>>>>>>>>>>>>>>>>>>>>\n"); //Debug.Log("Time:\t\t" + MathCalculations.ConvertTime(liveData.Time)); //Debug.Log("Tail ID:\t\t" + liveData.TailID); //Debug.Log("Aircraft Type:\t\t " + liveData.AircraftType); //Debug.Log("Latitude:\t\t" + liveData.Latitude); //Debug.Log("Longitude:\t\t" + liveData.Longitude); //Debug.Log("Altitude:\t\t" + liveData.Altitude); //Debug.Log("Roll:\t\t" + liveData.Roll); //Debug.Log("Pitch:\t\t" + liveData.Pitch); //Debug.Log("Heading:\t\t" + liveData.Heading); //Debug.Log("Mach No:\t\t" + liveData.MachNo); //Debug.Log("Speed:\t\t" + liveData.Speed); //Debug.Log("G:\t\t" + liveData.G); //Debug.Log("Aoa:\t\t" + liveData.Aoa); //Debug.Log("<<<<<<<<<<<<<<<<<<<<<<<DATA PACKET>>>>>>>>>>>>>>>>>>>>>\n"); //DICTIONARY KA KAM var key = liveData.TailID; liveDataPackets[key] = liveData; ExecuteEvents.Execute <IliveDataRecieved>(GameObject.Find("LiveDataManager"), null, (x, y) => x.liveDataRecieved(liveDataPackets[key])); localTimeText.text = MathCalculations.ConvertTime(liveDataPackets[key].Time); } }
public void SetCurrentPosition(int positionId) { altitude = alldata[positionId][3]; float[] xzy = MathCalculations.Convert(alldata[positionId][1], alldata[positionId][2], alldata[positionId][3]); //lat long x = xzy[0]; z = xzy[1]; //maxheight = y; y = xzy[2]; targetPosition = new Vector3(x, y, z); transform.localPosition = targetPosition; //This is correct and verified roll = alldata[positionId][4]; pitch = alldata[positionId][5]; heading = alldata[positionId][6]; speed = alldata[positionId][11]; targetRotation = Quaternion.Euler(pitch, heading, -roll); //roll and heading are swapped transform.localRotation = targetRotation; startPosition = targetPosition = gameObject.transform.localPosition; startRotation = targetRotation = transform.localRotation; t1 = alldata[positionId][0]; //Add Time Offset to start time int offset = (type == "F7") ? 8 : 0; localtime = MathCalculations.ConvertTime(t1, offset); //dashboardData = alldata[counterAllData]; counterAllData = positionId + 1; //time.GetComponent<TextMesh>().text = "Local Time:\n" + localtime; planeInfo.GetComponent <TextMesh>().text = "Callsign: " + callsign + "\nTailID: " + tailID + "\nAltitude: " + altitude.ToString() + "ft\nHeading: " + heading.ToString() + "\nSpeed: " + speed.ToString() + "kn"; }
//Main thread //TODO : Parallel thread public void ExtractData(string debugPath = "") { counterAllData = 0; //type = textFile.name.Split('_')[0]; //callsign = textFile.name.Split('_')[2]; //Name = textFile.name.Split('_')[1]; //string filePath = missionFolder + "\\RawData\\" + Filename.text; // UnityEngine.Debug.Log(filePath); string path; if (debugPath == "") { path = Application.dataPath + "\\StreamingAssets\\MissionData\\" + missionFolder + "\\RawData\\" + Filename.text + ".txt"; } else { path = Application.dataPath + "\\StreamingAssets\\MissionData\\" + debugPath; } string FileData = File.ReadAllText(path); //TextAsset textFile = Resources.Load<TextAsset>("MissionData\\" + missionFolder + "\\RawData\\" + Filename.text) as TextAsset; //string path = Application.dataPath + "\\Resources\\MissionData\\" + missionFolder + "\\RawData\\" + Filename.text + ".txt"; //string FileData = File.ReadAllText(path); //string text = textFile.text; string[] data = FileData.Split('\n').Skip(3).ToArray(); alldata.Clear(); foreach (var item in data) { if (!(item == "")) { string[] datapoints = item.Split('\t'); List <float> rdata = new List <float>(); int maxFields = 0; foreach (var datapoint in datapoints) { float num1; bool res = float.TryParse(datapoint, out num1); if (res) { rdata.Add(num1); maxFields++; if (maxFields >= 15) { break; } } } if (DateTimeOffset.Parse(MathCalculations.ConvertTime(rdata[0])) >= DateTimeOffset.Parse(MathCalculations.missionStart)) { if (taxiData.isOn) { if (typeAC.text == "AGSTA") //highest speed is 160 for AGSTA { if (rdata[11] >= 20) { alldata.Add(rdata); } } else { if (rdata[11] >= 100) { alldata.Add(rdata); } } } else { alldata.Add(rdata); } // //Data Extraction } } } t1 = alldata[0][0]; localtime = MathCalculations.ConvertTime(t1, offset); starttime = localtime; endtime = MathCalculations.ConvertTime(alldata[alldata.Count - 1][0], offset); Save(); }
// Update is called once per frame void FixedUpdate() { //Object Position and rotation Updated if (flag && startReal) { if (counterAllData < alldata.Count) { if (timerTime >= timeDeltaConstant) { timerTime = 0f; //Display(); planeInfo.GetComponent <TextMesh>().text = "Call Sign: " + callsign + "\nTailID: " + tailID + "\nAltitude: " + altitude.ToString() + "\nHeading: " + heading.ToString() + "\nSpeed: " + speed.ToString(); //time.GetComponent<TextMesh>().text = "Local Time:\n" + localtime; List <float> data = alldata[counterAllData]; dashboardData = alldata[counterAllData - 1]; //alldata.RemoveAt(0); if (playdirection) { counterAllData++; } else { if (counterAllData != 0) { counterAllData--; } } t2 = data[0]; localtime = MathCalculations.ConvertTime(t2); if (t2 > t1) { timeToReachTarget = (float)(t2 - t1); } else { timeToReachTarget = (float)(t1 - t2); } timeDeltaConstant = timeToReachTarget; t1 = t2; altitude = data[3]; float[] xzy = MathCalculations.Convert(data[1], data[2], data[3]); x = xzy[0]; z = xzy[1]; y = xzy[2]; //This is correct and verified roll = data[4]; pitch = data[5]; heading = data[6]; speed = data[11]; targetRotation = Quaternion.Euler(pitch, heading, -roll); /*assuming plane is facing left, * roll is Rotation on longitudinal axis * pitch is Rotation on lateral axis * yaw is Rotation on vertical axis*/ if (data[14] != 0 || toggleMissileLaunch) { toggleMissileLaunch = false; Debug.Log("Mission Event Happened"); int x = GetCounterAllData() + GetOffsetTime(); events.AddMissionEvent(localtime.ToString() + " " + callsign, x); LaunchMissile(); //localtime.ToString() + " " + transform.name; } deltat = 0; startPosition = gameObject.transform.localPosition; startRotation = gameObject.transform.localRotation; //We are dealing with 200 milliseconds //timeToReachTarget = 0.2f; targetPosition = new Vector3(x, y, z); //Vector3.RotateTowards(transform.forward, targetPosition, 0.2f * Time.deltaTime, 0.0f); // transform.rotat(targetPosition); //transform.rotation = Quaternion.LookRotation(targetPosition); } //gameObject.transform.position += transform.forward * Time.deltaTime * 2; float varDeltaTime = Time.fixedDeltaTime; float ratio = varDeltaTime / timeToReachTarget; timerTime += varDeltaTime; gameObject.transform.localPosition = Vector3.Lerp(startPosition, targetPosition, ratio); //callSignObj.transform.localPosition = gameObject.transform.localPosition; transform.localRotation = Quaternion.Slerp(startRotation, targetRotation, ratio); // callSignObj.transform.localPosition = gameObject.transform.localPosition; timeToReachTarget -= varDeltaTime; anchor.SetPosition(0, gameObject.transform.GetChild(1).GetChild(1).position + (Vector3.down * 0.008f)); anchor.SetPosition(1, gameObject.transform.GetChild(0).position); //Vector3 v = Camera.main.transform.position - transform.position; //v.x = v.z = 0.0f; //callSignObj.transform.LookAt(Camera.main.transform.position - v); //callSignObj.transform.Rotate(0, 180, 0); } else { dashboardData = alldata[counterAllData - 1]; } } }
public void ExtractData() { //type = textFile.name.Split('_')[0]; //callsign = textFile.name.Split('_')[2]; //Name = textFile.Split('_')[1]; Name = (Path.GetFileName(textFile)); string text = textFile; //textFile.text string[] data = text.Split('\n').Skip(3).ToArray(); foreach (var item in data) { Debug.Log("All DATA ALTER ====" + item.ToString()); } alldata.Clear(); bool IsLoaded = false; if (loadFromFile) { IsLoaded = Load(Name); //Load(textFile.name); } if (!IsLoaded) { foreach (var item in data) { if (!(item == "")) { string[] datapoints = item.Split('\t'); List <float> rdata = new List <float>(); int maxFields = 0; foreach (var datapoint in datapoints) { float num1; bool res = float.TryParse(datapoint, out num1); if (res) { rdata.Add(num1); maxFields++; if (maxFields >= 15) { break; } } } if (DateTimeOffset.Parse(MathCalculations.ConvertTime(rdata[0])) >= DateTimeOffset.Parse(MathCalculations.missionStart)) { // //Data Extraction if (type == "AGSTA") //highest speed is 160 for AGSTA { if (rdata[11] >= 20) { alldata.Add(rdata); } } else { if (rdata[11] >= 100) { alldata.Add(rdata); } } } } } } }