Example #1
0
        public void Read(EndianStream stream)
        {
            m_conditionConstantArray = stream.ReadArray(() => new OffsetPtr <ConditionConstant>(new ConditionConstant()));
            DestinationState         = stream.ReadUInt32();
            if (IsReadPathID)
            {
                FullPathID = stream.ReadUInt32();
            }
            ID                 = stream.ReadUInt32();
            UserID             = stream.ReadUInt32();
            TransitionDuration = stream.ReadSingle();
            TransitionOffset   = stream.ReadSingle();
            if (IsReadAtomic)
            {
                Atomic = stream.ReadBoolean();
            }
            else
            {
                ExitTime         = stream.ReadSingle();
                HasExitTime      = stream.ReadBoolean();
                HasFixedDuration = stream.ReadBoolean();
                stream.AlignStream(AlignType.Align4);

                InterruptionSource  = stream.ReadInt32();
                OrderedInterruption = stream.ReadBoolean();
            }

            CanTransitionToSelf = stream.ReadBoolean();
            stream.AlignStream(AlignType.Align4);
        }
Example #2
0
        public override void Read(EndianStream stream)
        {
            base.Read(stream);

            Avatar.Read(stream);
            Controller.Read(stream);
            CullingMode = stream.ReadInt32();

            if (IsReadUpdateMode)
            {
                UpdateMode = stream.ReadInt32();
            }

            ApplyRootMotion = stream.ReadBoolean();

            if (IsReadAnimatePhisics)
            {
                AnimatePhisics = stream.ReadBoolean();
            }

            if (IsReadBoolFlags)
            {
                if (IsReadLinearVelocityBlending)
                {
                    LinearVelocityBlending = stream.ReadBoolean();
                }
                stream.AlignStream(AlignType.Align4);

                HasTransformHierarchy = stream.ReadBoolean();
                AllowConstantClipSamplingOptimization = stream.ReadBoolean();
                stream.AlignStream(AlignType.Align4);
            }
        }
Example #3
0
        public void Read(EndianStream stream)
        {
            BlobIndex = stream.ReadUInt32();
            Channels.Read(stream);
            m_keywordIndices = stream.ReadUInt16Array();
            if (IsAlignKeywordIndices)
            {
                stream.AlignStream(AlignType.Align4);
            }

            ShaderHardwareTier = stream.ReadByte();
            GpuProgramType     = (ShaderGpuProgramType)stream.ReadByte();
            stream.AlignStream(AlignType.Align4);

            m_vectorParams           = stream.ReadArray <VectorParameter>();
            m_matrixParams           = stream.ReadArray <MatrixParameter>();
            m_textureParams          = stream.ReadArray(() => new TextureParameter(m_assetsFile));
            m_bufferParams           = stream.ReadArray <BufferBinding>();
            m_constantBuffers        = stream.ReadArray(() => new ConstantBuffer(m_assetsFile));
            m_constantBufferBindings = stream.ReadArray <BufferBinding>();
            m_UAVParams = stream.ReadArray <UAVParameter>();

            if (IsReadSamplers)
            {
                m_samplers = stream.ReadArray <SamplerParameter>();
            }
            if (IsReadShaderRequirements)
            {
                ShaderRequirements = stream.ReadInt32();
            }
        }
Example #4
0
        public void Read(EndianStream stream)
        {
            m_genericBindings = stream.ReadArray(() => new GenericBinding(m_assetsFile));
            stream.AlignStream(AlignType.Align4);

            m_pptrCurveMapping = stream.ReadArray(() => new PPtr <Object>(m_assetsFile));
            stream.AlignStream(AlignType.Align4);
        }
Example #5
0
 public void Read(EndianStream stream)
 {
     NameIndex      = stream.ReadInt32();
     m_matrixParams = stream.ReadArray <MatrixParameter>();
     stream.AlignStream(AlignType.Align4);
     m_vectorParams = stream.ReadArray <VectorParameter>();
     stream.AlignStream(AlignType.Align4);
     Size = stream.ReadInt32();
 }
