void Start()
    {
        TeachIp          = new IPEndPoint(IPAddress.Parse(File.ReadAllText("ip.txt")), 16000);
        this.clientTeach = new UdpClient(12000);
        ip                     = new IPEndPoint(IPAddress.Any, 0);
        angle                  = DefaultAngle;
        lastAngle              = DefaultAngle;
        otherAngle             = DefaultAngle;
        command                = default(TeachingCommand);
        angleWithLocation      = default(AngleWithLocation);
        otherAngleWithLocation = default(AngleWithLocation);

        SendThreading = new Thread(new ThreadStart(SendRotation));
        SendThreading.Start();
        SendThreading.Name = "SendEvent" + base.transform.name;

        RecieveThread = new Thread(new ThreadStart(RecieveData));
        RecieveThread.Start();
        RecieveThread.Name = "RecieveEvent";

        RecieveFromTeachThread = new Thread(new ThreadStart(RecieveDataFromTeach));
        RecieveFromTeachThread.Start();
        RecieveFromTeachThread.Name = "RecieveFromTeachEvent";
        //UdpPlatform.Instance.SendString("Udp Start");

        Task.Run(() =>
        {
            while (true)
            {
                //var ipRe = new IPEndPoint(IPAddress.Parse("192.168.0.135"), 16000);
                //var bytes = this.clientTeach.Receive(ref ipRe);
                var bytes  = this.clientTeach.Receive(ref TeachIp);
                var length = bytes.Length;
                if (length == StructHelper.GetStructSize <TeachingCommand>())
                {
                    command = StructHelper.BytesToStruct <TeachingCommand>(bytes);
                    this.IsSendFromTeachingPlatform = command.IsStart == 1;
                }
            }
        });

        Task.Run(() =>
        {
            while (true)
            {
                UdpPlatform.Instance.SendData(this.angleWithLocation, new IPEndPoint(IPAddress.Broadcast, 16000));
                Thread.Sleep(20);
            }
        });

        if (this.MemDB.Init(this.memName) == 0 || this.MemDB.Init("GAME_SHARED_MEM_0000") == 0)
        {
            Debug.Log("Run");
        }
        else
        {
            Debug.Log("no Run");
            Time.timeScale = 0f;
        }
    }
 private static int AngleDefSortComparison(AngleDef def1, AngleDef def2)
 {
     if (def1.m_Angle < def2.m_Angle)
     {
         return(-1);
     }
     if (def1.m_Angle > def2.m_Angle)
     {
         return(1);
     }
     return(0);
 }
    private float CalculateSpeed(AngleDef angle1, AngleDef angle2)
    {
        try
        {
            var deltaTime = Mathf.Abs(angle1.Time - angle2.Time);

            return((Mathf.Abs((angle1.Roll - angle2.Roll) / deltaTime) +

                    Mathf.Abs((angle1.Pitch - angle2.Pitch) / deltaTime)) * 0.02f);
        }

        catch
        {
            return(0);
        }
    }
    private void SendRotation()
    {
        while (true)
        {
            myAngleTime += 0.0015f;
            if (this.IsSend && this.IsSendFromTeachingPlatform == true)
            {
                this.angle.Time = myAngleTime;

                this.angle.Speed = CalculateSpeed(angle, lastAngle);

                UdpPlatform.Instance.SendData(this.angle);
            }
            lastAngle = angle;
            Thread.Sleep(1);
        }
    }
 private void Awake()
 {
     if (this.m_AngleDefs.Count != 0)
     {
         for (int i = 0; i < this.m_AngleDefs.Count; i++)
         {
             this.m_sortedAngleDefIndexes.Add(i);
         }
         this.m_sortedAngleDefIndexes.Sort(delegate(int index1, int index2) {
             AngleDef def  = this.m_AngleDefs[index1];
             AngleDef def2 = this.m_AngleDefs[index2];
             return(AngleDefSortComparison(def, def2));
         });
         this.m_angleIndex    = 0;
         this.m_minAngleIndex = 0;
         this.m_maxAngleIndex = 0;
         float angle = this.m_AngleDefs[0].m_Angle;
         float num3  = angle;
         for (int j = 0; j < this.m_sortedAngleDefIndexes.Count; j++)
         {
             AngleDef def = this.m_AngleDefs[this.m_sortedAngleDefIndexes[j]];
             if (def.m_Angle < angle)
             {
                 angle = def.m_Angle;
                 this.m_minAngleIndex = j;
             }
             if (def.m_Angle > num3)
             {
                 num3 = def.m_Angle;
                 this.m_maxAngleIndex = j;
             }
             if (def.m_Default)
             {
                 this.m_angleIndex = j;
                 this.SetAngle(def.m_Angle);
             }
         }
     }
 }
    private void RotateRight()
    {
        AngleDef angleDef = this.GetAngleDef();
        float    angle    = Mathf.MoveTowards(this.m_angle, angleDef.m_Angle, this.m_RotationSpeed * UnityEngine.Time.deltaTime);

        if (angle >= angleDef.m_Angle)
        {
            if ((this.m_requestedRotationDir == 0) || (this.m_angleIndex == this.m_maxAngleIndex))
            {
                this.SetAngle(angle);
                this.StopRotating();
            }
            else
            {
                this.m_angleIndex++;
            }
        }
        else
        {
            this.SetAngle(angle);
        }
    }
Exemple #7
0
 public static int AngleDefSortComparison(AngleDef def1, AngleDef def2)
 {
     object[] objArray1 = new object[] { def1, def2 };
     return(MonoClass.smethod_14 <int>(TritonHs.MainAssemblyPath, "", "GVGLaserGun", "AngleDefSortComparison", objArray1));
 }