public void DrawBlock(BlockData data) { _genMesh.ClearAll(); var desc = StaticResources.BlocksInfo.GetBlockDescription(data.Type); var inp = new MesherBlockInput() { Block = data, Lighting = LightInfo.FullLit, Position = Byte3.Zero, Visibility = VisibilityFlags.All }; BlockModelGenerator.AddBlock(_genMesh, desc, ref Offset, ref inp); _renderer.material = VoxelsStatic.Instance.OpaqueMaterial; _genMesh.BakeMesh(); _filter.mesh = _genMesh.Mesh; }
public static void AddBlock(GeneratableMesh meshInfo, BlockDescription desc, ref Vector3 rootPos, ref MesherBlockInput input) { if (desc == null) { return; } var data = input.Block; var visibility = input.Visibility; var light = input.Lighting; switch (desc.ModelType) { case BlockModelType.None: return; case BlockModelType.FullBlockSimple: GenerateFullBlockSimple(meshInfo, desc, data, rootPos, visibility, light); return; case BlockModelType.FullBlockComplex: GenerateFullBlockComplex(meshInfo, desc, data, rootPos, visibility, light); return; case BlockModelType.HalfBlockDown: GenerateHalfBlockDown(meshInfo, desc, data, rootPos, visibility, light); return; case BlockModelType.HalfBlockUp: return; case BlockModelType.Stairs: return; case BlockModelType.Plate: return; case BlockModelType.Grass: return; case BlockModelType.HorizontalPlane: GenerateHorizontalPlane(meshInfo, desc, data, rootPos, visibility); return; case BlockModelType.SmallerBlock: return; case BlockModelType.CrossedVPlanes: GenerateCrossedVPlanes(meshInfo, desc, data, rootPos, visibility); return; default: return; } }