예제 #1
0
        public override void Parse(AssetsReader reader)
        {
            base.ParseBase(reader);
            IsEnabled            = reader.ReadBoolean();
            CastShadows          = reader.ReadByte();
            ReceiveShadows       = reader.ReadByte();
            DynamicOcclude       = reader.ReadByte();
            MotionVectors        = reader.ReadByte();
            LightProbeUsage      = reader.ReadByte();
            ReflectionProbeUsage = reader.ReadByte();
            reader.AlignTo(4);
            RenderingLayerMask = reader.ReadUInt32();
            if (ObjectInfo.ParentFile.Metadata.VersionGte("2018.3"))
            {
                RendererPriority = reader.ReadInt32();
            }
            LightmapIndex               = reader.ReadUInt16();
            LightmapIndexDynamic        = reader.ReadUInt16();
            LightmapTilingOffset        = new Vector4F(reader);
            LightmapTilingOffsetDynamic = new Vector4F(reader);
            Materials       = reader.ReadArrayOf(r => (ISmartPtr <MaterialObject>)SmartPtr <MaterialObject> .Read(ObjectInfo.ParentFile, this, r));
            StaticBatchInfo = new StaticBatchInfo(reader);
            StaticBatchRoot = SmartPtr <Transform> .Read(ObjectInfo.ParentFile, this, reader);

            ProbeAnchor = SmartPtr <Transform> .Read(ObjectInfo.ParentFile, this, reader);

            LightProbeVolumeOverride = SmartPtr <GameObject> .Read(ObjectInfo.ParentFile, this, reader);

            SortingLayerID          = reader.ReadInt32();
            SortingLayer            = reader.ReadInt16();
            SortingOrder            = reader.ReadInt16();
            AdditionalVertexStreams = SmartPtr <MeshObject> .Read(ObjectInfo.ParentFile, this, reader);
        }
예제 #2
0
        public override void Parse(AssetsReader reader)
        {
            base.ParseBase(reader);
            int startPosition = reader.Position;

            Name = reader.ReadString();
            //int readLen = ObjectInfo.DataSize - (reader.Position - startPosition);
            //MeshData = reader.ReadBytes(readLen);
            SubMeshes        = reader.ReadArrayOf(r => new Submesh(r));
            BlendShapeData   = new BlendShapeData(reader);
            BindPose         = reader.ReadArrayOf(r => reader.ReadSingle());
            BoneNameHashes   = reader.ReadArrayOf(r => r.ReadUInt32());
            RootBoneNameHash = reader.ReadUInt32();
            MeshCompression  = reader.ReadByte();
            IsReadable       = reader.ReadBoolean();
            KeepVerticies    = reader.ReadBoolean();
            KeepIndicies     = reader.ReadBoolean();
            reader.AlignTo(4);
            IndexFormat = reader.ReadInt32();
            IndexBuffer = reader.ReadArray();
            reader.AlignTo(4);
            VertexData               = new VertexData(reader);
            CompressedMesh           = new CompressedMesh(reader);
            LocalAABB                = new AABB(reader);
            MeshUsageFlags           = reader.ReadInt32();
            BakedConvexCollisionMesh = reader.ReadArray();
            reader.AlignTo(4);
            BakedTriangleCollisionMesh = reader.ReadArray();
            reader.AlignTo(4);
            MeshMetrics1 = reader.ReadSingle();
            MeshMetrics2 = reader.ReadSingle();
            StreamData   = new StreamingInfo(reader);
        }
예제 #3
0
 private void Parse(AssetsReader reader)
 {
     ObjectID   = reader.ReadInt64();
     DataOffset = reader.ReadInt32();
     DataSize   = reader.ReadInt32();
     TypeIndex  = reader.ReadInt32();
 }
예제 #4
0
 public void Parse(AssetsReader reader)
 {
     Name       = reader.ReadString();
     NameHash   = reader.ReadUInt32();
     FrameIndex = reader.ReadInt32();
     FrameCount = reader.ReadInt32();
 }
예제 #5
0
        public void Parse(AssetsReader reader)
        {
            Version      = reader.ReadCStr();
            Platform     = reader.ReadInt32();
            HasTypeTrees = reader.ReadBoolean();
            int numTypes = reader.ReadInt32();

            for (int i = 0; i < numTypes; i++)
            {
                Types.Add(new AssetsType(reader, HasTypeTrees));
            }
            int numObj = reader.ReadInt32();

            for (int i = 0; i < numObj; i++)
            {
                reader.AlignTo(4);
                var obj = ObjectInfo <AssetsObject> .Parse(ParentFile, reader);

                ObjectInfos.Add(obj);
            }
            int numAdds = reader.ReadInt32();

            for (int i = 0; i < numAdds; i++)
            {
                reader.AlignTo(4);
                Adds.Add(new RawPtr(reader));
            }
            int numExt = reader.ReadInt32();

            for (int i = 0; i < numExt; i++)
            {
                ExternalFiles.Add(new ExternalFile(reader));
            }
            reader.ReadCStr();
        }
