Esempio n. 1
0
        /// <summary>
        /// Convert the object into DynamicAsset.
        /// </summary>
        /// <returns>Converted DynamicAsset.</returns>
        public static DynamicAsset ToDynamicAsset(this AssetsFile.ObjectType obj)
        {
            AssetsFile parent;

            if (!obj.parent.TryGetTarget(out parent))
            {
                throw new NullReferenceException("parent");
            }
            return((DynamicAsset.GetDeserializer(parent.Types[obj.TypeID]))(new UnityBinaryReader(obj.Data)));
        }
Esempio n. 2
0
        /// <summary>
        /// Update the content with the specified DynamicAsset.
        /// </summary>
        /// <param name="asset">DynamicAsset to load.</param>
        public static void LoadDynamicAsset(this AssetsFile.ObjectType obj, DynamicAsset asset)
        {
            AssetsFile parent;

            if (!obj.parent.TryGetTarget(out parent))
            {
                throw new NullReferenceException("parent");
            }
            UnityBinaryWriter w = new UnityBinaryWriter();

            DynamicAsset.GetSerializer(parent.Types[obj.TypeID])(w, asset);
            obj.Data = w.ToBytes();
        }
            private object GenReadObject(NodeTree node)
            {
                protoman.PushType(node.Type);

                // Init Prototype
                string FQN = protoman.GetFQN();
                Dictionary <string, object> protodic = new Dictionary <string, object>();


                // Init Dictionary
                il.Emit(OpCodes.Ldc_I4, (int)node.Children.Count);
                il.Emit(OpCodes.Newobj, DicStrObjCtor);

                var members = node.Children;

                for (int i = 0; i < members.Count; i++)
                {
                    string membername = PrettifyName(members[i].Name);
                    il.Emit(OpCodes.Dup);
                    il.Emit(OpCodes.Ldstr, membername);

                    protodic.Add(membername, GenReadUnknownType(members[i], requireBoxing: true));

                    il.Emit(OpCodes.Callvirt, DicStrObjAdd);
                }

                // asset = new DynamicAsset(Dic, protoname);
                il.Emit(OpCodes.Ldstr, FQN);
                il.Emit(OpCodes.Newobj, DynamicAssetCtor);

                protoman.PopType();

                // Generate Prototype
                var proto = new DynamicAsset(protodic, FQN);

                PrototypeDic[FQN] = proto;
                return(proto);
            }
 /// <summary>
 /// Resizes this array.
 /// </summary>
 /// <remarks>If the specified size is less than the current size, the overflown part will be lost.</remarks>
 /// <param name="length">New size of the array.</param>
 public void Resize(int length)
 {
     DynamicAsset[] newarr = new DynamicAsset[length];
     Array.Copy(elems, newarr, length > elems.Length ? length : elems.Length);
     elems = newarr;
 }