Example #6
0
        public void Read(EndianStream stream)
        {
            NumItems = stream.ReadUInt32();
            int size = stream.ReadInt32();

            m_data = new byte[size];
            stream.Read(m_data, 0, size);
            stream.AlignStream(AlignType.Align4);
            BitSize = stream.ReadByte();
            stream.AlignStream(AlignType.Align4);
        }
Example #7
0
        public override void Read(EndianStream stream)
        {
            base.Read(stream);

            ParsedForm.Read(stream);
            Name = ParsedForm.Name;

            m_platforms = stream.ReadEnum32Array((t) => (GPUPlatform)t);
            uint[] offsets             = stream.ReadUInt32Array();
            uint[] compressedLengths   = stream.ReadUInt32Array();
            uint[] decompressedLengths = stream.ReadUInt32Array();
            byte[] compressedBlob      = stream.ReadByteArray();
            stream.AlignStream(AlignType.Align4);

            m_subProgramBlobs = new ShaderSubProgramBlob[m_platforms.Length];
            using (MemoryStream memStream = new MemoryStream(compressedBlob))
            {
                for (int i = 0; i < m_platforms.Length; i++)
                {
                    uint offset             = offsets[i];
                    uint compressedLength   = compressedLengths[i];
                    uint decompressedLength = decompressedLengths[i];

                    memStream.Position = offset;
                    byte[] decompressedBuffer = new byte[decompressedLength];
                    using (Lz4Stream lz4Stream = new Lz4Stream(memStream, (int)compressedLength))
                    {
                        int read = lz4Stream.Read(decompressedBuffer, 0, decompressedBuffer.Length);
                        if (read != decompressedLength)
                        {
                            throw new Exception($"Can't properly decode shader blob. Read {read} but expected {decompressedLength}");
                        }
                    }

                    using (MemoryStream blobMem = new MemoryStream(decompressedBuffer))
                    {
                        using (EndianStream blobStream = new EndianStream(blobMem))
                        {
                            ShaderSubProgramBlob blob = new ShaderSubProgramBlob(AssetsFile);
                            blob.Read(blobStream);
                            m_subProgramBlobs[i] = blob;
                        }
                    }
                }
            }

            m_dependencies = stream.ReadArray(() => new PPtr <SShader>(AssetsFile));
            ShaderIsBaked  = stream.ReadBoolean();
            stream.AlignStream(AlignType.Align4);
        }
Example #8
0
 public void Read(EndianStream stream)
 {
     RootX.Read(stream);
     Skeleton.Read(stream);
     SkeletonPose.Read(stream);
     LeftHand.Read(stream);
     RightHand.Read(stream);
     m_handles        = stream.ReadArray(() => new Handle(m_assetsFile));
     m_colliderArray  = stream.ReadArray(() => new Collider(m_assetsFile));
     m_humanBoneIndex = stream.ReadInt32Array();
     m_humanBoneMass  = stream.ReadSingleArray();
     m_colliderIndex  = stream.ReadInt32Array();
     Scale            = stream.ReadSingle();
     ArmTwist         = stream.ReadSingle();
     ForeArmTwist     = stream.ReadSingle();
     UpperLegTwist    = stream.ReadSingle();
     LegTwist         = stream.ReadSingle();
     ArmStretch       = stream.ReadSingle();
     LegStretch       = stream.ReadSingle();
     FeetSpacing      = stream.ReadSingle();
     HasLeftHand      = stream.ReadBoolean();
     HasRightHand     = stream.ReadBoolean();
     HasTDoF          = stream.ReadBoolean();
     stream.AlignStream(AlignType.Align4);
 }
Example #9
0
 public void Read(EndianStream stream)
 {
     m_transitionConstantArray = stream.ReadArray(() => new OffsetPtr <SelectorTransitionConstant>(new SelectorTransitionConstant()));
     FullPathID = stream.ReadUInt32();
     IsEntry    = stream.ReadBoolean();
     stream.AlignStream(AlignType.Align4);
 }
