//[System.Diagnostics.DebuggerStepThrough]
            public override void Deserialize(byte[] SERIALIZEDSTUFF, ref int currentIndex)
            {
                int  arraylength       = -1;
                bool hasmetacomponents = false;
                int  piecesize         = 0;

                byte[] thischunk, scratch1, scratch2;
                IntPtr h;
                object __thing;

                //time_step
                piecesize = Marshal.SizeOf(typeof(double));
                h         = IntPtr.Zero;
                if (SERIALIZEDSTUFF.Length - currentIndex != 0)
                {
                    h = Marshal.AllocHGlobal(piecesize);
                    Marshal.Copy(SERIALIZEDSTUFF, currentIndex, h, piecesize);
                }
                if (h == IntPtr.Zero)
                {
                    throw new Exception("Alloc failed");
                }
                time_step = (double)Marshal.PtrToStructure(h, typeof(double));
                Marshal.FreeHGlobal(h);
                currentIndex += piecesize;
                //pause
                pause = SERIALIZEDSTUFF[currentIndex++] == 1;
                //max_update_rate
                piecesize = Marshal.SizeOf(typeof(double));
                h         = IntPtr.Zero;
                if (SERIALIZEDSTUFF.Length - currentIndex != 0)
                {
                    h = Marshal.AllocHGlobal(piecesize);
                    Marshal.Copy(SERIALIZEDSTUFF, currentIndex, h, piecesize);
                }
                if (h == IntPtr.Zero)
                {
                    throw new Exception("Alloc failed");
                }
                max_update_rate = (double)Marshal.PtrToStructure(h, typeof(double));
                Marshal.FreeHGlobal(h);
                currentIndex += piecesize;
                //gravity
                gravity = new Vector3(SERIALIZEDSTUFF, ref currentIndex);
                //ode_config
                ode_config = new Messages.gazebo_msgs.ODEPhysics(SERIALIZEDSTUFF, ref currentIndex);
                //success
                success = SERIALIZEDSTUFF[currentIndex++] == 1;
                //status_message
                status_message = "";
                piecesize      = BitConverter.ToInt32(SERIALIZEDSTUFF, currentIndex);
                currentIndex  += 4;
                status_message = Encoding.ASCII.GetString(SERIALIZEDSTUFF, currentIndex, piecesize);
                currentIndex  += piecesize;
            }
Exemplo n.º 2
0
            public override byte[] Serialize(bool partofsomethingelse)
            {
                int  currentIndex = 0, length = 0;
                bool hasmetacomponents = false;

                byte[]        thischunk, scratch1, scratch2;
                List <byte[]> pieces = new List <byte[]>();
                GCHandle      h;

                //time_step
                scratch1 = new byte[Marshal.SizeOf(typeof(double))];
                h        = GCHandle.Alloc(scratch1, GCHandleType.Pinned);
                Marshal.StructureToPtr(time_step, h.AddrOfPinnedObject(), false);
                h.Free();
                pieces.Add(scratch1);
                //max_update_rate
                scratch1 = new byte[Marshal.SizeOf(typeof(double))];
                h        = GCHandle.Alloc(scratch1, GCHandleType.Pinned);
                Marshal.StructureToPtr(max_update_rate, h.AddrOfPinnedObject(), false);
                h.Free();
                pieces.Add(scratch1);
                //gravity
                if (gravity == null)
                {
                    gravity = new Vector3();
                }
                pieces.Add(gravity.Serialize(true));
                //ode_config
                if (ode_config == null)
                {
                    ode_config = new Messages.gazebo_msgs.ODEPhysics();
                }
                pieces.Add(ode_config.Serialize(true));
                //combine every array in pieces into one array and return it
                int __a_b__f = pieces.Sum((__a_b__c) => __a_b__c.Length);
                int __a_b__e = 0;

                byte[] __a_b__d = new byte[__a_b__f];
                foreach (var __p__ in pieces)
                {
                    Array.Copy(__p__, 0, __a_b__d, __a_b__e, __p__.Length);
                    __a_b__e += __p__.Length;
                }
                return(__a_b__d);
            }
