예제 #1
0
        public string RequestDependency(string dependency)
        {
            if (Files.TryGetValue(dependency, out string dependencyPath))
            {
                return(dependencyPath);
            }

            foreach (string dataPath in DataPathes)
            {
                string filePath = Path.Combine(dataPath, dependency);
                if (MultiFileStream.Exists(filePath))
                {
                    return(filePath);
                }

                if (FilenameUtils.IsDefaultResource(dependency))
                {
                    return(FindEngineDependency(dataPath, FilenameUtils.DefaultResourceName1) ??
                           FindEngineDependency(dataPath, FilenameUtils.DefaultResourceName2));
                }
                else if (FilenameUtils.IsBuiltinExtra(dependency))
                {
                    return(FindEngineDependency(dataPath, FilenameUtils.BuiltinExtraName1) ??
                           FindEngineDependency(dataPath, FilenameUtils.BuiltinExtraName2));
                }
            }
            return(null);
        }
예제 #2
0
        public bool RequestDependency(string dependency)
        {
            if (Files.TryGetValue(dependency, out string dependencyPath))
            {
                LoadDependency(dependency, dependencyPath);
                return(true);
            }

            foreach (string dataPath in DataPathes)
            {
                string filePath = Path.Combine(dataPath, dependency);
                if (FileMultiStream.Exists(filePath))
                {
                    LoadDependency(dependency, filePath);
                    return(true);
                }

                if (FilenameUtils.IsDefaultResource(dependency))
                {
                    if (LoadEngineDependency(dataPath, FilenameUtils.DefaultResourceName1))
                    {
                        return(true);
                    }
                    if (LoadEngineDependency(dataPath, FilenameUtils.DefaultResourceName2))
                    {
                        return(true);
                    }
                }
                else if (FilenameUtils.IsBuiltinExtra(dependency))
                {
                    if (LoadEngineDependency(dataPath, FilenameUtils.BuiltinExtraName1))
                    {
                        return(true);
                    }
                    if (LoadEngineDependency(dataPath, FilenameUtils.BuiltinExtraName2))
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
        private void ReadScheme()
        {
            using (PartialStream stream = new PartialStream(m_stream, m_offset, m_size))
            {
                using (EndianReader reader = new EndianReader(stream, EndianType.BigEndian))
                {
                    Header.Read(reader);
                }

                EndianType endianess = Header.SwapEndianess ? EndianType.BigEndian : EndianType.LittleEndian;
                using (SerializedFileReader reader = new SerializedFileReader(stream, endianess, Header.Generation))
                {
                    if (IsMetadataAtTheEnd(reader.Generation))
                    {
                        reader.BaseStream.Position = Header.FileSize - Header.MetadataSize;
                        reader.BaseStream.Position++;
                    }

                    Metadata.Read(reader);
                }
            }

#warning TEMP HACK
            Flags = Metadata.Hierarchy.Platform == Platform.NoTarget ? TransferInstructionFlags.NoTransferInstructionFlags : Flags;
            if (FilenameUtils.IsEngineResource(Name) || Header.Generation < FileGeneration.FG_500a1 && FilenameUtils.IsBuiltinExtra(Name))
            {
                Flags |= TransferInstructionFlags.IsBuiltinResourcesFile;
            }
            Flags |= Header.SwapEndianess ? TransferInstructionFlags.SwapEndianess : TransferInstructionFlags.NoTransferInstructionFlags;
        }
예제 #4
0
        private void UpdateFlags()
        {
            Flags = TransferInstructionFlags.SerializeGameRelease;
            if (SerializedFileMetadata.HasPlatform(Header.Version))
            {
                if (Metadata.TargetPlatform == Platform.NoTarget)
                {
                    Flags = TransferInstructionFlags.NoTransferInstructionFlags;
                    if (FilePath.EndsWith(".unity", StringComparison.Ordinal))
                    {
                        Flags |= TransferInstructionFlags.SerializeEditorMinimalScene;
                    }
                }
            }

            if (FilenameUtils.IsEngineResource(Name) || Header.Version < FormatVersion.Unknown_10 && FilenameUtils.IsBuiltinExtra(Name))
            {
                Flags |= TransferInstructionFlags.IsBuiltinResourcesFile;
            }
            if (Header.Endianess || Metadata.SwapEndianess)
            {
                Flags |= TransferInstructionFlags.SwapEndianess;
            }
        }
예제 #5
0
        private void UpdateFlags()
        {
            Flags = TransferInstructionFlags.SerializeGameRelease;
            if (RTTIClassHierarchyDescriptor.HasPlatform(Header.Generation))
            {
                if (Metadata.Hierarchy.Platform == Platform.NoTarget)
                {
                    Flags = TransferInstructionFlags.NoTransferInstructionFlags;
                    if (FilePath.EndsWith(".unity", StringComparison.Ordinal))
                    {
                        Flags |= TransferInstructionFlags.SerializeEditorMinimalScene;
                    }
                }
            }

            if (FilenameUtils.IsEngineResource(Name) || Header.Generation < FileGeneration.FG_500a1 && FilenameUtils.IsBuiltinExtra(Name))
            {
                Flags |= TransferInstructionFlags.IsBuiltinResourcesFile;
            }
            if (Header.SwapEndianess || Metadata.SwapEndianess)
            {
                Flags |= TransferInstructionFlags.SwapEndianess;
            }
        }
예제 #6
0
        private void ReadScheme()
        {
            using (PartialStream stream = new PartialStream(m_stream, m_offset, m_size))
            {
                using (EndianReader reader = new EndianReader(stream, EndianType.BigEndian))
                {
                    Header.Read(reader);
                }

                EndianType endianess = EndianType.LittleEndian;
                if (SerializedFileHeader.HasEndian(Header.Generation))
                {
                    endianess = Header.SwapEndianess ? EndianType.BigEndian : EndianType.LittleEndian;
                }
                using (SerializedReader reader = new SerializedReader(stream, endianess, Name, Header.Generation))
                {
                    if (SerializedFileMetadata.IsMetadataAtTheEnd(reader.Generation))
                    {
                        reader.BaseStream.Position = Header.FileSize - Header.MetadataSize;
                        reader.BaseStream.Position++;
                    }

                    Metadata.Read(reader);
                }
            }

            SerializedFileMetadataConverter.CombineFormats(Header.Generation, Metadata);
            RTTIClassHierarchyDescriptorConverter.FixResourceVersion(Name, ref Metadata.Hierarchy);

#warning TEMP HACK
            if (Metadata.Hierarchy.Platform == Platform.NoTarget)
            {
                Flags = TransferInstructionFlags.NoTransferInstructionFlags;
            }
            if (FilenameUtils.IsEngineResource(Name) || Header.Generation < FileGeneration.FG_500a1 && FilenameUtils.IsBuiltinExtra(Name))
            {
                Flags |= TransferInstructionFlags.IsBuiltinResourcesFile;
            }
            if (Header.SwapEndianess)
            {
                Flags |= TransferInstructionFlags.SwapEndianess;
            }
        }