public WallController GetWall(WallPoint point) { if (walls.ContainsKey(point.toInt())) { return(walls[point.toInt()]); } return(null); }
public void EditorRemoveWall(WallPoint point) { WallController w = null; if (walls.TryGetValue(point.toInt(), out w)) { GameObject.DestroyImmediate(w.gameObject); walls.Remove(point.toInt()); } }
void InstantiateIndicator(WallPoint p, bool isDoor) { if(indicators.ContainsKey(p.toInt())) return; Transform ph = Instantiate<Transform>(isDoor?DoorIndicator:PlaceIndicator); ph.parent = transform; ph.localPosition = new Vector3(p.X,p.Y,0); indicators.Add(p.toInt(),ph); }
void InstantiateIndicator(WallPoint p, bool isDoor) { if (indicators.ContainsKey(p.toInt())) { return; } Transform ph = Instantiate <Transform>(isDoor?DoorIndicator:PlaceIndicator); ph.parent = transform; ph.localPosition = new Vector3(p.X, p.Y, 0); indicators.Add(p.toInt(), ph); }
public bool Process (Segmentator s, ILogicObject o) { bool res = false; if(o.ObjectType == CellObjects.Heater || o.ObjectType == CellObjects.HeatingPipe || o.ObjectType == CellObjects.Sink || o.ObjectType == CellObjects.Toilet) return false; o.ObjectRect.Foreach((MapPoint p) => { WallPoint wp; wp = new WallPoint(p.X,p.Y); if(s.Doors.ContainsKey(wp.toInt())) res = true; wp = new WallPoint(p.X+1,p.Y); if(s.Doors.ContainsKey(wp.toInt())) res = true; wp = new WallPoint(p.X,p.Y+1); if(s.Doors.ContainsKey(wp.toInt())) res = true; wp = new WallPoint(p.X+1,p.Y+1); if(s.Doors.ContainsKey(wp.toInt())) res = true; }); return res; }
public void PlaceIndicators(Dictionary <int, CellController> cells, Dictionary <int, WallController> walls, WallController wallPrefab) { bool isDoor = wallPrefab.PrefabIsDoor(); foreach (CellController c in cells.Values) { if (c.IsMultiCell) { MapRect rect = c.GetCurCellIndexes(); rect.Foreach((MapPoint p) => { WallPoint wp = new WallPoint(p.X, p.Y); if ((isDoor || !walls.ContainsKey(wp.toInt())) && wallPrefab.PrefabValidatePosition(M, wp)) { InstantiateIndicator(wp, isDoor); } }); } else { WallPoint wp = new WallPoint(c.Position.X, c.Position.Y); if ((isDoor || !walls.ContainsKey(wp.toInt())) && wallPrefab.PrefabValidatePosition(M, wp)) { InstantiateIndicator(wp, isDoor); } } } }
public bool IsInsideBuilding(WallPoint wallPoint) { bool res = cells.ContainsKey(wallPoint.toInt()) && cells.ContainsKey(new WallPoint(wallPoint.X - 1, wallPoint.Y).toInt()) && cells.ContainsKey(new WallPoint(wallPoint.X, wallPoint.Y - 1).toInt()) && cells.ContainsKey(new WallPoint(wallPoint.X - 1, wallPoint.Y - 1).toInt()); return(res); }
private void DeleteWall(WallPoint wp) { WallController wall = GetWall(wp); if (wall != null) { Destroy(wall.gameObject); walls.Remove(wp.toInt()); UpdateWallsAround(wp); } }
public void ForEachWall(MapPoint point, Action <WallPoint, WallController, Corner> action) { WallController wc = null; WallPoint wp; for (int i = 0; i < 4; i++) { wp = new WallPoint(point.X + i % 2, point.Y + (i > 1?1:0)); if (wp.X < 0 || wp.Y < 0) { continue; } walls.TryGetValue(wp.toInt(), out wc); action(wp, wc, cornersTable[i]); wc = null; } }
public WallController ReplaceWall(WallPoint point, WallController prefab) { if (point.X < 0 || point.Y < 0 || point.X > 0xffff || point.Y > 0xffff) { return(null); } WallController res = null; int key = point.toInt(); if (walls.ContainsKey(key)) { GameObject.Destroy(walls[key].gameObject); walls.Remove(key); } res = SetWall(point, prefab); return(res); }
public bool Process(Segmentator s, ILogicObject o) { bool res = false; if (o.ObjectType == CellObjects.Heater || o.ObjectType == CellObjects.HeatingPipe || o.ObjectType == CellObjects.Sink || o.ObjectType == CellObjects.Toilet) { return(false); } o.ObjectRect.Foreach((MapPoint p) => { WallPoint wp; wp = new WallPoint(p.X, p.Y); if (s.Doors.ContainsKey(wp.toInt())) { res = true; } wp = new WallPoint(p.X + 1, p.Y); if (s.Doors.ContainsKey(wp.toInt())) { res = true; } wp = new WallPoint(p.X, p.Y + 1); if (s.Doors.ContainsKey(wp.toInt())) { res = true; } wp = new WallPoint(p.X + 1, p.Y + 1); if (s.Doors.ContainsKey(wp.toInt())) { res = true; } }); return(res); }
public WallController SetWall(WallPoint point, WallController prefab) { if (point.X < 0 || point.Y < 0 || point.X > 0xffff || point.Y > 0xffff) { return(null); } WallController res = null; int key = point.toInt(); if (!walls.ContainsKey(key)) { WallController newWall = Instantiate <WallController>(prefab); newWall.transform.parent = transform; newWall.Position = point; walls.Add(key, newWall); res = newWall; } else { res = walls[key]; } return(res); }
public void EditorRemoveWall(WallPoint point) { WallController w = null; if(walls.TryGetValue(point.toInt(),out w)) { GameObject.DestroyImmediate(w.gameObject); walls.Remove(point.toInt()); } }
private void DeleteWall(WallPoint wp) { WallController wall = GetWall(wp); if(wall!=null) { Destroy(wall.gameObject); walls.Remove(wp.toInt()); UpdateWallsAround(wp); } }
public WallController GetWall(WallPoint point) { if(walls.ContainsKey(point.toInt())) return walls[point.toInt()]; return null; }
public WallController SetWall(WallPoint point, WallController prefab) { if(point.X<0 || point.Y<0 || point.X>0xffff || point.Y>0xffff) return null; WallController res = null; int key = point.toInt(); if(!walls.ContainsKey(key)) { WallController newWall = Instantiate<WallController>(prefab); newWall.transform.parent = transform; newWall.Position = point; walls.Add(key,newWall); res = newWall; } else res = walls[key]; return res; }
public WallController ReplaceWall(WallPoint point, WallController prefab) { if(point.X<0 || point.Y<0 || point.X>0xffff || point.Y>0xffff) return null; WallController res = null; int key = point.toInt(); if(walls.ContainsKey(key)) { GameObject.Destroy(walls[key].gameObject); walls.Remove(key); } res = SetWall(point, prefab); return res; }
public bool IsInsideBuilding(WallPoint wallPoint) { bool res = cells.ContainsKey(wallPoint.toInt()) && cells.ContainsKey(new WallPoint(wallPoint.X-1,wallPoint.Y).toInt()) && cells.ContainsKey(new WallPoint(wallPoint.X,wallPoint.Y-1).toInt()) && cells.ContainsKey(new WallPoint(wallPoint.X-1,wallPoint.Y-1).toInt()) ; return res; }
public void ForEachWall(MapPoint point, Action<WallPoint,WallController,Corner> action) { WallController wc = null; WallPoint wp; for(int i=0;i<4;i++) { wp = new WallPoint(point.X+i%2,point.Y+(i>1?1:0)); if(wp.X<0 || wp.Y<0) continue; walls.TryGetValue(wp.toInt(),out wc); action(wp,wc,cornersTable[i]); wc = null; } }
public void PlaceIndicators(Dictionary<int, CellController> cells, Dictionary<int, WallController> walls, WallController wallPrefab) { bool isDoor = wallPrefab.PrefabIsDoor(); foreach(CellController c in cells.Values) { if(c.IsMultiCell) { MapRect rect = c.GetCurCellIndexes(); rect.Foreach((MapPoint p) => { WallPoint wp = new WallPoint(p.X,p.Y); if( (isDoor || !walls.ContainsKey(wp.toInt())) && wallPrefab.PrefabValidatePosition(M,wp)) InstantiateIndicator(wp, isDoor); }); } else { WallPoint wp = new WallPoint(c.Position.X,c.Position.Y); if( (isDoor || !walls.ContainsKey(wp.toInt())) && wallPrefab.PrefabValidatePosition(M,wp)) InstantiateIndicator(wp, isDoor); } } }