예제 #6
0
 private void Parse(AssetsReader reader)
 {
     FilterMode = reader.ReadInt32();
     Aniso      = reader.ReadInt32();
     MipBias    = reader.ReadSingle();
     WrapU      = reader.ReadInt32();
     WrapV      = reader.ReadInt32();
     WrapW      = reader.ReadInt32();
 }
예제 #7
0
 private void Parse(AssetsReader reader)
 {
     Version    = reader.ReadInt16();
     Depth      = reader.ReadSByte();
     IsArray    = reader.ReadBoolean();
     TypeOffset = reader.ReadInt32();
     NameOffset = reader.ReadInt32();
     Size       = reader.ReadInt32();
     Index      = reader.ReadInt32();
     Flags      = reader.ReadInt32();
 }
예제 #8
0
        private void Parse(AssetsReader reader)
        {
            int numTreeNodes     = reader.ReadInt32();
            int stringBufferSize = reader.ReadInt32();

            for (int i = 0; i < numTreeNodes; i++)
            {
                Entries.Add(new TypeTreeEntry(reader));
            }
            StringBuffer = new String(reader.ReadChars(stringBufferSize));
        }
예제 #9
0
        internal static IObjectInfo <AssetsObject> Parse(AssetsFile file, AssetsReader reader)
        {
            var objectID   = reader.ReadInt64();
            var dataOffset = reader.ReadInt32();
            var dataSize   = reader.ReadInt32();
            var typeIndex  = reader.ReadInt32();
            var obji       = FromTypeIndex(file, typeIndex, null);

            obji.ObjectID   = objectID;
            obji.DataOffset = dataOffset;
            obji.DataSize   = dataSize;
            return(obji);
        }
예제 #10
0
        public void Parse(AssetsReader reader)
        {
            Version      = reader.ReadCStr();
            Platform     = reader.ReadInt32();
            HasTypeTrees = reader.ReadBoolean();
            int numTypes = reader.ReadInt32();

            for (int i = 0; i < numTypes; i++)
            {
                Types.Add(new AssetsType(reader, HasTypeTrees));
            }

            List <ObjectRecord> records = new List <ObjectRecord>();
            int numObj = reader.ReadInt32();

            for (int i = 0; i < numObj; i++)
            {
                reader.AlignTo(4);
                var obj = new ObjectRecord(reader);
                records.Add(obj);
            }

            int numAdds = reader.ReadInt32();

            for (int i = 0; i < numAdds; i++)
            {
                reader.AlignTo(4);
                Adds.Add(new RawPtr(reader));
            }
            int numExt = reader.ReadInt32();

            for (int i = 0; i < numExt; i++)
            {
                ExternalFiles.Add(new ExternalFile(reader));
            }
            reader.ReadCStr();

            //load the object infos in order based on their type
            foreach (var record in records.OrderBy(x => PreloadObjectOrder(x)).ThenBy(x => x.ObjectID))
            {
                var obj = ObjectInfo <AssetsObject> .Parse(ParentFile, record);

                ObjectInfos.Add(obj);
                if (ShouldForceLoadObject(record))
                {
                    var o = obj.Object;
                }
            }
        }
예제 #11
0
 private void Parse(AssetsReader reader)
 {
     AssetName = reader.ReadCStr();
     ID        = reader.ReadGuid();
     Type      = reader.ReadInt32();
     FileName  = reader.ReadCStr();
 }
예제 #12
0
        public static SmartPtr <T> Read(AssetsFile assetsFile, AssetsObject owner, AssetsReader reader)
        {
            if (owner == null)
            {
                Log.LogErr("WARNING: SmartPtr created without an owner!");
            }
            int fileID = reader.ReadInt32();

            reader.AlignTo(4);
            Int64 pathID = reader.ReadInt64();

            if (fileID == 0 && pathID == 0)
            {
                return(null);
            }

            var objInfo = assetsFile.GetObjectInfo <T>(fileID, pathID);

            if (objInfo == null)
            {
                Log.LogErr($"WARNING: Could not find objectinfo for creating SmartPtr of type {typeof(T).Name} on owner type {owner?.GetType()?.Name ?? "(null owner)"}!  Returned a null pointer instead.");
                return(null);
            }

            SmartPtr <T> ptr = new SmartPtr <T>(owner, assetsFile.GetObjectInfo <T>(fileID, pathID));

            //TODO: not sure this is only ever called by existing objects
            ptr.IsNew = false;

            return(ptr);
        }