Example #10
0
 public void Read(EndianStream stream)
 {
     MetadataSize = stream.ReadInt32();
     if (MetadataSize <= 0)
     {
         throw new Exception($"Invalid metadata size {MetadataSize} for asset file {m_name}");
     }
     FileSize = stream.ReadInt32();
     if (FileSize <= 0)
     {
         throw new Exception($"Invalid data size {FileSize} for asset file {m_name}");
     }
     Generation = (FileGeneration)stream.ReadInt32();
     if (!Enum.IsDefined(typeof(FileGeneration), Generation))
     {
         throw new Exception($"Unsuported file generation {Generation} for asset file '{m_name}'");
     }
     DataOffset = stream.ReadUInt32();
     if (IsReadEndian(Generation))
     {
         Endianess = stream.ReadBoolean();
         stream.AlignStream(AlignType.Align4);
     }
     else
     {
         Endianess = false;
     }
 }
Example #11
0
        public override void Read(EndianStream stream)
        {
            base.Read(stream);

            IsEnabled = stream.ReadByte();
            stream.AlignStream(AlignType.Align4);
        }
Example #12
0
        public override void Read(EndianStream stream)
        {
            base.Read(stream);

            if (IsSerialized)
            {
                throw new NotSupportedException("Use SShader for serialized shaders");
            }

            if (IsEncoded)
            {
                uint decompressedSize = stream.ReadUInt32();
                int  comressedSize    = stream.ReadInt32();

                byte[] subProgramBlob = new byte[comressedSize];
                stream.Read(subProgramBlob, 0, comressedSize);
                stream.AlignStream(AlignType.Align4);

                if (comressedSize > 0 && decompressedSize > 0)
                {
                    byte[] decompressedBuffer = new byte[decompressedSize];
                    using (MemoryStream memStream = new MemoryStream(subProgramBlob))
                    {
                        using (Lz4Stream lz4Stream = new Lz4Stream(memStream))
                        {
                            int read = lz4Stream.Read(decompressedBuffer, 0, (int)decompressedSize);
                            if (read != decompressedSize)
                            {
                                throw new Exception($"Can't properly decode sub porgram prob. Read {read} but expected decompressedSize");
                            }
                        }
                    }

                    using (MemoryStream memStream = new MemoryStream(decompressedBuffer))
                    {
                        using (EndianStream blobStream = new EndianStream(memStream))
                        {
                            SubProgramBlob.Read(blobStream);
                        }
                    }
                }
            }

            m_dependencies = stream.ReadArray(() => new PPtr <Shader>(AssetsFile));
            ShaderIsBaked  = stream.ReadBoolean();
            stream.AlignStream(AlignType.Align4);
        }
Example #13
0
        public override void Read(EndianStream stream)
        {
            base.Read(stream);

            if (IsReadAnimationType)
            {
                AnimationType = (AnimationType)stream.ReadInt32();
            }
            else
            {
                Legacy = stream.ReadBoolean();
            }
            Compressed           = stream.ReadBoolean();
            UseHightQualityCurve = stream.ReadBoolean();
            stream.AlignStream(AlignType.Align4);

            m_rotationCurves           = stream.ReadArray(() => new QuaternionCurve(AssetsFile));
            m_compressedRotationCurves = stream.ReadArray <CompressedAnimationCurve>();

            if (Compressed)
            {
#warning TODO: decompress
                throw new NotImplementedException();
            }

            if (IsReadEulerCurves)
            {
                m_eulerCurves = stream.ReadArray(() => new Vector3Curve(AssetsFile));
            }

            m_positionCurves = stream.ReadArray(() => new Vector3Curve(AssetsFile));
            m_scaleCurves    = stream.ReadArray(() => new Vector3Curve(AssetsFile));
            m_floatCurves    = stream.ReadArray(() => new FloatCurve(AssetsFile));
            m_PPtrCurves     = stream.ReadArray(() => new PPtrCurve(AssetsFile));

            SampleRate = stream.ReadSingle();
            WrapMode   = stream.ReadInt32();

            Bounds.Read(stream);

            MuscleClipSize = stream.ReadUInt32();
            MuscleClip.Read(stream);
            ClipBindingConstant.Read(stream);

            m_events = stream.ReadArray(() => new AnimationEvent(AssetsFile));
            stream.AlignStream(AlignType.Align4);
        }
 public void Read(EndianStream stream)
 {
     NameIndex    = stream.ReadInt32();
     Index        = stream.ReadInt32();
     SamplerIndex = stream.ReadInt32();
     Dim          = stream.ReadByte();
     stream.AlignStream(AlignType.Align4);
 }
