private void BuildIndices() { var geometry = new Geometry <VertexPositionNormalTexture>(); geometry.AddVertices(ModelVertices.ToArray()); ModelIndices.AddRange(geometry.Indices); }
protected void Setup() { if (!ModelIndices.Any()) { BuildIndices(); } if (Entity is EntityFloorInfo && Entity.TextureIndexList == null) { Entity.TextureIndexList = new[] { 0, 0 } } ; else if (Entity.TextureIndexList == null) { return; } var triangles = ModelVertices.Count / 3; // if TextureIndex list is smaller than the triangle count, fill them with 0 if (Entity.TextureIndexList.Length < triangles) { var newTextureIndexList = new int[triangles]; for (var i = 0; i < Entity.TextureIndexList.Length; i++) { newTextureIndexList[i] = Entity.TextureIndexList[i]; } for (var i = Entity.TextureIndexList.Length; i < newTextureIndexList.Length; i++) { newTextureIndexList[i] = 0; } Entity.TextureIndexList = newTextureIndexList; } for (var i = 0; i < triangles; i++) { var indexValue = Entity.TextureIndexList[i]; if (indexValue == -1 || !Entity.Visible) { continue; } ModelTriangles.Add(new ModelTriangle(this, i * 3)); } BuildBoundingBox(); }