/// <summary> /// Método que marca una figura como seleccionada. Además desmarca la figura seleccionada anteriormente. /// Se asume, por diseño con contratos, que es una figura válida. /// </summary> /// <param name="figure">La figura a seleccionar</param> public void SelectFigure(Figure figure) { // Desmarcamos la figura anterior if(SelectedFigure != null) SelectedFigure.isSelected = false; // Marcamos la figura actual SelectedFigure = figure; SelectedFigure.isSelected = true; //Anulamos input si estabamos cambiando valores if (SelectedButton != null) { SelectedButton.COMPLETED = false; SelectedButton.RestartInput(); sceneState = SceneState.Free; } }
/// <summary> /// Agrega una figura a la lista. La gracia está es que cada figura tiene un color único asignado, provisto /// por la escena. Esto sirve para tener una manera de identificar las figuras al momento de seleccionar. /// </summary> /// <param name="figure"></param> public void AddFigure(Figure figure) { // Le asignamos el color único a la figura figure.Color = new Vector(redId, blueId, greenId) / (float)255; // Hay que darlo vuelta B y G por que OpenGL, por alguna razón los lee distinto figure.ColorByte = new byte[3] { (byte)redId, (byte)blueId, (byte)greenId }; // Creamos el próximo color único redId++; if (redId == 250) { redId = 0; greenId++; if (greenId == 250) { greenId = 0; blueId++; } } if (figure.Name == "") figure.Name = figure.ToString(); figure.Name = figure.Name + "_" + figureCount++; SceneFigures.Add(figure); }