Exemplo n.º 3
0
            public override void Randomize()
            {
                int    arraylength = -1;
                Random rand        = new Random();
                int    strlength;

                byte[] strbuf, myByte;

                //time_step
                time_step = (rand.Next() + rand.NextDouble());
                //max_update_rate
                max_update_rate = (rand.Next() + rand.NextDouble());
                //gravity
                gravity = new Vector3();
                gravity.Randomize();
                //ode_config
                ode_config = new Messages.gazebo_msgs.ODEPhysics();
                ode_config.Randomize();
            }
            public override void Randomize()
            {
                int    arraylength = -1;
                Random rand        = new Random();
                int    strlength;

                byte[] strbuf, myByte;

                //time_step
                time_step = (rand.Next() + rand.NextDouble());
                //pause
                pause = rand.Next(2) == 1;
                //max_update_rate
                max_update_rate = (rand.Next() + rand.NextDouble());
                //gravity
                gravity = new Vector3();
                gravity.Randomize();
                //ode_config
                ode_config = new Messages.gazebo_msgs.ODEPhysics();
                ode_config.Randomize();
                //success
                success = rand.Next(2) == 1;
                //status_message
                strlength = rand.Next(100) + 1;
                strbuf    = new byte[strlength];
                rand.NextBytes(strbuf);  //fill the whole buffer with random bytes
                for (int __x__ = 0; __x__ < strlength; __x__++)
                {
                    if (strbuf[__x__] == 0) //replace null chars with non-null random ones
                    {
                        strbuf[__x__] = (byte)(rand.Next(254) + 1);
                    }
                }
                strbuf[strlength - 1] = 0; //null terminate
                status_message        = Encoding.ASCII.GetString(strbuf);
            }
            public override byte[] Serialize(bool partofsomethingelse)
            {
                int  currentIndex = 0, length = 0;
                bool hasmetacomponents = false;

                byte[]        thischunk, scratch1, scratch2;
                List <byte[]> pieces = new List <byte[]>();
                GCHandle      h;

                //time_step
                scratch1 = new byte[Marshal.SizeOf(typeof(double))];
                h        = GCHandle.Alloc(scratch1, GCHandleType.Pinned);
                Marshal.StructureToPtr(time_step, h.AddrOfPinnedObject(), false);
                h.Free();
                pieces.Add(scratch1);
                //pause
                thischunk    = new byte[1];
                thischunk[0] = (byte)((bool)pause ? 1 : 0);
                pieces.Add(thischunk);
                //max_update_rate
                scratch1 = new byte[Marshal.SizeOf(typeof(double))];
                h        = GCHandle.Alloc(scratch1, GCHandleType.Pinned);
                Marshal.StructureToPtr(max_update_rate, h.AddrOfPinnedObject(), false);
                h.Free();
                pieces.Add(scratch1);
                //gravity
                if (gravity == null)
                {
                    gravity = new Vector3();
                }
                pieces.Add(gravity.Serialize(true));
                //ode_config
                if (ode_config == null)
                {
                    ode_config = new Messages.gazebo_msgs.ODEPhysics();
                }
                pieces.Add(ode_config.Serialize(true));
                //success
                thischunk    = new byte[1];
                thischunk[0] = (byte)((bool)success ? 1 : 0);
                pieces.Add(thischunk);
                //status_message
                if (status_message == null)
                {
                    status_message = "";
                }
                scratch1  = Encoding.ASCII.GetBytes((string)status_message);
                thischunk = new byte[scratch1.Length + 4];
                scratch2  = BitConverter.GetBytes(scratch1.Length);
                Array.Copy(scratch1, 0, thischunk, 4, scratch1.Length);
                Array.Copy(scratch2, thischunk, 4);
                pieces.Add(thischunk);
                //combine every array in pieces into one array and return it
                int __a_b__f = pieces.Sum((__a_b__c) => __a_b__c.Length);
                int __a_b__e = 0;

                byte[] __a_b__d = new byte[__a_b__f];
                foreach (var __p__ in pieces)
                {
                    Array.Copy(__p__, 0, __a_b__d, __a_b__e, __p__.Length);
                    __a_b__e += __p__.Length;
                }
                return(__a_b__d);
            }