package org.jwildfire.create.tina.variation.iflames;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.jwildfire.base.Tools;
import org.jwildfire.create.tina.variation.RessourceType;
import org.jwildfire.create.tina.variation.VariationFunc;
public class MotionParams implements Params, Serializable {
private static final long serialVersionUID = 1L;
private static final String PARAM_TIME = "time";
private static final String PARAM_LIFE = "life";
private static final String PARAM_LIFE_VAR = "life_var";
private static final String PARAM_PREVIEW = "preview";
public static final String PARAM_FORCE_X0 = "force_x0";
public static final String PARAM_FORCE_Y0 = "force_y0";
public static final String PARAM_FORCE_Z0 = "force_z0";
public static final String PARAM_FORCE_CENTRE_X = "force_centre_x";
public static final String PARAM_FORCE_CENTRE_Y = "force_centre_y";
public static final String PARAM_FORCE_CENTRE_Z = "force_centre_z";
private static final String PARAM_FORCE_WAVELEN_X = "force_wavelen_x";
private static final String PARAM_FORCE_WAVELEN_Y = "force_wavelen_y";
private static final String PARAM_FORCE_WAVELEN_Z = "force_wavelen_z";
private double time = 0.0;
private double life = 600.0;
private double lifeVar = 0.0;
private int preview = 0;
private double forceX0 = 0.0;
private double forceY0 = 0.1;
private double forceZ0 = 0.0;
private double forceCentreX = 0.0;
private double forceCentreY = 0.0;
private double forceCentreZ = 0.0;
private double forceWavelenX = 0.5;
private double forceWavelenY = 0.5;
private double forceWavelenZ = 0.5;
@Override
public String[] appendParamNames(String[] pParamNames) {
List<String> res = new ArrayList<String>(Arrays.asList(pParamNames));
res.add(PARAM_TIME);
res.add(PARAM_PREVIEW);
res.add(PARAM_LIFE);
res.add(PARAM_LIFE_VAR);
res.add(PARAM_FORCE_X0);
res.add(PARAM_FORCE_Y0);
res.add(PARAM_FORCE_Z0);
res.add(PARAM_FORCE_CENTRE_X);
res.add(PARAM_FORCE_CENTRE_Y);
res.add(PARAM_FORCE_CENTRE_Z);
res.add(PARAM_FORCE_WAVELEN_X);
res.add(PARAM_FORCE_WAVELEN_Y);
res.add(PARAM_FORCE_WAVELEN_Z);
return res.toArray(pParamNames);
}
@Override
public String[] appendRessourceNames(String[] pRessourceNames) {
List<String> res = new ArrayList<String>(Arrays.asList(pRessourceNames));
return res.toArray(pRessourceNames);
}
@Override
public Object[] appendParamValues(Object[] pParamValues) {
List<Object> res = new ArrayList<Object>(Arrays.asList(pParamValues));
res.add(time);
res.add(preview);
res.add(life);
res.add(lifeVar);
res.add(forceX0);
res.add(forceY0);
res.add(forceZ0);
res.add(forceCentreX);
res.add(forceCentreY);
res.add(forceCentreZ);
res.add(forceWavelenX);
res.add(forceWavelenY);
res.add(forceWavelenZ);
return res.toArray(pParamValues);
}
@Override
public boolean setParameter(String pName, double pValue) {
if (PARAM_TIME.equalsIgnoreCase(pName)) {
time = pValue;
return true;
}
else if (PARAM_PREVIEW.equalsIgnoreCase(pName)) {
preview = VariationFunc.limitIntVal(Tools.FTOI(pValue), 0, 1);
return true;
}
else if (PARAM_LIFE.equalsIgnoreCase(pName)) {
life = pValue;
return true;
}
else if (PARAM_LIFE_VAR.equalsIgnoreCase(pName)) {
lifeVar = pValue;
if (lifeVar < 0.0) {
lifeVar = 0.0;
}
return true;
}
else if (PARAM_FORCE_X0.equalsIgnoreCase(pName)) {
forceX0 = pValue;
return true;
}
else if (PARAM_FORCE_Y0.equalsIgnoreCase(pName)) {
forceY0 = pValue;
return true;
}
else if (PARAM_FORCE_Z0.equalsIgnoreCase(pName)) {
forceZ0 = pValue;
return true;
}
else if (PARAM_FORCE_CENTRE_X.equalsIgnoreCase(pName)) {
forceCentreX = pValue;
return true;
}
else if (PARAM_FORCE_CENTRE_Y.equalsIgnoreCase(pName)) {
forceCentreY = pValue;
return true;
}
else if (PARAM_FORCE_CENTRE_Z.equalsIgnoreCase(pName)) {
forceCentreZ = pValue;
return true;
}
else if (PARAM_FORCE_WAVELEN_X.equalsIgnoreCase(pName)) {
forceWavelenX = pValue;
return true;
}
else if (PARAM_FORCE_WAVELEN_Y.equalsIgnoreCase(pName)) {
forceWavelenY = pValue;
return true;
}
else if (PARAM_FORCE_WAVELEN_Z.equalsIgnoreCase(pName)) {
forceWavelenZ = pValue;
return true;
}
else {
return false;
}
}
@Override
public boolean setRessource(String pName, byte[] pValue) {
return false;
}
@Override
public RessourceType getRessourceType(String pName) {
return null;
}
@Override
public byte[][] appendRessourceValues(byte[][] pRessourceValues) {
List<byte[]> res = new ArrayList<byte[]>(Arrays.asList(pRessourceValues));
return res.toArray(pRessourceValues);
}
@Override
public String completeImageKey(String key) {
return key + "#" + Tools.doubleToString(life) + "#" + Tools.doubleToString(lifeVar) + "#" + preview;
}
@Override
public String completeParticleKey(String pKey) {
return completeImageKey(pKey) + "#" + Tools.doubleToString(forceX0) + "#" + Tools.doubleToString(forceY0)
+ "#" + Tools.doubleToString(forceZ0) + "#" + Tools.doubleToString(forceCentreX) + "#" + Tools.doubleToString(forceCentreY)
+ "#" + Tools.doubleToString(forceCentreZ) + "#" + Tools.doubleToString(forceWavelenX) + "#" + Tools.doubleToString(forceWavelenY)
+ "#" + Tools.doubleToString(forceWavelenZ);
}
public double getTime() {
return time;
}
public double getLife() {
return life;
}
public double getLifeVar() {
return lifeVar;
}
public double getForceX0() {
return forceX0;
}
public double getForceY0() {
return forceY0;
}
public double getForceZ0() {
return forceZ0;
}
public double getForceCentreX() {
return forceCentreX;
}
public double getForceCentreY() {
return forceCentreY;
}
public double getForceCentreZ() {
return forceCentreZ;
}
public double getForceWavelenX() {
return forceWavelenX;
}
public double getForceWavelenY() {
return forceWavelenY;
}
public double getForceWavelenZ() {
return forceWavelenZ;
}
public int getPreview() {
return preview;
}
public void setPreview(int pPreview) {
preview = pPreview;
}
public void setTime(double pTime) {
time = pTime;
}
public void setLife(double pLife) {
life = pLife;
}
public void setLifeVar(double pLifeVar) {
lifeVar = pLifeVar;
}
public void setForceX0(double pForceX0) {
forceX0 = pForceX0;
}
public void setForceY0(double pForceY0) {
forceY0 = pForceY0;
}
public void setForceZ0(double pForceZ0) {
forceZ0 = pForceZ0;
}
public void setForceCentreX(double pForceCentreeX) {
forceCentreX = pForceCentreeX;
}
public void setForceCentreY(double pForceCentreY) {
forceCentreY = pForceCentreY;
}
public void setForceCentreZ(double pForceCentreZ) {
forceCentreZ = pForceCentreZ;
}
public void setForceWavelenX(double pForceWavelenX) {
forceWavelenX = pForceWavelenX;
}
public void setForceWavelenY(double pForceWavelenY) {
forceWavelenY = pForceWavelenY;
}
public void setForceWavelenZ(double pForceWavelenZ) {
forceWavelenZ = pForceWavelenZ;
}
}