예제 #13
0
 protected override void Parse(AssetsReader reader)
 {
     base.Parse(reader);
     Name                       = reader.ReadString();
     PreloadTable               = reader.ReadArrayOf <ISmartPtr <AssetsObject> >(x => SmartPtr <AssetsObject> .Read(ObjectInfo.ParentFile, this, x));
     Container                  = reader.ReadArrayOf(x => new Map(ObjectInfo.ParentFile, this, x));
     MainAsset                  = new AssetInfo(ObjectInfo.ParentFile, this, reader);
     RuntimeCompatibility       = reader.ReadUInt32();
     AssetBundleName            = reader.ReadString();
     Dependencies               = reader.ReadArrayOf <ISmartPtr <AssetsObject> >(x => SmartPtr <AssetsObject> .Read(ObjectInfo.ParentFile, this, x));
     IsStreamedSceneAssetBundle = reader.ReadBoolean();
     reader.AlignTo(4);
     ExplicitDataLayout = reader.ReadInt32();
     PathFlags          = reader.ReadInt32();
     SceneHashes        = reader.ReadArrayOf(x => new Map(ObjectInfo.ParentFile, this, x));
 }
예제 #14
0
        protected override void Parse(AssetsReader reader)
        {
            base.Parse(reader);
            Enabled           = reader.ReadInt32();
            MonoscriptTypePtr = SmartPtr <MonoScriptObject> .Read(ObjectInfo.ParentFile, this, reader);

            Name = reader.ReadString();
        }
예제 #15
0
        //public MonoScriptObject(IObjectInfo<AssetsObject> objectInfo) : base(objectInfo)
        //{ }

        protected override void Parse(AssetsReader reader)
        {
            base.Parse(reader);
            Name           = reader.ReadString();
            ExecutionOrder = reader.ReadInt32();
            PropertiesHash = reader.ReadGuid();
            ClassName      = reader.ReadString();
            Namespace      = reader.ReadString();
            AssemblyName   = reader.ReadString();
        }
예제 #16
0
 public void Parse(AssetsReader reader)
 {
     FirstByte   = reader.ReadUInt32();
     IndexCount  = reader.ReadUInt32();
     Topology    = reader.ReadInt32();
     BaseVertex  = reader.ReadUInt32();
     FirstVertex = reader.ReadUInt32();
     VertexCount = reader.ReadUInt32();
     LocalAABB   = new AABB(reader);
 }
예제 #17
0
        public void Parse(AssetsFile file, AssetsObject owner, AssetsReader reader)
        {
            var count = reader.ReadInt32();

            for (int i = 0; i < count; i++)
            {
                TexEnvs.Add(new Map <string, TexEnv>(reader.ReadString(), new TexEnv(file, owner, reader)));
            }
            count = reader.ReadInt32();
            for (int i = 0; i < count; i++)
            {
                Floats.Add(new Map <string, Single>(reader.ReadString(), reader.ReadSingle()));
            }

            count = reader.ReadInt32();
            for (int i = 0; i < count; i++)
            {
                Colors.Add(new Map <string, Color>(reader.ReadString(), new Color(reader)));
            }
        }
예제 #18
0
        protected void ParseDetails(AssetsReader reader)
        {
            int count = reader.ReadInt32();

            for (int i = 0; i < count; i++)
            {
                Components.Add(SmartPtr <AssetsObject> .Read(ObjectInfo.ParentFile, this, reader));
            }
            Layer    = reader.ReadUInt32();
            Name     = reader.ReadString();
            Tag      = reader.ReadUInt16();
            IsActive = reader.ReadBoolean();
        }
예제 #19
0
        public override void Parse(AssetsReader reader)
        {
            base.ParseBase(reader);
            int count = reader.ReadInt32();

            for (int i = 0; i < count; i++)
            {
                Components.Add(SmartPtr <AssetsObject> .Read(ObjectInfo.ParentFile, this, reader));
            }
            Layer    = reader.ReadUInt32();
            Name     = reader.ReadString();
            Tag      = reader.ReadUInt16();
            IsActive = reader.ReadBoolean();
        }
