void PaintTile(Vector2Int position, TileColor color, bool saveAction) { TileColor tileColor = Client.Instance.Labyrinth.Value.GetTileColor(position); if (color != tileColor) { GameObject tile = Client.Instance.Labyrinth.Value.GetTile(position); if (tile) { Algorithms.FloorPainter floorPainter = tile.GetComponentInChildren <Algorithms.FloorPainter>(); if (floorPainter != null) { floorPainter.PaintFloorWithColor(color); var prvtile = controls.PlayerPaintTile.Value; // TODO fix this crap controls.PlayerPaintTile.Value = new Tile { Position = position, color = color, previousColor = tileColor }; if (saveAction) { if (color == TileColor.Grey) { gameAction.SetAction(GameAction.UnpaintFloor); } else if (color == TileColor.Yellow) { gameAction.SetAction(GameAction.PaintFloorYellow); } else if (color == TileColor.Red) { gameAction.SetAction(GameAction.PaintFloorRed); } } } } } }
void PaintTile(Vector2Int position, TileColor color) { if (Client.Instance.Labyrinth.Value == null) { return; } GameObject tile = Client.Instance.Labyrinth.Value.GetTile(position); if (tile != null) { Algorithms.FloorPainter floorPainter = tile.GetComponentInChildren <Algorithms.FloorPainter>(); if (floorPainter != null) { floorPainter.PaintFloorWithColor(color); } } }
public override void DoScan(HeadsetToolManagerAsset tools, RaycastHit[] hits) { IEnumerable <RaycastHit> floors = hits.Where(x => x.collider.GetComponentInChildren <Algorithms.FloorPainter>() != null); if (floors.Count() != 0) { RaycastHit hit = floors.OrderBy(x => x.distance).First(); if (hit.distance < ScannerUtils.MaxTileDistance) { // TODO: This is a quick solution (looking for floor in asset name) // Bad practice remove // Unity dosent allow for multitag.. var piece = hit.collider.GetComponentInParent <Labyrinths.Piece>(); if (piece != null && (piece.gameObject.name.Contains("Floor") || piece.gameObject.name.Contains("Start") || piece.gameObject.name.Contains("End"))) { Algorithms.FloorPainter newfloor = hit.collider.GetComponentInChildren <Algorithms.FloorPainter>(); if (newfloor != null && newfloor != floor) { floor = newfloor; float dist = (Client.Instance.Labyrinth.Value.GetLabyrithEndPosition() - Client.Instance.Labyrinth.Value.GetWorldPositionInLabyrinthPosition(hit.point.x, hit.point.z)).magnitude; floor.Highlight(); tools.ScannedDistance.Value = ((int)dist) / Labyrinths.Utils.TileSize; return; } } } } //controller.FlightDistance.Value = -1; //Algorithms.FloorPainter.RemoveHighlight(); }
void GenerateVisualForAlgorithm(Algorithms.Id algorithm) { algorithmStepsPosition = Client.Instance.Algorithm.Value.GetAlgorithmSteps(Client.Instance.LabyrinthData.Value); Debug.Log("algorithmStepsPosition Count : " + algorithmStepsPosition.Count); for (int i = 0; i < algorithmStepsPosition.Count; i++) { Debug.Log("algorithmStepsPosition #" + i + " : " + algorithmStepsPosition[i].x + " , " + algorithmStepsPosition[i].y + " , " + algorithmStepsPosition[i].Color); GameObject obj = Instantiate(sphere, GetWorldPosition(algorithmStepsPosition[i].x, algorithmStepsPosition[i].y), Quaternion.identity, gameObject.transform); Algorithms.FloorPainter floorPainter = Client.Instance.Labyrinth.Value.GetTile(algorithmStepsPosition[i].x, algorithmStepsPosition[i].y).GetComponentInChildren <Algorithms.FloorPainter>(); if (floorPainter != null) { floorPainter.PaintFloorWithColor(algorithmStepsPosition[i].Color); } objectList.Add(obj); } }