Ejemplo n.º 1
0
    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";
    }
Ejemplo n.º 2
0
    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);
    }
Ejemplo n.º 3
0
    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);
        }
    }
Ejemplo n.º 4
0
    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";
    }
Ejemplo n.º 5
0
    //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();
    }
Ejemplo n.º 6
0
    // 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];
            }
        }
    }
Ejemplo n.º 7
0
    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);
                            }
                        }
                    }
                }
            }
        }
    }