예제 #20
0
 private void Parse(AssetsReader reader, bool hasTypeTree)
 {
     ClassID  = reader.ReadInt32();
     Unknown1 = reader.ReadSByte();
     Unknown2 = reader.ReadInt16();
     if (IsScriptType)
     {
         ScriptHash = reader.ReadGuid();
     }
     TypeHash = reader.ReadGuid();
     if (hasTypeTree)
     {
         TypeTree = new TypeTree(reader);
     }
 }
예제 #21
0
        public override void Parse(AssetsReader reader)
        {
            base.ParseBase(reader);
            Name   = reader.ReadString();
            Shader = SmartPtr <AssetsObject> .Read(this.ObjectInfo.ParentFile, this, reader);

            ShaderKeywords           = reader.ReadString();
            LightmapFlags            = reader.ReadUInt32();
            EnableInstancingVariants = reader.ReadBoolean();
            DoubleSidedGI            = reader.ReadBoolean();
            reader.AlignTo(4);
            CustomRenderQueue    = reader.ReadInt32();
            StringTagMap         = reader.ReadArrayOf(r => new Map <string, string>(reader.ReadString(), reader.ReadString()));
            DisabledShaderPasses = reader.ReadArrayOf(r => r.ReadString());
            SavedProperties      = new PropertySheet(this.ObjectInfo.ParentFile, this, reader);
        }
예제 #22
0
        public static SmartPtr <T> Read(AssetsFile assetsFile, AssetsObject owner, AssetsReader reader)
        {
            int fileID = reader.ReadInt32();

            reader.AlignTo(4);
            Int64 pathID = reader.ReadInt64();

            if (fileID == 0 && pathID == 0)
            {
                return(null);
            }

            SmartPtr <T> ptr = new SmartPtr <T>(owner, assetsFile.GetObjectInfo <T>(fileID, pathID));

            //TODO: not sure this is only ever called by existing objects
            ptr.IsNew = false;

            return(ptr);
        }
예제 #23
0
 public override void Parse(AssetsReader reader)
 {
     base.ParseBase(reader);
     Name            = reader.ReadString();
     LoadType        = reader.ReadInt32();
     Channels        = reader.ReadInt32();
     Frequency       = reader.ReadInt32();
     BitsPerSample   = reader.ReadInt32();
     Length          = reader.ReadSingle();
     IsTrackerFormat = reader.ReadBoolean();
     Ambisonic       = reader.ReadBoolean();
     reader.AlignTo(4);
     SubsoundIndex    = reader.ReadInt32();
     PreloadAudioData = reader.ReadBoolean();
     LoadInBackground = reader.ReadBoolean();
     Legacy3D         = reader.ReadBoolean();
     reader.AlignTo(4);
     Resource          = new StreamedResource(reader);
     CompressionFormat = reader.ReadInt32();
 }
예제 #24
0
        protected override void Parse(AssetsReader reader)
        {
            base.Parse(reader);
            Name = reader.ReadString();
            ForcedFallbackFormat = reader.ReadInt32();
            DownscaleFallback    = reader.ReadBoolean();
            reader.AlignTo(4);
            Width             = reader.ReadInt32();
            Height            = reader.ReadInt32();
            CompleteImageSize = reader.ReadInt32();
            TextureFormat     = (TextureFormatType)reader.ReadInt32();
            MipCount          = reader.ReadInt32();
            IsReadable        = reader.ReadBoolean();
            StreamingMipmaps  = reader.ReadBoolean();
            reader.AlignTo(4);
            StreamingMipmapsPriority = reader.ReadInt32();
            ImageCount       = reader.ReadInt32();
            TextureDimension = reader.ReadInt32();
            TextureSettings  = new GLTextureSettings(reader);
            LightmapFormat   = reader.ReadInt32();
            ColorSpace       = reader.ReadInt32();
            int imageDataSize = reader.ReadInt32();

            ImageData = reader.ReadBytes(imageDataSize);
            reader.AlignTo(4);
            StreamData = new StreamingInfo(reader);
        }
예제 #25
0
 private void Parse(AssetsReader reader)
 {
     FileID = reader.ReadInt32();
     reader.AlignTo(4);
     PathID = reader.ReadInt64();
 }
예제 #26
0
 private void Parse(AssetsFile assetsFile, AssetsObject owner, AssetsReader reader)
 {
     PreloadIndex = reader.ReadInt32();
     PreloadSize  = reader.ReadInt32();
     Asset        = SmartPtr <AssetsObject> .Read(assetsFile, owner, reader);
 }