Esempio n. 1
0
 public VBUF(int APIversion, EventHandler handler, uint version, FormatFlags flags, GenericRCOLResource.ChunkReference swizzleInfo, byte[] buffer)
     : this(APIversion, handler)
 {
     mVersion = version;
     mFlags = flags;
     mSwizzleInfo = swizzleInfo;
     mBuffer = buffer;
 }
Esempio n. 2
0
 public VBUF(int APIversion, EventHandler handler, uint version, FormatFlags flags, GenericRCOLResource.ChunkReference swizzleInfo, byte[] buffer)
     : this(APIversion, handler)
 {
     mVersion     = version;
     mFlags       = flags;
     mSwizzleInfo = swizzleInfo;
     mBuffer      = buffer;
 }
Esempio n. 3
0
 public AChunkObject(uint chunkType, string chunkTag)
 {
     this.InstanceNum = sInstanceCount++;
     this.ChunkReference
                    = new GenericRCOLResource.ChunkReference(0, null);
     this.ChunkType = chunkType;
     this.ChunkTag  = chunkTag;
 }
Esempio n. 4
0
 public LODEntry(int APIversion, EventHandler handler, GenericRCOLResource.ChunkReference modelLodIndex, LODInfoFlags flags, LODId id, float minZValue, float maxZValue)
     : base(APIversion, handler)
 {
     mModelLodIndex = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, modelLodIndex);
     mFlags         = flags;
     mId            = id;
     mMinZValue     = minZValue;
     mMaxZValue     = maxZValue;
 }
Esempio n. 5
0
            private void Parse(Stream s)
            {
                BinaryReader br = new BinaryReader(s);

                mModelLodIndex = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, s);
                mFlags         = (LODInfoFlags)br.ReadUInt32();
                mId            = (LODId)br.ReadUInt32();
                mMinZValue     = br.ReadSingle();
                mMaxZValue     = br.ReadSingle();
            }
Esempio n. 6
0
        public static MATD GetMATDforMesh(this GenericRCOLResource rcolResource, GenericRCOLResource.ChunkReference reference)
        {
            IRCOLBlock materialRef = GenericRCOLResource.ChunkReference.GetBlock(rcolResource, reference);

            if (materialRef is MATD)
            {
                return(materialRef as MATD);
            }
            if (materialRef is MTST)
            {
                return(GetMATDforMesh(rcolResource, (materialRef as MTST).Index));
            }
            return(null);
        }
Esempio n. 7
0
        protected override void Parse(Stream s)
        {
            BinaryReader br  = new BinaryReader(s);
            string       tag = FOURCC(br.ReadUInt32());

            if (checking && tag != Tag)
            {
                throw new InvalidDataException(string.Format("Invalid Tag read: '{0}'; expected: '{1}'; at 0x{2:X8}", tag, Tag, s.Position));
            }
            mVersion     = br.ReadUInt32();
            mFlags       = (FormatFlags)br.ReadUInt32();
            mSwizzleInfo = new GenericRCOLResource.ChunkReference(0, handler, s);
            mBuffer      = new Byte[s.Length - s.Position];
            s.Read(mBuffer, 0, mBuffer.Length);
        }
Esempio n. 8
0
            public Mesh(int apiVersion, EventHandler handler, MLOD owner)
                : base(apiVersion, handler)
            {
                mOwner = owner;

                mMaterialIndex       = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, 0);
                mVertexFormatIndex   = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, 0);
                mVertexBufferIndex   = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, 0);
                mIndexBufferIndex    = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, 0);
                mBounds              = new BoundingBox(requestedApiVersion, handler);
                mSkinControllerIndex = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, 0);
                mJointReferences     = new UIntList(handler);
                mGeometryStates      = new GeometryStateList(handler);
                mScaleOffsetIndex    = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, 0);
                mMirrorPlane         = new Vector4(requestedApiVersion, handler);//mOwner.Version > 0x00000201
            }
Esempio n. 9
0
            private void Parse(Stream s)
            {
                BinaryReader br           = new BinaryReader(s);
                long         expectedSize = br.ReadUInt32();
                long         start        = s.Position;

                mName              = br.ReadUInt32();
                mMaterialIndex     = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, s);
                mVertexFormatIndex = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, s);
                mVertexBufferIndex = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, s);
                mIndexBufferIndex  = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, s);
                uint val = br.ReadUInt32();

                mPrimitiveType       = (ModelPrimitiveType)(val & 0x000000FF);
                mFlags               = (MeshFlags)(val >> 8);
                mStreamOffset        = br.ReadUInt32();
                mStartVertex         = br.ReadInt32();
                mStartIndex          = br.ReadInt32();
                mMinVertexIndex      = br.ReadInt32();
                mVertexCount         = br.ReadInt32();
                mPrimitiveCount      = br.ReadInt32();
                mBounds              = new BoundingBox(0, handler, s);
                mSkinControllerIndex = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, s);
                mJointReferences     = new UIntList(handler, s);
                mScaleOffsetIndex    = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, s);
                mGeometryStates      = new GeometryStateList(handler, s);
                if (mOwner.Version > 0x00000201)
                {
                    mParentName  = br.ReadUInt32();
                    mMirrorPlane = new Vector4(0, handler, s);
                }
                if (mOwner.Version > 0x00000203)
                {
                    mUnknown1 = br.ReadUInt32();
                }
                long actualSize = s.Position - start;

                if (checking && actualSize != expectedSize)
                {
                    throw new Exception(String.Format("Expected end at {0}, actual end was {1}", expectedSize,
                                                      actualSize));
                }
            }
