Beispiel #1
0
 public void WriteRGBAColor8(RGBAColor8 color)
 {
     base.Write(color.r);
     base.Write(color.g);
     base.Write(color.b);
     base.Write(color.a);
 }
Beispiel #2
0
        public PIC1(ref EndianBinaryReader reader) : base(ref reader)
        {
            base.setType("Picture");

            byte numParams = reader.ReadByte();

            byte resourceType = reader.ReadByte();

            mTextureName = reader.ReadStringLengthPrefix();
            resourceType = reader.ReadByte();
            mPaletteName = reader.ReadStringLengthPrefix();
            mBinding     = reader.ReadByte();
            numParams   -= 3;

            if (numParams > 0)
            {
                byte src = reader.ReadByte();
                mMirror   = (byte)(src & 0x3);
                mRotate90 = (byte)(src & 0x4);

                numParams--;
            }

            if (numParams > 0)
            {
                byte src = reader.ReadByte();
                mWrapS = (byte)((src >> 2) & 0x3);
                mWrapT = (byte)(src & 0x3);

                numParams--;
            }

            if (numParams > 0)
            {
                mFromColor = reader.ReadRGBAColor8();
                numParams--;
            }

            if (numParams > 0)
            {
                mToColor = reader.ReadRGBAColor8();
                numParams--;
            }

            mColors = new RGBAColor8[4];

            for (int i = 0; i < 4; ++i)
            {
                if (numParams > 0)
                {
                    mColors[i] = reader.ReadRGBAColor8();
                    numParams--;
                }
            }

            reader.ReadAligned(0x4);
        }
Beispiel #3
0
        public RGBAColor8 ReadRGBAColor8()
        {
            RGBAColor8 ret = new RGBAColor8
            {
                r = ReadByte(),
                g = ReadByte(),
                b = ReadByte(),
                a = ReadByte()
            };

            return(ret);
        }
Beispiel #4
0
        public Material(ref EndianBinaryReader reader)
        {
            base.setType(Type._3DS);

            mName     = reader.ReadString(0x14).Replace("\0", "");
            mTevColor = reader.ReadRGBAColor8();

            mTevConstantColors = new RGBAColor8[0x6];

            for (int i = 0; i < 6; i++)
            {
                mTevConstantColors[i] = reader.ReadRGBAColor8();
            }

            mFlags = reader.ReadUInt32();

            mTexMapCount          = ExtractBits(mFlags, 2, 0);
            mTexMtxCount          = ExtractBits(mFlags, 2, 2);
            mTexCoordGenCount     = ExtractBits(mFlags, 2, 4);
            mTevStageCount        = ExtractBits(mFlags, 2, 6);
            mHasAlphaCompare      = Convert.ToBoolean(ExtractBits(mFlags, 1, 9));
            mHasBlendMode         = Convert.ToBoolean(ExtractBits(mFlags, 1, 10));
            mUseTextureOnly       = Convert.ToBoolean(ExtractBits(mFlags, 1, 11));
            mSeperateBlendMode    = Convert.ToBoolean(ExtractBits(mFlags, 1, 12));
            mHasIndParam          = Convert.ToBoolean(ExtractBits(mFlags, 1, 14));
            mProjTexGenParamCount = ExtractBits(mFlags, 2, 15);
            mHasFontShadowParam   = Convert.ToBoolean(ExtractBits(mFlags, 1, 17));

            mTexMaps = new List <TexMap>();

            for (int i = 0; i < mTexMapCount; i++)
            {
                mTexMaps.Add(new TexMap(ref reader));
            }

            mTexSRTs = new List <TexSRT>();

            for (int i = 0; i < mTexMtxCount; i++)
            {
                mTexSRTs.Add(new TexSRT(ref reader));
            }

            mTexCoords = new List <TexCoordGen>();

            for (int i = 0; i < mTexCoordGenCount; i++)
            {
                mTexCoords.Add(new TexCoordGen(ref reader));
            }

            mTevStages = new List <TevStage>();

            for (int i = 0; i < mTevStageCount; i++)
            {
                mTevStages.Add(new TevStage(ref reader));
            }

            if (mHasAlphaCompare)
            {
                mAlphaCompare = new AlphaCompare(ref reader);
            }
            if (mHasBlendMode)
            {
                mBlendMode_Blend = new BlendMode(ref reader);
            }
            if (mSeperateBlendMode)
            {
                mBlendMode_Logic = new BlendMode(ref reader);
            }
            if (mHasIndParam)
            {
                mIndParameter = new IndirectParameter(ref reader);
            }

            mProjTexGenParams = new List <ProjectionTexGenParam>();

            for (int i = 0; i < mProjTexGenParamCount; i++)
            {
                mProjTexGenParams.Add(new ProjectionTexGenParam(ref reader));
            }

            if (mHasFontShadowParam)
            {
                mFontShadowParam = new FontShadowParameter(ref reader);
            }
        }