private void AddTile(TileViewModel aTile) { GeometryModel3D _tileGeometry = new GeometryModel3D(); _tileGeometry.Geometry = new MeshGeometry3D(); _tileGeometry.Material = this.FTileMaterial; _tileGeometry.BackMaterial = this.FBackTileMaterial; TileGeometry _tile = new TileGeometry( aTile, _tileGeometry, null, this.ViewModel.Structure.IsHighDefenition, this.ViewModel.Center); this.FTiles.Add(_tile); int _tileSize = JsdTile.GetProfileXSize(aTile.IsHighDefenition); int _tileBottom = aTile.TileIsOnRoof ? JsdTile.GetProfileZSize(aTile.IsHighDefenition) : 0; foreach (LayerCellViewModel _cell in aTile.ShapeViewModel.Cells) { if (_cell.LayerCellValue) { _tile.AttachCube(_cell.X, _cell.Y, _cell.Z * 2, false, _tileSize, _tileBottom, false); } } //_tile.JoinCubeSides(); _tile.UpdateTileGeometry(); this.mgShape.Children.Add(_tileGeometry); }
private void AddTile(TileViewModel aTile) { GeometryModel3D _tileGeometry = new GeometryModel3D(); _tileGeometry.Geometry = new MeshGeometry3D(); GeometryModel3D _altTileGeometry = new GeometryModel3D(); _altTileGeometry.Geometry = new MeshGeometry3D(); if (aTile.IsSelected) { _tileGeometry.Material = this.FSelectedTileMaterial; _tileGeometry.BackMaterial = this.FSelectedBackTileMaterial; _altTileGeometry.Material = this.FAltSelectedTileMaterial; _altTileGeometry.BackMaterial = this.FAltSelectedTileMaterial; } else { _tileGeometry.Material = this.FTileMaterial; _tileGeometry.BackMaterial = this.FBackTileMaterial; _altTileGeometry.Material = this.FAltTileMaterial; _altTileGeometry.BackMaterial = this.FAltTileMaterial; } TileGeometry _tile = new TileGeometry( aTile, _tileGeometry, _altTileGeometry, this.ViewModel.Structure.IsHighDefenition, this.ViewModel.Center); this.FTiles.Add(_tile); int _tileSize = JsdTile.GetProfileXSize(aTile.IsHighDefenition); int _tileBottom = aTile.TileIsOnRoof ? JsdTile.GetProfileZSize(aTile.IsHighDefenition) : 0; foreach (LayerCellViewModel _cell in aTile.ShapeViewModel.Cells) { if (_cell.LayerCellValue) { _tile.AddCube(_cell.X, _cell.Y, _cell.Z, _tileSize, _tileBottom); this.ViewModel.FilledPositionCount++; } _cell.AttachHandler(this, Cell_PropertyChanged); } _tile.UpdateTileGeometry(); this.mgShape.Children.Add(_tileGeometry); this.mgShape.Children.Add(_altTileGeometry); }
private void ProcessCell(LayerCellViewModel aCell, TileViewModel aTile) { TileGeometry _tile = this.FTiles.Where(x => x.Tile == aTile).SingleOrDefault(); int _tileSize = JsdTile.GetProfileXSize(aTile.IsHighDefenition); int _tileBottom = aTile.TileIsOnRoof ? JsdTile.GetProfileZSize(aTile.IsHighDefenition) : 0; if (aCell.LayerCellValue) { _tile.AddCube(aCell.X, aCell.Y, aCell.Z, _tileSize, _tileBottom); this.ViewModel.FilledPositionCount++; } else { _tile.RemoveCube(aCell.X, aCell.Y, aCell.Z, _tileSize, _tileBottom); this.ViewModel.FilledPositionCount--; } _tile.UpdateTileGeometry(); }
private GeometryModel3D AddTile(JsdTile aTile) { int _tileSize = JsdTile.GetProfileXSize(aTile.IsHighDefenition); int _tileBottom = (aTile.Flags & JsdTile.JsdTileFlags.TILE_ON_ROOF) > 0 ? JsdTile.GetProfileZSize(aTile.IsHighDefenition) : 0; GeometryModel3D _tileGeometry = new GeometryModel3D(); _tileGeometry.Geometry = new MeshGeometry3D(); _tileGeometry.Material = this.FTileMaterial; _tileGeometry.BackMaterial = this.FBackTileMaterial; TileGeometry _tile = new TileGeometry( aTile, _tileGeometry, aTile.IsHighDefenition, this.ViewModel.Center); for (int i = 0; i < aTile.ProfileSize; i++) { int y = i % aTile.ProfileXSize; int x = i / aTile.ProfileXSize; for (int z = 0; z < aTile.ProfileZSize; z++) { int _mask = 1 << z; if ((aTile.Shape[i] & _mask) > 0) { _tile.AttachCube(x, y, z * 2, false, _tileSize, _tileBottom); } } } //_tile.JoinCubeSides(); _tile.UpdateTileGeometry(); this.mgShape.Children.Add(_tileGeometry); return(_tileGeometry); }