Example #15
0
        public override void Read(EndianStream stream)
        {
            base.Read(stream);

            ParsedForm.Read(stream);
            Name                  = ParsedForm.Name.Replace("/", "_");
            m_platforms           = stream.ReadUInt32Array();
            m_offsets             = stream.ReadUInt32Array();
            m_compressedLengths   = stream.ReadUInt32Array();
            m_decompressedLengths = stream.ReadUInt32Array();
            m_compressedBlob      = stream.ReadByteArray();
            stream.AlignStream(AlignType.Align4);

            m_dependencies = stream.ReadArray(() => new PPtr <SShader>(AssetsFile));
            ShaderIsBaked  = stream.ReadBoolean();
            stream.AlignStream(AlignType.Align4);
        }
Example #16
0
 public void Read(EndianStream stream)
 {
     NameIndex = stream.ReadInt32();
     Index     = stream.ReadInt32();
     ArraySize = stream.ReadInt32();
     Type      = (ShaderParamType)stream.ReadByte();
     RowCount  = stream.ReadByte();
     stream.AlignStream(AlignType.Align4);
 }
Example #17
0
 public void Read(EndianStream stream)
 {
     NameIndex = stream.ReadInt32();
     Index     = stream.ReadInt32();
     ArraySize = stream.ReadInt32();
     Type      = stream.ReadByte();
     Dim       = stream.ReadByte();
     stream.AlignStream(AlignType.Align4);
 }
Example #18
0
        public override void Read(EndianStream stream)
        {
            base.Read(stream);

            ParentPrefab.Read(stream);
            RootGameObject.Read(stream);
            IsPrefabParent = stream.ReadBoolean();
            stream.AlignStream(AlignType.Align64);
        }
Example #19
0
        public override void Read(EndianStream stream)
        {
            base.Read(stream);

            ParentPrefab.Read(stream);
            RootGameObject.Read(stream);
            IsPrefabParent = stream.ReadBoolean();
            stream.AlignStream(AlignType.Align64);
            throw new NotSupportedException("Currently EditorExtension's PrefabInternal field doesn't support Unity's prefabs");
        }
Example #20
0
        public void Read(EndianStream stream)
        {
            m_curve = stream.ReadArray(() => new PPtrKeyframe(m_assetsFile));
            stream.AlignStream(AlignType.Align4);

            Attribute = stream.ReadStringAligned();
            Path      = stream.ReadStringAligned();
            ClassID   = stream.ReadInt32();
            Script.Read(stream);
        }
