Ejemplo n.º 1
0
        public static NGSSHAD ReadNGSSHAD(BufferedStreamReader streamReader, int offset)
        {
            NGSSHAD shad = new NGSSHAD();

            shad.unk0             = streamReader.Read <int>();
            shad.pixelShader      = streamReader.Read <PSO2String>();
            shad.vertexShader     = streamReader.Read <PSO2String>();
            shad.shadDetailOffset = streamReader.Read <int>();
            shad.shadExtraOffset  = streamReader.Read <int>();

            long bookmark = streamReader.Position();

            //Some shaders, like some player ones apparently, do not use the extra structs...
            if (shad.shadDetailOffset > 0)
            {
                streamReader.Seek(shad.shadDetailOffset + offset, System.IO.SeekOrigin.Begin);
                shad.shadDetail = streamReader.Read <SHADDetail>();

                streamReader.Seek(shad.shadExtraOffset + offset, System.IO.SeekOrigin.Begin);
                for (int i = 0; i < shad.shadDetail.shadExtraCount; i++)
                {
                    shad.shadExtra.Add(streamReader.Read <SHADExtraEntry>());
                }
            }
            else if (shad.shadExtraOffset > 0)
            {
                Console.WriteLine("**Apparently shadExtraOffset is allowed to be used without shadDetailOffset???**");
            }
            streamReader.Seek(bookmark, System.IO.SeekOrigin.Begin);

            return(shad);
        }
Ejemplo n.º 2
0
            public override SHAD Clone()
            {
                NGSSHAD newShad = new NGSSHAD();

                newShad.unk0             = unk0;
                newShad.pixelShader      = PSO2String.GeneratePSO2String(pixelShader.GetBytes());
                newShad.vertexShader     = PSO2String.GeneratePSO2String(vertexShader.GetBytes());
                newShad.shadDetailOffset = shadDetailOffset;
                newShad.shadExtraOffset  = shadExtraOffset;
                newShad.shadDetail       = shadDetail;
                newShad.shadExtra        = new List <SHADExtraEntry>(shadExtra);

                return(newShad);
            }