public void Read(BinaryStream bs)
        {
            var startPos = bs.ByteOffset;

            Magic    = bs.Read.UInt();
            Version  = bs.Read.UShort();
            Revision = bs.Read.UShort();
            Unk1     = bs.Read.UInt();

            // Physics mat ids
            NumPhysicsMats     = bs.Read.Int();
            PhysicsMaterialIds = bs.Read.UIntArray(NumPhysicsMats);

            // Verts
            NumVertBlocks = bs.Read.Int();
            Verts         = new Vector3[NumVertBlocks][];
            for (int i = 0; i < NumVertBlocks; i++)
            {
                int numVerts = bs.Read.Int();
                Verts[i] = bs.Read.Vector3Array(numVerts);
            }

            // Indice blocks
            NumIndiceBlocks = bs.Read.Int();
            IndiceBlocks    = new IndiceBlock[NumIndiceBlocks];
            for (int i = 0; i < NumIndiceBlocks; i++)
            {
                IndiceBlocks[i] = new IndiceBlock(bs);
            }

            // Mats
            NumMatBlocks = bs.Read.Int();
            MatBlocks    = new MatBlock[NumMatBlocks];
            for (int i = 0; i < NumMatBlocks; i++)
            {
                MatBlocks[i] = new MatBlock(bs);
            }

            // Mopps
            NumMoppBlocks = bs.Read.Int();
            MoppBlocks    = new MoppBlock[NumMoppBlocks];
            for (int i = 0; i < NumMoppBlocks; i++)
            {
                MoppBlocks[i] = new MoppBlock(bs);
            }

            // Havok data
            var readBytes = bs.ByteOffset - startPos;
            var leftBytes = NodeLength - readBytes;

            HavokData = bs.Read.ByteArray((int)leftBytes);
        }
Beispiel #2
0
 public void UpdateParams(float hp, float maxHp)
 {
     MeshRenderer.GetPropertyBlock(MatBlock);
     MatBlock.SetFloat(Fill, hp / maxHp);
     MeshRenderer.SetPropertyBlock(MatBlock);
 }