private void TrackSelection() { int index; if (Mode == SelectionMode.Shape3D) { bool newPatternTracked = false; ; temp.Clear(); for (int i = 0; i < SelectedShape3Ds.Count; i++) { Shape oldShape = SelectedShape3Ds[i].shape; Shape newShape = OnlineFrame.Track(oldShape); if (newShape == null) continue; if (oldShape.refPattern != newShape.refPattern) newPatternTracked = true; if ((index = Mathf.Min(SelectedShape3Ds[i].index, newShape.InsCount - 1)) != -1) if (!temp.Contains(newShape[index])) temp.Add(newShape[index]); } SelectedShape3Ds.Clear(); SelectedShape3Ds.AddRange(temp); if (newPatternTracked) onNewPatternTracked(); } else { } }
public bool IsSelected(TileObject tile) { if (Mode == SelectionMode.Shape3D) return SelectedShape3Ds.Find(x => x == tile.pattern3D) != null; else return SelectedTiles.Find(x => x == tile) != null; }
public void InteractWithTile(TileObject info) { if (tracker.Running) return; if (Mode == SelectionMode.Shape3D) { if (!IsSelected(info)) { if (Input.GetKey(KeyCode.RightShift) || Input.GetKey(KeyCode.LeftShift)) { if (SelectedShape3Ds.Count == 0 || SelectedShape3D.shape.bg == info.shape.bg) SelectedShape3Ds.Insert(0, info.pattern3D); } else SelectedShape3D = info.pattern3D; } else { if (Input.GetKey(KeyCode.RightShift) || Input.GetKey(KeyCode.LeftShift)) SelectedShape3Ds.Remove(info.pattern3D); else SelectedShape3D = info.pattern3D; } } else { if (!IsSelected(info)) { { if (Input.GetKey(KeyCode.RightShift) || Input.GetKey(KeyCode.LeftShift)) { if (SelectedTiles.Count == 0 || SelectedTiles[0].shape.bg == info.shape.bg) SelectedTiles.Add(info); } else { SelectedTiles.Clear(); SelectedTiles.Add(info); } } } else { if (Input.GetKey(KeyCode.RightShift) || Input.GetKey(KeyCode.LeftShift)) SelectedTiles.Remove(info); else { SelectedTiles.Clear(); SelectedTiles.Add(info); } } } }
public void ClearSelection() { SelectedTiles.Clear(); SelectedShape3Ds.Clear(); }