コード例 #1
0
ファイル: PointDefinitions.cs プロジェクト: weichx/SpaceGame
        public int Read(ByteBufferReader reader)
        {
            BlockHeader header = new BlockHeader(reader);

            vertexCount = reader.ReadInt();
            reader.ReadInt(); //normal count
            reader.ReadInt(); //offset
            vertexData   = new VertexData[vertexCount];
            normalCounts = new int[vertexCount];
            normals      = new List <Vector3>();

            for (int i = 0; i < normalCounts.Length; i++)
            {
                normalCounts[i] = reader.ReadByte();
            }

            for (int i = 0; i < vertexCount; i++)
            {
                int normalCountForVertex = normalCounts[i];
                vertexData[i].vertex  = reader.ReadVector3();
                vertexData[i].normals = new Vector3[normalCountForVertex];

                for (int j = 0; j < normalCountForVertex; j++)
                {
                    Vector3 normal = reader.ReadVector3();
                    vertexData[i].normals[j] = normal;
                    normals.Add(normal);
                }
            }

            return(header.size);
        }
コード例 #2
0
ファイル: SortNormalBlock.cs プロジェクト: weichx/SpaceGame
 public SortNormalBlock(ByteBufferReader reader)
 {
     reader.FastForward(sizeof(int));
     size           = reader.ReadInt();
     planeNormal    = reader.ReadVector3();
     planePoint     = reader.ReadVector3();
     reserved       = reader.ReadInt();
     frontOffset    = reader.ReadInt();
     backOffset     = reader.ReadInt();
     preListOffset  = reader.ReadInt();
     postListOffset = reader.ReadInt();
     onlineOffset   = reader.ReadInt();
     boundingBoxMin = reader.ReadVector3();
     boundingBoxMax = reader.ReadVector3();
 }
コード例 #3
0
        public FlatPolygonBlock(ByteBufferReader reader)
        {
            reader.FastForward(sizeof(int));
            size        = reader.ReadInt();
            normal      = reader.ReadVector3();
            center      = reader.ReadVector3();
            radius      = reader.ReadFloat();
            vertexCount = reader.ReadInt();
            red         = reader.ReadByte();
            green       = reader.ReadByte();
            blue        = reader.ReadByte();
            pad         = reader.ReadByte();
            vertexMap   = new PolygonVertex[vertexCount];

            for (int i = 0; i < vertexCount; i++)
            {
                vertexMap[i].vertexIndex = reader.ReadUShort();
                vertexMap[i].normalIndex = reader.ReadUShort();
            }
        }
コード例 #4
0
        private void ParseHeaderSection()
        {
            Header header = model.header;

            header.maxRadius      = reader.ReadFloat();
            header.objectFlags    = reader.ReadInt();
            header.subObjectCount = reader.ReadInt();
            header.minBounding    = reader.ReadVector3();
            header.maxBounding    = reader.ReadVector3();
            int detailLevels = reader.ReadInt();

            header.detailLevelIndices = new int[detailLevels];

            for (int i = 0; i < detailLevels; i++)
            {
                header.detailLevelIndices[i] = reader.ReadInt();
            }

            int debrisCount = reader.ReadInt();

            header.debrisCountIndices = new int[debrisCount];

            for (int i = 0; i < debrisCount; i++)
            {
                header.debrisCountIndices[i] = reader.ReadInt();
            }

            header.mass            = reader.ReadFloat();
            header.centerOfMass    = reader.ReadVector3();
            header.momentOfInertia = reader.ReadFloatArray(9);
            int crossSectionCount = reader.ReadInt();

            if (crossSectionCount < 0)
            {
                crossSectionCount = 0;
            }
            header.crossSections = new CrossSection[crossSectionCount];

            for (int i = 0; i < header.crossSections.Length; i++)
            {
                header.crossSections[i].depth  = reader.ReadFloat();
                header.crossSections[i].radius = reader.ReadFloat();
            }

            header.muzzleLights = new MuzzleLight[reader.ReadInt()];

            for (int i = 0; i < header.muzzleLights.Length; i++)
            {
                header.muzzleLights[i].location  = reader.ReadVector3();
                header.muzzleLights[i].lightType = reader.ReadInt();
            }
        }