コード例 #1
0
            static void Prefix(ObjectMovementController __instance)
            {
                byte[] payload = new byte[] { };
                payload.AddToArray((byte)OpCode.ObjectDeleted);

                var spawnable = __instance.HighlightedObject.GetSpawnableFromSpawned();

                var objectSaveData = new GameObjectSaveData
                {
                    Id         = spawnable.Prefab.name,
                    bundleName = spawnable.BundleName,
                    position   = new SerializableVector3(__instance.SelectedObject.transform.position),
                    rotation   = new SerializableQuaternion(__instance.SelectedObject.transform.rotation),
                    localScale = new SerializableVector3(__instance.SelectedObject.transform.localScale)
                };

                foreach (var settings in spawnable.Settings)
                {
                    var settingsSaveData = settings.ConvertToSaveSettings();
                    if (settingsSaveData != null)
                    {
                        objectSaveData.settings.Add(settingsSaveData);
                    }
                }

                payload.AddRangeToArray(objectSaveData.SerializeToBytes());
                Main.pluginInfo.SendMessage(Main.pluginInfo, payload, true);
            }
コード例 #2
0
ファイル: GuidExtensions.cs プロジェクト: hilldata/Xrd.Common
        /// <summary>
        /// Convert an array of objects into a <see cref="Guid"/>, but only those that will fit into 16 bytes.
        /// </summary>
        /// <param name="value">An array of objects to be converted/encoded into a <see cref="Guid"/></param>
        /// <returns>A Guid containing the input</returns>
        public static Guid ToGuid(params object[] value)
        {
            byte[] arrGuid = new byte[16];
            int    pos     = 0;

            foreach (object v in value)
            {
                if (v == null)
                {
                    continue;
                }
                if (v is Guid)
                {
                    arrGuid.AddToArray(BitConverter.GetBytes(((Guid)v).GetHashCode()), ref pos);
                }
                else if (v is byte)
                {
                    arrGuid.AddToArray(new byte[] { (byte)v }, ref pos);
                }
                else if (v is char)
                {
                    arrGuid.AddToArray(BitConverter.GetBytes((char)v), ref pos);
                }
                else if (v is short)
                {
                    arrGuid.AddToArray(BitConverter.GetBytes((short)v), ref pos);
                }
                else if (v is double)
                {
                    arrGuid.AddToArray(BitConverter.GetBytes((double)v), ref pos);
                }
                else if (v is float)
                {
                    arrGuid.AddToArray(BitConverter.GetBytes((float)v), ref pos);
                }
                else if (v is int)
                {
                    arrGuid.AddToArray(BitConverter.GetBytes((int)v), ref pos);
                }
                else if (v is long)
                {
                    arrGuid.AddToArray(BitConverter.GetBytes((long)v), ref pos);
                }
                else if (v is short)
                {
                    arrGuid.AddToArray(BitConverter.GetBytes((short)v), ref pos);
                }
                else if (v is uint)
                {
                    arrGuid.AddToArray(BitConverter.GetBytes((uint)v), ref pos);
                }
                else if (v is ulong)
                {
                    arrGuid.AddToArray(BitConverter.GetBytes((ulong)v), ref pos);
                }
                else if (v is ushort)
                {
                    arrGuid.AddToArray(BitConverter.GetBytes((ushort)v), ref pos);
                }
                else if (v is object)
                {
                    arrGuid.AddToArray(BitConverter.GetBytes(v.GetHashCode()), ref pos);
                }
            }
            return(new Guid(arrGuid));
        }