package net.sf.openrocket.gui.figure3d.photo;
import net.sf.openrocket.gui.figure3d.photo.exhaust.FlameRenderer.FlameSettings;
import net.sf.openrocket.gui.figure3d.photo.sky.Sky;
import net.sf.openrocket.gui.figure3d.photo.sky.builtin.Mountains;
import net.sf.openrocket.util.AbstractChangeSource;
import net.sf.openrocket.util.Color;
import net.sf.openrocket.util.MathUtil;
public class PhotoSettings extends AbstractChangeSource implements FlameSettings {
private double roll = 3.14;
private double yaw = 0;
private double pitch = 2.05;
private double advance = 0;
private double viewAlt = -0.23;
private double viewAz = 2.08;
private double viewDistance = .44;
private double fov = 1.4;
private double lightAlt = .35;
private double lightAz = -1;
private Color sunlight = new Color(255, 255, 255);
private double ambiance = .3f;
private Color skyColor = new Color(55, 95, 155);
private boolean motionBlurred = false;
private boolean flame = false;
private Color flameColor = new Color(255, 100, 50);
private boolean smoke = false;
private Color smokeColor = new Color(230, 230, 230, 102);
private boolean sparks = false;
private double exhaustScale = 1.0;
private double flameAspectRatio = 1.0;
private double sparkConcentration;
private double sparkWeight;
private Sky sky = Mountains.instance;
public double getRoll() {
return roll;
}
public void setRoll(double roll) {
this.roll = roll;
fireChangeEvent();
}
public double getYaw() {
return yaw;
}
public void setYaw(double yaw) {
this.yaw = yaw;
fireChangeEvent();
}
public double getPitch() {
return pitch;
}
public void setPitch(double pitch) {
this.pitch = pitch;
fireChangeEvent();
}
public double getAdvance() {
return advance;
}
public void setAdvance(double advance) {
this.advance = advance;
fireChangeEvent();
}
public double getViewAlt() {
return viewAlt;
}
public void setViewAltAz(double viewAlt, double viewAz){
this.viewAz = viewAz;
this.viewAlt = MathUtil.clamp(viewAlt, -Math.PI/2, Math.PI/2);
fireChangeEvent();
}
public void setViewAlt(double viewAlt) {
this.viewAlt = MathUtil.clamp(viewAlt, -Math.PI/2, Math.PI/2);
fireChangeEvent();
}
public double getViewAz() {
return viewAz;
}
public void setViewAz(double viewAz) {
this.viewAz = viewAz;
fireChangeEvent();
}
public double getViewDistance() {
return viewDistance;
}
public void setViewDistance(double viewDistance) {
this.viewDistance = Math.max(viewDistance, 0);
fireChangeEvent();
}
public double getFov() {
return fov;
}
public void setFov(double fov) {
this.fov = MathUtil.clamp(fov, 1, Math.PI);
fireChangeEvent();
}
public double getLightAlt() {
return lightAlt;
}
public void setLightAlt(double lightAlt) {
this.lightAlt = lightAlt;
fireChangeEvent();
}
public double getLightAz() {
return lightAz;
}
public void setLightAz(double lightAz) {
this.lightAz = lightAz;
fireChangeEvent();
}
public boolean isMotionBlurred() {
return motionBlurred;
}
public void setMotionBlurred(boolean motionBlurred) {
this.motionBlurred = motionBlurred;
fireChangeEvent();
}
public boolean isFlame() {
return flame;
}
public void setFlame(boolean flame) {
this.flame = flame;
fireChangeEvent();
}
public boolean isSmoke() {
return smoke;
}
public void setSmoke(boolean smoke) {
this.smoke = smoke;
fireChangeEvent();
}
public Color getSunlight() {
return sunlight;
}
public void setSunlight(Color sunlight) {
this.sunlight = sunlight;
fireChangeEvent();
}
public double getAmbiance() {
return ambiance;
}
public void setAmbiance(double ambiance) {
this.ambiance = ambiance;
fireChangeEvent();
}
public Color getSkyColor() {
return skyColor;
}
public void setSkyColor(Color skyColor) {
this.skyColor = skyColor;
fireChangeEvent();
}
public Color getFlameColor() {
return flameColor;
}
public void setFlameColor(Color flameColor) {
this.flameColor = flameColor;
fireChangeEvent();
}
public Color getSmokeColor() {
return smokeColor;
}
public void setSmokeColor(Color smokeColor) {
smokeColor.setAlpha(this.smokeColor.getAlpha());
this.smokeColor = smokeColor;
fireChangeEvent();
}
public double getSmokeAlpha() {
return smokeColor.getAlpha() / 255f;
}
public void setSmokeAlpha(double alpha) {
smokeColor.setAlpha((int) (alpha * 255));
fireChangeEvent();
}
public boolean isSparks() {
return sparks;
}
public void setSparks(boolean sparks) {
this.sparks = sparks;
fireChangeEvent();
}
public double getExhaustScale() {
return exhaustScale;
}
public void setExhaustScale(double exhaustScale) {
this.exhaustScale = exhaustScale;
fireChangeEvent();
}
public double getFlameAspectRatio() {
return flameAspectRatio;
}
public void setFlameAspectRatio(double flameAspectRatio) {
this.flameAspectRatio = flameAspectRatio;
fireChangeEvent();
}
public Sky getSky() {
return sky;
}
public void setSky(Sky sky) {
this.sky = sky;
fireChangeEvent();
}
public double getSparkConcentration() {
return sparkConcentration;
}
public void setSparkConcentration(double sparkConcentration) {
this.sparkConcentration = sparkConcentration;
fireChangeEvent();
}
public double getSparkWeight() {
return sparkWeight;
}
public void setSparkWeight(double sparkWeight) {
this.sparkWeight = sparkWeight;
fireChangeEvent();
}
}