Example #21
0
        public void Read(EndianStream stream)
        {
            Name = stream.ReadStringAligned();
            RtBlend0.Read(stream);
            RtBlend1.Read(stream);
            RtBlend2.Read(stream);
            RtBlend3.Read(stream);
            RtBlend4.Read(stream);
            RtBlend5.Read(stream);
            RtBlend6.Read(stream);
            RtBlend7.Read(stream);
            RtSeparateBlend = stream.ReadBoolean();
            stream.AlignStream(AlignType.Align4);

            if (IsReadZClip)
            {
                ZClip.Read(stream);
            }
            ZTest.Read(stream);
            ZWrite.Read(stream);
            Culling.Read(stream);
            OffsetFactor.Read(stream);
            OffsetUnits.Read(stream);
            AlphaToMask.Read(stream);
            StencilOp.Read(stream);
            StencilOpFront.Read(stream);
            StencilOpBack.Read(stream);
            StencilReadMask.Read(stream);
            StencilWriteMask.Read(stream);
            StencilRef.Read(stream);
            FogStart.Read(stream);
            FogEnd.Read(stream);
            FogDensity.Read(stream);
            FogColor.Read(stream);

            FogMode      = (FogMode)stream.ReadInt32();
            GpuProgramID = stream.ReadInt32();
            Tags.Read(stream);
            LOD      = stream.ReadInt32();
            Lighting = stream.ReadBoolean();
            stream.AlignStream(AlignType.Align4);
        }
Example #22
0
 public void Read(EndianStream stream)
 {
     PropInfo.Read(stream);
     m_subShaders               = stream.ReadArray <SerializedSubShader>();
     Name                       = stream.ReadStringAligned();
     CustomEditorName           = stream.ReadStringAligned();
     FallbackName               = stream.ReadStringAligned();
     m_dependencies             = stream.ReadArray <SerializedShaderDependency>();
     DisableNoSubshadersMessage = stream.ReadBoolean();
     stream.AlignStream(AlignType.Align4);
 }
        public void Read(EndianStream stream)
        {
            BlobIndex = stream.ReadUInt32();
            Channels.Read(stream);
            m_keywordIndices = stream.ReadUInt16Array();
            stream.AlignStream(AlignType.Align4);

            ShaderHardwareTier = stream.ReadByte();
            GpuProgramType     = stream.ReadByte();
            stream.AlignStream(AlignType.Align4);

            m_vectorParams           = stream.ReadArray <VectorParameter>();
            m_matrixParams           = stream.ReadArray <MatrixParameter>();
            m_textureParams          = stream.ReadArray <TextureParameter>();
            m_bufferParams           = stream.ReadArray <BufferBinding>();
            m_constantBuffers        = stream.ReadArray <ConstantBuffer>();
            m_constantBufferBindings = stream.ReadArray <BufferBinding>();
            m_UAVParams = stream.ReadArray <UAVParameter>();
            m_samplers  = stream.ReadArray <SamplerParameter>();
        }
Example #24
0
        public override void Read(EndianStream stream)
        {
            base.Read(stream);

            m_scenes = stream.ReadStringArray();
            if (IsReadPreloadPlugin)
            {
                m_preloadedPlugins = stream.ReadStringArray();
            }

            if (IsReadEnabledVRDevices)
            {
                m_enabledVRDevices = stream.ReadStringArray();
                if (IsReadBuildTags)
                {
                    m_buildTags = stream.ReadStringArray();
                    BuildGUID.Read(stream);
                }
            }

            // bool flags
            HasPROVersion      = stream.ReadBoolean();
            IsNoWatermarkBuild = stream.ReadBoolean();
            IsPrototypingBuild = stream.ReadBoolean();
            IsEducationalBuild = stream.ReadBoolean();
            if (IsReadBoolFlags)
            {
                IsEmbedded          = stream.ReadBoolean();
                HasPublishingRights = stream.ReadBoolean();
                HasShadows          = stream.ReadBoolean();
                HasSoftShadows      = stream.ReadBoolean();
            }
            if (IsReadMoreBoolFlags)
            {
                HasLocalLightShadows  = stream.ReadBoolean();
                HasAdvancedVersion    = stream.ReadBoolean();
                EnableDynamicBatching = stream.ReadBoolean();
                IsDebugBuild          = stream.ReadBoolean();
            }
            if (IsReadEvenMoreBoolFlags)
            {
                UsesOnMouseEvents   = stream.ReadBoolean();
                HasClusterRendering = stream.ReadBoolean();
                stream.AlignStream(AlignType.Align4);
            }

            BSVersion = stream.ReadStringAligned();
            AuthToken = stream.ReadStringAligned();

            m_runtimeClassHashes.Read(stream);
            m_scriptHashes.Read(stream);
            m_graphicsAPIs = stream.ReadInt32Array();
        }