Esempio n. 10
0
            public Mesh(int apiVersion, EventHandler handler, MLOD owner,
                        uint name,
                        GenericRCOLResource.ChunkReference materialIndex, GenericRCOLResource.ChunkReference vertexFormatIndex,
                        GenericRCOLResource.ChunkReference vertexBufferIndex, GenericRCOLResource.ChunkReference indexBufferIndex,
                        ModelPrimitiveType primitiveType, MeshFlags flags,
                        uint streamOffset, int startVertex, int startIndex, int minVertexIndex, int vertexCount, int primitiveCount,
                        BoundingBox bounds, GenericRCOLResource.ChunkReference skinControllerIndex,
                        UIntList jointReferences, GeometryStateList geometryStates, GenericRCOLResource.ChunkReference scaleOffsetIndex,
                        uint parentName, Vector4 mirrorPlane, uint unknown1
                        )
                : base(apiVersion, handler)
            {
                mOwner = owner;

                mName                = name;
                mMaterialIndex       = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, materialIndex);
                mVertexFormatIndex   = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, vertexFormatIndex);
                mVertexBufferIndex   = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, vertexBufferIndex);
                mIndexBufferIndex    = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, indexBufferIndex);
                mPrimitiveType       = primitiveType;
                mFlags               = flags;
                mStreamOffset        = streamOffset;
                mStartVertex         = startVertex;
                mStartIndex          = startIndex;
                mMinVertexIndex      = minVertexIndex;
                mVertexCount         = vertexCount;
                mPrimitiveCount      = primitiveCount;
                mBounds              = new BoundingBox(requestedApiVersion, handler, bounds);
                mSkinControllerIndex = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, skinControllerIndex);
                mJointReferences     = jointReferences == null ? null : new UIntList(handler, jointReferences);
                mGeometryStates      = geometryStates == null ? null : new GeometryStateList(handler, geometryStates);
                mScaleOffsetIndex    = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, scaleOffsetIndex);
                if (mOwner.Version > 0x00000201)
                {
                    mParentName  = parentName;
                    mMirrorPlane = new Vector4(requestedApiVersion, handler, mirrorPlane);
                }
                if (mOwner.Version > 0x00000203)
                {
                    mUnknown1 = unknown1;
                }
            }
Esempio n. 11
0
        public override Stream UnParse()
        {
            MemoryStream s  = new MemoryStream();
            BinaryWriter bw = new BinaryWriter(s);

            bw.Write((UInt32)FOURCC(Tag));
            bw.Write(mVersion);
            bw.Write((UInt32)mFlags);
            if (mSwizzleInfo == null)
            {
                mSwizzleInfo = new GenericRCOLResource.ChunkReference(0, handler, 0);
            }
            mSwizzleInfo.UnParse(s);
            if (mBuffer == null)
            {
                mBuffer = new byte[0];
            }
            bw.Write(mBuffer);
            return(s);
        }
Esempio n. 12
0
File: VBUF.cs Progetto: dd-dk/s3pi
        public override Stream UnParse()
        {
            MemoryStream s = new MemoryStream();
            BinaryWriter bw = new BinaryWriter(s);
            bw.Write((UInt32)FOURCC(Tag));
            bw.Write(mVersion);
            bw.Write((UInt32)mFlags);
            if (mSwizzleInfo == null) mSwizzleInfo = new GenericRCOLResource.ChunkReference(0, handler, 0);
            mSwizzleInfo.UnParse(s);
            if (mBuffer == null) mBuffer = new byte[0];
            bw.Write(mBuffer);
            return s;

        }
Esempio n. 13
0
File: VBUF.cs Progetto: dd-dk/s3pi
 protected override void Parse(Stream s)
 {
     BinaryReader br = new BinaryReader(s);
     string tag = FOURCC(br.ReadUInt32());
     if (checking && tag != Tag)
     {
         throw new InvalidDataException(string.Format("Invalid Tag read: '{0}'; expected: '{1}'; at 0x{2:X8}", tag, Tag, s.Position));
     }
     mVersion = br.ReadUInt32();
     mFlags = (FormatFlags)br.ReadUInt32();
     mSwizzleInfo = new GenericRCOLResource.ChunkReference(0, handler, s);
     mBuffer = new Byte[s.Length - s.Position];
     s.Read(mBuffer, 0, mBuffer.Length);
 }