Example #25
0
        public override void Read(EndianStream stream)
        {
            base.Read(stream);

            if (IsSerialized)
            {
                SerializedShader.Read(stream);
            }
            else
            {
                Shader.Read(stream);
            }

            if (IsReadKeywords)
            {
                if (IsKeywordsArray)
                {
                    m_shaderKeywordsArray = stream.ReadStringArray();
                }
                else
                {
                    ShaderKeywords = stream.ReadStringAligned();
                }
            }

            if (IsReadLightmapFlags)
            {
                LightmapFlags = stream.ReadUInt32();
                if (IsReadOtherFlags)
                {
                    EnableInstancingVariants = stream.ReadBoolean();
                    DoubleSidedGI            = stream.ReadBoolean();
                    stream.AlignStream(AlignType.Align4);
                }
            }

            if (IsReadCustomRenderQueue)
            {
                CustomRenderQueue = stream.ReadInt32();
            }

            if (IsReadStringTagMap)
            {
                StringTagMap.Read(stream);
                if (IsReadDisabledShaderPasses)
                {
                    m_disabledShaderPasses = stream.ReadStringArray();
                }
            }

            SavedProperties.Read(stream);
        }
Example #26
0
        public void Read(EndianStream stream)
        {
            NameIndex    = stream.ReadInt32();
            Index        = stream.ReadInt32();
            SamplerIndex = stream.ReadInt32();

            if (IsReadMultiSampled)
            {
                MultiSampled = stream.ReadBoolean();
            }
            Dim = stream.ReadByte();
            stream.AlignStream(AlignType.Align4);
        }
Example #27
0
 public void Read(EndianStream stream)
 {
     StateMachineIndex          = stream.ReadUInt32();
     StateMachineMotionSetIndex = stream.ReadUInt32();
     BodyMask.Read(stream);
     SkeletonMask.Read(stream);
     Binding                  = stream.ReadUInt32();
     LayerBlendingMode        = stream.ReadInt32();
     DefaultWeight            = stream.ReadSingle();
     IKPass                   = stream.ReadBoolean();
     SyncedLayerAffectsTiming = stream.ReadBoolean();
     stream.AlignStream(AlignType.Align4);
 }
Example #28
0
        public override void Read(EndianStream stream)
        {
            base.Read(stream);

            DefaultAnimation.Read(stream);
            m_animations      = stream.ReadArray(() => new PPtr <AnimationClip>(AssetsFile));
            WrapMode          = stream.ReadInt32();
            PlayAutomatically = stream.ReadBoolean();
            AnimatePhysics    = stream.ReadBoolean();
            stream.AlignStream(AlignType.Align4);

            CullingType = stream.ReadInt32();
        }
Example #29
0
 public void Read(EndianStream stream)
 {
     FirstVertex = stream.ReadUInt32();
     VertexCount = stream.ReadUInt32();
     if (IsReadAABB)
     {
         AabbMinDelta.Read(stream);
         AabbMaxDelta.Read(stream);
     }
     HasNormals  = stream.ReadBoolean();
     HasTangents = stream.ReadBoolean();
     stream.AlignStream(AlignType.Align4);
 }
Example #30
0
        public void Read(EndianStream stream)
        {
            Reset();

            Curve.Read(stream, () => new KeyframeTpl <T>(m_assetsFile));
            stream.AlignStream(AlignType.Align4);

            PreInfinity  = stream.ReadInt32();
            PostInfinity = stream.ReadInt32();
            if (IsReadRotationOrder)
            {
                RotationOrder = stream.ReadInt32();
            }
        }