use of net.drewke.tdme.tools.shared.model.LevelEditorEntityParticleSystem.PointParticleEmitter in project tdme by andreasdr.
the class ModelMetaDataFileExport method exportToJSON.
/**
* Export model meta data file to JSON node
* @param entity
*/
public static JSONObject exportToJSON(LevelEditorEntity entity) throws Exception {
JSONObject jEntityRoot = new JSONObject();
// re-convert to tm if having a model file
if (entity.getType() == EntityType.MODEL && entity.getFileName() != null) {
String modelPathName = Tools.getPath(entity.getFileName());
String modelFileName = Tools.getFileName(entity.getFileName()) + (entity.getFileName().endsWith(".tm") == false ? ".tm" : "");
TMWriter.write(entity.getModel(), modelPathName, modelFileName);
jEntityRoot.put("file", modelPathName + "/" + modelFileName);
// try to copy thumbnail
try {
String thumbnail = modelFileName + ".png";
jEntityRoot.put("thumbnail", thumbnail);
copyFile(new File("./tmp", entity.getThumbnail()), new File(Tools.getPath(entity.getFileName()), thumbnail));
} catch (IOException ioe) {
System.out.println("ModelMetaDataFileExport::export(): Could not copy thumbnail for '" + entity.getFileName() + "'");
}
}
// general data
jEntityRoot.put("version", "0.99");
jEntityRoot.put("type", entity.getType());
jEntityRoot.put("name", entity.getName());
jEntityRoot.put("descr", entity.getDescription());
jEntityRoot.put("px", entity.getPivot().getX());
jEntityRoot.put("py", entity.getPivot().getY());
jEntityRoot.put("pz", entity.getPivot().getZ());
// export particle system
if (entity.getType() == EntityType.PARTICLESYSTEM) {
LevelEditorEntityParticleSystem particleSystem = entity.getParticleSystem();
JSONObject jParticleSystem = new JSONObject();
// type
jParticleSystem.put("t", particleSystem.getType().toString());
switch(particleSystem.getType()) {
case NONE:
{
break;
}
case OBJECT_PARTICLE_SYSTEM:
{
JSONObject jObjectParticleSystem = new JSONObject();
// do we have a model file name?
if (particleSystem.getObjectParticleSystem().getModelFile() != null && particleSystem.getObjectParticleSystem().getModelFile().length() > 0) {
// yep, convert to .tm
String modelPathName = Tools.getPath(particleSystem.getObjectParticleSystem().getModelFile());
String modelFileName = Tools.getFileName(particleSystem.getObjectParticleSystem().getModelFile() + (particleSystem.getObjectParticleSystem().getModelFile().endsWith(".tm") == false ? ".tm" : ""));
TMWriter.write(particleSystem.getObjectParticleSystem().getModel(), modelPathName, modelFileName);
// and store to file
particleSystem.getObjectParticleSystem().setModelFile(modelPathName + "/" + modelFileName);
}
jObjectParticleSystem.put("mc", particleSystem.getObjectParticleSystem().getMaxCount());
jObjectParticleSystem.put("sx", particleSystem.getObjectParticleSystem().getScale().getX());
jObjectParticleSystem.put("sy", particleSystem.getObjectParticleSystem().getScale().getY());
jObjectParticleSystem.put("sz", particleSystem.getObjectParticleSystem().getScale().getZ());
jObjectParticleSystem.put("mf", particleSystem.getObjectParticleSystem().getModelFile());
jObjectParticleSystem.put("ae", particleSystem.getObjectParticleSystem().isAutoEmit());
jParticleSystem.put("ops", jObjectParticleSystem);
break;
}
case POINT_PARTICLE_SYSTEM:
{
JSONObject jPointParticleSystem = new JSONObject();
jPointParticleSystem.put("mp", particleSystem.getPointParticleSystem().getMaxPoints());
jPointParticleSystem.put("ae", particleSystem.getPointParticleSystem().isAutoEmit());
jParticleSystem.put("pps", jPointParticleSystem);
break;
}
default:
{
System.out.println("ModelMetaDataFileExport::export(): unknown particle system type '" + particleSystem.getType() + "'");
break;
}
}
// emitter
jParticleSystem.put("e", particleSystem.getEmitter().toString());
switch(particleSystem.getEmitter()) {
case NONE:
{
break;
}
case POINT_PARTICLE_EMITTER:
{
JSONObject jPointParticleEmitter = new JSONObject();
PointParticleEmitter emitter = particleSystem.getPointParticleEmitter();
jPointParticleEmitter.put("c", emitter.getCount());
jPointParticleEmitter.put("lt", emitter.getLifeTime());
jPointParticleEmitter.put("ltrnd", emitter.getLifeTimeRnd());
jPointParticleEmitter.put("m", emitter.getMass());
jPointParticleEmitter.put("mrnd", emitter.getMassRnd());
jPointParticleEmitter.put("px", emitter.getPosition().getX());
jPointParticleEmitter.put("py", emitter.getPosition().getY());
jPointParticleEmitter.put("pz", emitter.getPosition().getZ());
jPointParticleEmitter.put("vx", emitter.getVelocity().getX());
jPointParticleEmitter.put("vy", emitter.getVelocity().getY());
jPointParticleEmitter.put("vz", emitter.getVelocity().getZ());
jPointParticleEmitter.put("vrndx", emitter.getVelocityRnd().getX());
jPointParticleEmitter.put("vrndy", emitter.getVelocityRnd().getY());
jPointParticleEmitter.put("vrndz", emitter.getVelocityRnd().getZ());
jPointParticleEmitter.put("csr", emitter.getColorStart().getRed());
jPointParticleEmitter.put("csg", emitter.getColorStart().getGreen());
jPointParticleEmitter.put("csb", emitter.getColorStart().getBlue());
jPointParticleEmitter.put("csa", emitter.getColorStart().getAlpha());
jPointParticleEmitter.put("cer", emitter.getColorEnd().getRed());
jPointParticleEmitter.put("ceg", emitter.getColorEnd().getGreen());
jPointParticleEmitter.put("ceb", emitter.getColorEnd().getBlue());
jPointParticleEmitter.put("cea", emitter.getColorEnd().getAlpha());
jParticleSystem.put("ppe", jPointParticleEmitter);
break;
}
case BOUNDINGBOX_PARTICLE_EMITTER:
{
JSONObject jBoundingBoxParticleEmitter = new JSONObject();
BoundingBoxParticleEmitter emitter = particleSystem.getBoundingBoxParticleEmitters();
jBoundingBoxParticleEmitter.put("c", emitter.getCount());
jBoundingBoxParticleEmitter.put("lt", emitter.getLifeTime());
jBoundingBoxParticleEmitter.put("ltrnd", emitter.getLifeTimeRnd());
jBoundingBoxParticleEmitter.put("m", emitter.getMass());
jBoundingBoxParticleEmitter.put("mrnd", emitter.getMassRnd());
jBoundingBoxParticleEmitter.put("vx", emitter.getVelocity().getX());
jBoundingBoxParticleEmitter.put("vy", emitter.getVelocity().getY());
jBoundingBoxParticleEmitter.put("vz", emitter.getVelocity().getZ());
jBoundingBoxParticleEmitter.put("vrndx", emitter.getVelocityRnd().getX());
jBoundingBoxParticleEmitter.put("vrndy", emitter.getVelocityRnd().getY());
jBoundingBoxParticleEmitter.put("vrndz", emitter.getVelocityRnd().getZ());
jBoundingBoxParticleEmitter.put("csr", emitter.getColorStart().getRed());
jBoundingBoxParticleEmitter.put("csg", emitter.getColorStart().getGreen());
jBoundingBoxParticleEmitter.put("csb", emitter.getColorStart().getBlue());
jBoundingBoxParticleEmitter.put("csa", emitter.getColorStart().getAlpha());
jBoundingBoxParticleEmitter.put("cer", emitter.getColorEnd().getRed());
jBoundingBoxParticleEmitter.put("ceg", emitter.getColorEnd().getGreen());
jBoundingBoxParticleEmitter.put("ceb", emitter.getColorEnd().getBlue());
jBoundingBoxParticleEmitter.put("cea", emitter.getColorEnd().getAlpha());
jBoundingBoxParticleEmitter.put("ocx", emitter.getObbCenter().getX());
jBoundingBoxParticleEmitter.put("ocy", emitter.getObbCenter().getY());
jBoundingBoxParticleEmitter.put("ocz", emitter.getObbCenter().getZ());
jBoundingBoxParticleEmitter.put("ohex", emitter.getObbHalfextension().getX());
jBoundingBoxParticleEmitter.put("ohey", emitter.getObbHalfextension().getY());
jBoundingBoxParticleEmitter.put("ohez", emitter.getObbHalfextension().getZ());
jBoundingBoxParticleEmitter.put("oa0x", emitter.getObbAxis0().getX());
jBoundingBoxParticleEmitter.put("oa0y", emitter.getObbAxis0().getY());
jBoundingBoxParticleEmitter.put("oa0z", emitter.getObbAxis0().getZ());
jBoundingBoxParticleEmitter.put("oa1x", emitter.getObbAxis1().getX());
jBoundingBoxParticleEmitter.put("oa1y", emitter.getObbAxis1().getY());
jBoundingBoxParticleEmitter.put("oa1z", emitter.getObbAxis1().getZ());
jBoundingBoxParticleEmitter.put("oa2x", emitter.getObbAxis2().getX());
jBoundingBoxParticleEmitter.put("oa2y", emitter.getObbAxis2().getY());
jBoundingBoxParticleEmitter.put("oa2z", emitter.getObbAxis2().getZ());
jParticleSystem.put("bbpe", jBoundingBoxParticleEmitter);
break;
}
case CIRCLE_PARTICLE_EMITTER:
{
JSONObject jCircleParticleEmitter = new JSONObject();
CircleParticleEmitter emitter = particleSystem.getCircleParticleEmitter();
jCircleParticleEmitter.put("c", emitter.getCount());
jCircleParticleEmitter.put("lt", emitter.getLifeTime());
jCircleParticleEmitter.put("ltrnd", emitter.getLifeTimeRnd());
jCircleParticleEmitter.put("m", emitter.getMass());
jCircleParticleEmitter.put("mrnd", emitter.getMassRnd());
jCircleParticleEmitter.put("vx", emitter.getVelocity().getX());
jCircleParticleEmitter.put("vy", emitter.getVelocity().getY());
jCircleParticleEmitter.put("vz", emitter.getVelocity().getZ());
jCircleParticleEmitter.put("vrndx", emitter.getVelocityRnd().getX());
jCircleParticleEmitter.put("vrndy", emitter.getVelocityRnd().getY());
jCircleParticleEmitter.put("vrndz", emitter.getVelocityRnd().getZ());
jCircleParticleEmitter.put("csr", emitter.getColorStart().getRed());
jCircleParticleEmitter.put("csg", emitter.getColorStart().getGreen());
jCircleParticleEmitter.put("csb", emitter.getColorStart().getBlue());
jCircleParticleEmitter.put("csa", emitter.getColorStart().getAlpha());
jCircleParticleEmitter.put("cer", emitter.getColorEnd().getRed());
jCircleParticleEmitter.put("ceg", emitter.getColorEnd().getGreen());
jCircleParticleEmitter.put("ceb", emitter.getColorEnd().getBlue());
jCircleParticleEmitter.put("cea", emitter.getColorEnd().getAlpha());
jCircleParticleEmitter.put("cx", emitter.getCenter().getX());
jCircleParticleEmitter.put("cy", emitter.getCenter().getY());
jCircleParticleEmitter.put("cz", emitter.getCenter().getZ());
jCircleParticleEmitter.put("r", emitter.getRadius());
jCircleParticleEmitter.put("a0x", emitter.getAxis0().getX());
jCircleParticleEmitter.put("a0y", emitter.getAxis0().getY());
jCircleParticleEmitter.put("a0z", emitter.getAxis0().getZ());
jCircleParticleEmitter.put("a1x", emitter.getAxis1().getX());
jCircleParticleEmitter.put("a1y", emitter.getAxis1().getY());
jCircleParticleEmitter.put("a1z", emitter.getAxis1().getZ());
jParticleSystem.put("cpe", jCircleParticleEmitter);
break;
}
case CIRCLE_PARTICLE_EMITTER_PLANE_VELOCITY:
{
JSONObject jCircleParticleEmitterPlaneVelocity = new JSONObject();
CircleParticleEmitterPlaneVelocity emitter = particleSystem.getCircleParticleEmitterPlaneVelocity();
jCircleParticleEmitterPlaneVelocity.put("c", emitter.getCount());
jCircleParticleEmitterPlaneVelocity.put("lt", emitter.getLifeTime());
jCircleParticleEmitterPlaneVelocity.put("ltrnd", emitter.getLifeTimeRnd());
jCircleParticleEmitterPlaneVelocity.put("m", emitter.getMass());
jCircleParticleEmitterPlaneVelocity.put("mrnd", emitter.getMassRnd());
jCircleParticleEmitterPlaneVelocity.put("v", emitter.getVelocity());
jCircleParticleEmitterPlaneVelocity.put("vrnd", emitter.getVelocityRnd());
jCircleParticleEmitterPlaneVelocity.put("csr", emitter.getColorStart().getRed());
jCircleParticleEmitterPlaneVelocity.put("csg", emitter.getColorStart().getGreen());
jCircleParticleEmitterPlaneVelocity.put("csb", emitter.getColorStart().getBlue());
jCircleParticleEmitterPlaneVelocity.put("csa", emitter.getColorStart().getAlpha());
jCircleParticleEmitterPlaneVelocity.put("cer", emitter.getColorEnd().getRed());
jCircleParticleEmitterPlaneVelocity.put("ceg", emitter.getColorEnd().getGreen());
jCircleParticleEmitterPlaneVelocity.put("ceb", emitter.getColorEnd().getBlue());
jCircleParticleEmitterPlaneVelocity.put("cea", emitter.getColorEnd().getAlpha());
jCircleParticleEmitterPlaneVelocity.put("cx", emitter.getCenter().getX());
jCircleParticleEmitterPlaneVelocity.put("cy", emitter.getCenter().getY());
jCircleParticleEmitterPlaneVelocity.put("cz", emitter.getCenter().getZ());
jCircleParticleEmitterPlaneVelocity.put("r", emitter.getRadius());
jCircleParticleEmitterPlaneVelocity.put("a0x", emitter.getAxis0().getX());
jCircleParticleEmitterPlaneVelocity.put("a0y", emitter.getAxis0().getY());
jCircleParticleEmitterPlaneVelocity.put("a0z", emitter.getAxis0().getZ());
jCircleParticleEmitterPlaneVelocity.put("a1x", emitter.getAxis1().getX());
jCircleParticleEmitterPlaneVelocity.put("a1y", emitter.getAxis1().getY());
jCircleParticleEmitterPlaneVelocity.put("a1z", emitter.getAxis1().getZ());
jParticleSystem.put("cpeev", jCircleParticleEmitterPlaneVelocity);
break;
}
case SPHERE_PARTICLE_EMITTER:
{
JSONObject jSphereParticleEmitter = new JSONObject();
SphereParticleEmitter emitter = particleSystem.getSphereParticleEmitter();
jSphereParticleEmitter.put("c", emitter.getCount());
jSphereParticleEmitter.put("lt", emitter.getLifeTime());
jSphereParticleEmitter.put("ltrnd", emitter.getLifeTimeRnd());
jSphereParticleEmitter.put("m", emitter.getMass());
jSphereParticleEmitter.put("mrnd", emitter.getMassRnd());
jSphereParticleEmitter.put("vx", emitter.getVelocity().getX());
jSphereParticleEmitter.put("vy", emitter.getVelocity().getY());
jSphereParticleEmitter.put("vz", emitter.getVelocity().getZ());
jSphereParticleEmitter.put("vrndx", emitter.getVelocityRnd().getX());
jSphereParticleEmitter.put("vrndy", emitter.getVelocityRnd().getY());
jSphereParticleEmitter.put("vrndz", emitter.getVelocityRnd().getZ());
jSphereParticleEmitter.put("csr", emitter.getColorStart().getRed());
jSphereParticleEmitter.put("csg", emitter.getColorStart().getGreen());
jSphereParticleEmitter.put("csb", emitter.getColorStart().getBlue());
jSphereParticleEmitter.put("csa", emitter.getColorStart().getAlpha());
jSphereParticleEmitter.put("cer", emitter.getColorEnd().getRed());
jSphereParticleEmitter.put("ceg", emitter.getColorEnd().getGreen());
jSphereParticleEmitter.put("ceb", emitter.getColorEnd().getBlue());
jSphereParticleEmitter.put("cea", emitter.getColorEnd().getAlpha());
jSphereParticleEmitter.put("cx", emitter.getCenter().getX());
jSphereParticleEmitter.put("cy", emitter.getCenter().getY());
jSphereParticleEmitter.put("cz", emitter.getCenter().getZ());
jSphereParticleEmitter.put("r", emitter.getRadius());
jParticleSystem.put("spe", jSphereParticleEmitter);
break;
}
default:
System.out.println("ModelMetaDataFileExport::export(): unknown particle system emitter '" + particleSystem.getEmitter() + "'");
}
// add to file
jEntityRoot.put("ps", jParticleSystem);
}
// bounding volume
JSONArray jBoundingVolumes = new JSONArray();
for (int i = 0; i < entity.getBoundingVolumeCount(); i++) {
LevelEditorEntityBoundingVolume entityBoundingVolume = entity.getBoundingVolumeAt(i);
BoundingVolume bv = entityBoundingVolume.getBoundingVolume();
if (bv == null)
continue;
JSONObject jBoundingVolume = new JSONObject();
if (bv == null) {
jBoundingVolume.put("type", "none");
jBoundingVolumes.put(jBoundingVolume);
} else if (bv instanceof Sphere) {
Sphere sphere = (Sphere) bv;
jBoundingVolume.put("type", "sphere");
jBoundingVolume.put("cx", sphere.getCenter().getX());
jBoundingVolume.put("cy", sphere.getCenter().getY());
jBoundingVolume.put("cz", sphere.getCenter().getZ());
jBoundingVolume.put("r", sphere.getRadius());
jBoundingVolumes.put(jBoundingVolume);
} else if (bv instanceof Capsule) {
Capsule capsule = (Capsule) bv;
jBoundingVolume.put("type", "capsule");
jBoundingVolume.put("ax", capsule.getA().getX());
jBoundingVolume.put("ay", capsule.getA().getY());
jBoundingVolume.put("az", capsule.getA().getZ());
jBoundingVolume.put("bx", capsule.getB().getX());
jBoundingVolume.put("by", capsule.getB().getY());
jBoundingVolume.put("bz", capsule.getB().getZ());
jBoundingVolume.put("r", capsule.getRadius());
jBoundingVolumes.put(jBoundingVolume);
} else if (bv instanceof BoundingBox) {
BoundingBox aabb = (BoundingBox) bv;
jBoundingVolume.put("type", "aabb");
jBoundingVolume.put("mix", aabb.getMin().getX());
jBoundingVolume.put("miy", aabb.getMin().getY());
jBoundingVolume.put("miz", aabb.getMin().getZ());
jBoundingVolume.put("max", aabb.getMax().getX());
jBoundingVolume.put("may", aabb.getMax().getY());
jBoundingVolume.put("maz", aabb.getMax().getZ());
jBoundingVolumes.put(jBoundingVolume);
} else if (bv instanceof OrientedBoundingBox) {
OrientedBoundingBox obb = (OrientedBoundingBox) bv;
jBoundingVolume.put("type", "obb");
jBoundingVolume.put("cx", obb.getCenter().getX());
jBoundingVolume.put("cy", obb.getCenter().getY());
jBoundingVolume.put("cz", obb.getCenter().getZ());
jBoundingVolume.put("a0x", obb.getAxes()[0].getX());
jBoundingVolume.put("a0y", obb.getAxes()[0].getY());
jBoundingVolume.put("a0z", obb.getAxes()[0].getZ());
jBoundingVolume.put("a1x", obb.getAxes()[1].getX());
jBoundingVolume.put("a1y", obb.getAxes()[1].getY());
jBoundingVolume.put("a1z", obb.getAxes()[1].getZ());
jBoundingVolume.put("a2x", obb.getAxes()[2].getX());
jBoundingVolume.put("a2y", obb.getAxes()[2].getY());
jBoundingVolume.put("a2z", obb.getAxes()[2].getZ());
jBoundingVolume.put("hex", obb.getHalfExtension().getX());
jBoundingVolume.put("hey", obb.getHalfExtension().getY());
jBoundingVolume.put("hez", obb.getHalfExtension().getZ());
jBoundingVolumes.put(jBoundingVolume);
} else if (bv instanceof ConvexMesh) {
ConvexMesh mesh = (ConvexMesh) bv;
jBoundingVolume.put("type", "convexmesh");
jBoundingVolume.put("file", entityBoundingVolume.getModelMeshFile());
JSONArray jMeshTriangles = new JSONArray();
int triangleIdx = 0;
for (Triangle triangle : mesh.getTriangles()) {
JSONArray jMeshTriangleVertices = new JSONArray();
int vertexIdx = 0;
for (Vector3 vertex : triangle.getVertices()) {
JSONArray jMeshTriangleVertex = new JSONArray();
for (int vcIdx = 0; vcIdx < 3; vcIdx++) {
jMeshTriangleVertex.put(vcIdx, vertex.getArray()[vcIdx]);
}
jMeshTriangleVertices.put(vertexIdx++, jMeshTriangleVertex);
}
jMeshTriangles.put(triangleIdx++, jMeshTriangleVertices);
}
jBoundingVolume.put("t", jMeshTriangles);
jBoundingVolumes.put(jBoundingVolume);
}
}
jEntityRoot.put("bvs", jBoundingVolumes);
// model properties
JSONArray jModelProperties = new JSONArray();
for (PropertyModelClass modelProperty : entity.getProperties()) {
JSONObject jObjectProperty = new JSONObject();
jObjectProperty.put("name", modelProperty.getName());
jObjectProperty.put("value", modelProperty.getValue());
jModelProperties.put(jObjectProperty);
}
jEntityRoot.put("properties", jModelProperties);
//
return jEntityRoot;
}
use of net.drewke.tdme.tools.shared.model.LevelEditorEntityParticleSystem.PointParticleEmitter in project tdme by andreasdr.
the class ModelMetaDataFileImport method doImportFromJSON.
/**
* Imports a model meta data file from JSON object
* @param id or LevelEditorEntity.ID_NONE
* @param path name or null
* @param JSON entity root
*/
public static LevelEditorEntity doImportFromJSON(int id, String pathName, JSONObject jEntityRoot) throws Exception {
LevelEditorEntity levelEditorEntity;
// check for version
float version = Float.parseFloat(jEntityRoot.getString("version"));
// pivot
Vector3 pivot = new Vector3((float) jEntityRoot.getDouble("px"), (float) jEntityRoot.getDouble("py"), (float) jEntityRoot.getDouble("pz"));
// String thumbnail = jRoot.getString("thumbnail");
EntityType modelType = LevelEditorEntity.EntityType.valueOf(jEntityRoot.getString("type"));
String modelFile = jEntityRoot.has("file") == true ? new File(jEntityRoot.getString("file")).getCanonicalPath() : null;
String modelThumbnail = jEntityRoot.has("thumbnail") == true ? jEntityRoot.getString("thumbnail") : null;
String name = jEntityRoot.getString("name");
String description = jEntityRoot.getString("descr");
// load model
Model model = null;
// having a model file?
String gameRoot = Tools.getGameRootPath(pathName);
String modelRelativeFileName = null;
if (modelFile != null) {
// yep, load it
modelRelativeFileName = Tools.getRelativeResourcesFileName(gameRoot, modelFile);
String modelPath = (gameRoot.length() > 0 ? gameRoot + "/" : "") + Tools.getPath(modelRelativeFileName);
if (modelFile.toLowerCase().endsWith(".dae")) {
model = DAEReader.read(modelPath, Tools.getFileName(modelRelativeFileName));
} else if (modelFile.toLowerCase().endsWith(".tm")) {
model = TMReader.read(modelPath, Tools.getFileName(modelRelativeFileName));
} else {
throw new Exception("Unsupported mode file: " + modelFile);
}
} else // TODO: only load if required e.g. for LevelEditor
if (modelType == EntityType.EMPTY) {
model = DAEReader.read("resources/tools/leveleditor/models", "arrow.dae");
}
// load level editor model
levelEditorEntity = new LevelEditorEntity(id, modelType, name, description, null, modelFile != null ? new File(gameRoot, modelRelativeFileName).getCanonicalPath() : null, modelThumbnail, model, pivot);
// parse properties
JSONArray jProperties = jEntityRoot.getJSONArray("properties");
for (int i = 0; i < jProperties.length(); i++) {
JSONObject jProperty = jProperties.getJSONObject(i);
levelEditorEntity.addProperty(jProperty.getString("name"), jProperty.getString("value"));
}
// old: optional bounding volume
if (jEntityRoot.has("bv") == true) {
levelEditorEntity.addBoundingVolume(0, parseBoundingVolume(0, levelEditorEntity, jEntityRoot.getJSONObject("bv")));
} else // new: optional bounding volumeS
if (jEntityRoot.has("bvs") == true) {
JSONArray jBoundingVolumes = jEntityRoot.getJSONArray("bvs");
for (int i = 0; i < jBoundingVolumes.length(); i++) {
JSONObject jBv = jBoundingVolumes.getJSONObject(i);
levelEditorEntity.addBoundingVolume(i, parseBoundingVolume(i, levelEditorEntity, jBv));
}
}
// parse particle system
if (modelType == EntityType.PARTICLESYSTEM) {
LevelEditorEntityParticleSystem particleSystem = levelEditorEntity.getParticleSystem();
JSONObject jParticleSystem = jEntityRoot.getJSONObject("ps");
// type
particleSystem.setType(Type.valueOf(jParticleSystem.getString("t")));
switch(particleSystem.getType()) {
case NONE:
{
break;
}
case OBJECT_PARTICLE_SYSTEM:
{
JSONObject jObjectParticleSystem = jParticleSystem.getJSONObject("ops");
ObjectParticleSystem objectParticleSystem = particleSystem.getObjectParticleSystem();
objectParticleSystem.setMaxCount(jObjectParticleSystem.getInt("mc"));
objectParticleSystem.getScale().setX((float) jObjectParticleSystem.getDouble("sx"));
objectParticleSystem.getScale().setY((float) jObjectParticleSystem.getDouble("sy"));
objectParticleSystem.getScale().setZ((float) jObjectParticleSystem.getDouble("sz"));
objectParticleSystem.setAutoEmit(jObjectParticleSystem.getBoolean("ae"));
try {
String particleModelFile = jObjectParticleSystem.getString("mf");
String particleModelRelativeFileName = Tools.getRelativeResourcesFileName(gameRoot, particleModelFile);
String particleModelPath = (gameRoot.length() > 0 ? gameRoot + "/" : "") + Tools.getPath(particleModelRelativeFileName);
objectParticleSystem.setModelFile(particleModelPath + "/" + Tools.getFileName(particleModelRelativeFileName));
} catch (Exception exception) {
exception.printStackTrace();
System.out.println("ModelMetaDataFileImport::doImport(): Failed to set model file: " + exception.getMessage());
}
break;
}
case POINT_PARTICLE_SYSTEM:
{
JSONObject jPointParticleSystem = jParticleSystem.getJSONObject("pps");
particleSystem.getPointParticleSystem().setMaxPoints(jPointParticleSystem.getInt("mp"));
particleSystem.getPointParticleSystem().setAutoEmit(jPointParticleSystem.getBoolean("ae"));
break;
}
default:
{
System.out.println("ModelMetaDataFileExport::export(): unknown particle system type '" + particleSystem.getType() + "'");
break;
}
}
// emitter
particleSystem.setEmitter(Emitter.valueOf(jParticleSystem.getString("e")));
switch(particleSystem.getEmitter()) {
case NONE:
{
break;
}
case POINT_PARTICLE_EMITTER:
{
JSONObject jPointParticleEmitter = jParticleSystem.getJSONObject("ppe");
PointParticleEmitter emitter = particleSystem.getPointParticleEmitter();
emitter.setCount(jPointParticleEmitter.getInt("c"));
emitter.setLifeTime(jPointParticleEmitter.getLong("lt"));
emitter.setLifeTimeRnd(jPointParticleEmitter.getLong("ltrnd"));
emitter.setMass((float) jPointParticleEmitter.getDouble("m"));
emitter.setMassRnd((float) jPointParticleEmitter.getDouble("mrnd"));
emitter.getPosition().setX((float) jPointParticleEmitter.getDouble("px"));
emitter.getPosition().setY((float) jPointParticleEmitter.getDouble("py"));
emitter.getPosition().setZ((float) jPointParticleEmitter.getDouble("pz"));
emitter.getVelocity().setX((float) jPointParticleEmitter.getDouble("vx"));
emitter.getVelocity().setY((float) jPointParticleEmitter.getDouble("vy"));
emitter.getVelocity().setZ((float) jPointParticleEmitter.getDouble("vz"));
emitter.getVelocityRnd().setX((float) jPointParticleEmitter.getDouble("vrndx"));
emitter.getVelocityRnd().setY((float) jPointParticleEmitter.getDouble("vrndy"));
emitter.getVelocityRnd().setZ((float) jPointParticleEmitter.getDouble("vrndz"));
emitter.getColorStart().setRed((float) jPointParticleEmitter.getDouble("csr"));
emitter.getColorStart().setGreen((float) jPointParticleEmitter.getDouble("csg"));
emitter.getColorStart().setBlue((float) jPointParticleEmitter.getDouble("csb"));
emitter.getColorStart().setAlpha((float) jPointParticleEmitter.getDouble("csa"));
emitter.getColorEnd().setRed((float) jPointParticleEmitter.getDouble("cer"));
emitter.getColorEnd().setGreen((float) jPointParticleEmitter.getDouble("ceg"));
emitter.getColorEnd().setBlue((float) jPointParticleEmitter.getDouble("ceb"));
emitter.getColorEnd().setAlpha((float) jPointParticleEmitter.getDouble("cea"));
break;
}
case BOUNDINGBOX_PARTICLE_EMITTER:
{
JSONObject jBoundingBoxParticleEmitter = jParticleSystem.getJSONObject("bbpe");
BoundingBoxParticleEmitter emitter = particleSystem.getBoundingBoxParticleEmitters();
emitter.setCount(jBoundingBoxParticleEmitter.getInt("c"));
emitter.setLifeTime(jBoundingBoxParticleEmitter.getLong("lt"));
emitter.setLifeTimeRnd(jBoundingBoxParticleEmitter.getLong("ltrnd"));
emitter.setMass((float) jBoundingBoxParticleEmitter.getDouble("m"));
emitter.setMassRnd((float) jBoundingBoxParticleEmitter.getDouble("mrnd"));
emitter.getVelocity().setX((float) jBoundingBoxParticleEmitter.getDouble("vx"));
emitter.getVelocity().setY((float) jBoundingBoxParticleEmitter.getDouble("vy"));
emitter.getVelocity().setZ((float) jBoundingBoxParticleEmitter.getDouble("vz"));
emitter.getVelocityRnd().setX((float) jBoundingBoxParticleEmitter.getDouble("vrndx"));
emitter.getVelocityRnd().setY((float) jBoundingBoxParticleEmitter.getDouble("vrndy"));
emitter.getVelocityRnd().setZ((float) jBoundingBoxParticleEmitter.getDouble("vrndz"));
emitter.getColorStart().setRed((float) jBoundingBoxParticleEmitter.getDouble("csr"));
emitter.getColorStart().setGreen((float) jBoundingBoxParticleEmitter.getDouble("csg"));
emitter.getColorStart().setBlue((float) jBoundingBoxParticleEmitter.getDouble("csb"));
emitter.getColorStart().setAlpha((float) jBoundingBoxParticleEmitter.getDouble("csa"));
emitter.getColorEnd().setRed((float) jBoundingBoxParticleEmitter.getDouble("cer"));
emitter.getColorEnd().setGreen((float) jBoundingBoxParticleEmitter.getDouble("ceg"));
emitter.getColorEnd().setBlue((float) jBoundingBoxParticleEmitter.getDouble("ceb"));
emitter.getColorEnd().setAlpha((float) jBoundingBoxParticleEmitter.getDouble("cea"));
emitter.getObbCenter().setX((float) jBoundingBoxParticleEmitter.getDouble("ocx"));
emitter.getObbCenter().setY((float) jBoundingBoxParticleEmitter.getDouble("ocy"));
emitter.getObbCenter().setZ((float) jBoundingBoxParticleEmitter.getDouble("ocz"));
emitter.getObbHalfextension().setX((float) jBoundingBoxParticleEmitter.getDouble("ohex"));
emitter.getObbHalfextension().setY((float) jBoundingBoxParticleEmitter.getDouble("ohey"));
emitter.getObbHalfextension().setZ((float) jBoundingBoxParticleEmitter.getDouble("ohez"));
emitter.getObbAxis0().setX((float) jBoundingBoxParticleEmitter.getDouble("oa0x"));
emitter.getObbAxis0().setY((float) jBoundingBoxParticleEmitter.getDouble("oa0y"));
emitter.getObbAxis0().setZ((float) jBoundingBoxParticleEmitter.getDouble("oa0z"));
emitter.getObbAxis1().setX((float) jBoundingBoxParticleEmitter.getDouble("oa1x"));
emitter.getObbAxis1().setY((float) jBoundingBoxParticleEmitter.getDouble("oa1y"));
emitter.getObbAxis1().setZ((float) jBoundingBoxParticleEmitter.getDouble("oa1z"));
emitter.getObbAxis2().setX((float) jBoundingBoxParticleEmitter.getDouble("oa2x"));
emitter.getObbAxis2().setY((float) jBoundingBoxParticleEmitter.getDouble("oa2y"));
emitter.getObbAxis2().setZ((float) jBoundingBoxParticleEmitter.getDouble("oa2z"));
break;
}
case CIRCLE_PARTICLE_EMITTER:
{
JSONObject jCircleParticleEmitter = jParticleSystem.getJSONObject("cpe");
CircleParticleEmitter emitter = particleSystem.getCircleParticleEmitter();
emitter.setCount(jCircleParticleEmitter.getInt("c"));
emitter.setLifeTime(jCircleParticleEmitter.getLong("lt"));
emitter.setLifeTimeRnd(jCircleParticleEmitter.getLong("ltrnd"));
emitter.setMass((float) jCircleParticleEmitter.getDouble("m"));
emitter.setMassRnd((float) jCircleParticleEmitter.getDouble("mrnd"));
emitter.getVelocity().setX((float) jCircleParticleEmitter.getDouble("vx"));
emitter.getVelocity().setY((float) jCircleParticleEmitter.getDouble("vy"));
emitter.getVelocity().setZ((float) jCircleParticleEmitter.getDouble("vz"));
emitter.getVelocityRnd().setX((float) jCircleParticleEmitter.getDouble("vrndx"));
emitter.getVelocityRnd().setY((float) jCircleParticleEmitter.getDouble("vrndy"));
emitter.getVelocityRnd().setZ((float) jCircleParticleEmitter.getDouble("vrndz"));
emitter.getColorStart().setRed((float) jCircleParticleEmitter.getDouble("csr"));
emitter.getColorStart().setGreen((float) jCircleParticleEmitter.getDouble("csg"));
emitter.getColorStart().setBlue((float) jCircleParticleEmitter.getDouble("csb"));
emitter.getColorStart().setAlpha((float) jCircleParticleEmitter.getDouble("csa"));
emitter.getColorEnd().setRed((float) jCircleParticleEmitter.getDouble("cer"));
emitter.getColorEnd().setGreen((float) jCircleParticleEmitter.getDouble("ceg"));
emitter.getColorEnd().setBlue((float) jCircleParticleEmitter.getDouble("ceb"));
emitter.getColorEnd().setAlpha((float) jCircleParticleEmitter.getDouble("cea"));
emitter.getCenter().setX((float) jCircleParticleEmitter.getDouble("cx"));
emitter.getCenter().setY((float) jCircleParticleEmitter.getDouble("cy"));
emitter.getCenter().setZ((float) jCircleParticleEmitter.getDouble("cz"));
emitter.setRadius((float) jCircleParticleEmitter.getDouble("r"));
emitter.getAxis0().setX((float) jCircleParticleEmitter.getDouble("a0x"));
emitter.getAxis0().setY((float) jCircleParticleEmitter.getDouble("a0y"));
emitter.getAxis0().setZ((float) jCircleParticleEmitter.getDouble("a0z"));
emitter.getAxis1().setX((float) jCircleParticleEmitter.getDouble("a1x"));
emitter.getAxis1().setY((float) jCircleParticleEmitter.getDouble("a1y"));
emitter.getAxis1().setZ((float) jCircleParticleEmitter.getDouble("a1z"));
break;
}
case CIRCLE_PARTICLE_EMITTER_PLANE_VELOCITY:
{
JSONObject jCircleParticleEmitterPlaneVelocity = jParticleSystem.getJSONObject("cpeev");
CircleParticleEmitterPlaneVelocity emitter = particleSystem.getCircleParticleEmitterPlaneVelocity();
emitter.setCount(jCircleParticleEmitterPlaneVelocity.getInt("c"));
emitter.setLifeTime(jCircleParticleEmitterPlaneVelocity.getLong("lt"));
emitter.setLifeTimeRnd(jCircleParticleEmitterPlaneVelocity.getLong("ltrnd"));
emitter.setMass((float) jCircleParticleEmitterPlaneVelocity.getDouble("m"));
emitter.setMassRnd((float) jCircleParticleEmitterPlaneVelocity.getDouble("mrnd"));
emitter.setVelocity((float) jCircleParticleEmitterPlaneVelocity.getDouble("v"));
emitter.setVelocityRnd((float) jCircleParticleEmitterPlaneVelocity.getDouble("vrnd"));
emitter.getColorStart().setRed((float) jCircleParticleEmitterPlaneVelocity.getDouble("csr"));
emitter.getColorStart().setGreen((float) jCircleParticleEmitterPlaneVelocity.getDouble("csg"));
emitter.getColorStart().setBlue((float) jCircleParticleEmitterPlaneVelocity.getDouble("csb"));
emitter.getColorStart().setAlpha((float) jCircleParticleEmitterPlaneVelocity.getDouble("csa"));
emitter.getColorEnd().setRed((float) jCircleParticleEmitterPlaneVelocity.getDouble("cer"));
emitter.getColorEnd().setGreen((float) jCircleParticleEmitterPlaneVelocity.getDouble("ceg"));
emitter.getColorEnd().setBlue((float) jCircleParticleEmitterPlaneVelocity.getDouble("ceb"));
emitter.getColorEnd().setAlpha((float) jCircleParticleEmitterPlaneVelocity.getDouble("cea"));
emitter.getCenter().setX((float) jCircleParticleEmitterPlaneVelocity.getDouble("cx"));
emitter.getCenter().setY((float) jCircleParticleEmitterPlaneVelocity.getDouble("cy"));
emitter.getCenter().setZ((float) jCircleParticleEmitterPlaneVelocity.getDouble("cz"));
emitter.setRadius((float) jCircleParticleEmitterPlaneVelocity.getDouble("r"));
emitter.getAxis0().setX((float) jCircleParticleEmitterPlaneVelocity.getDouble("a0x"));
emitter.getAxis0().setY((float) jCircleParticleEmitterPlaneVelocity.getDouble("a0y"));
emitter.getAxis0().setZ((float) jCircleParticleEmitterPlaneVelocity.getDouble("a0z"));
emitter.getAxis1().setX((float) jCircleParticleEmitterPlaneVelocity.getDouble("a1x"));
emitter.getAxis1().setY((float) jCircleParticleEmitterPlaneVelocity.getDouble("a1y"));
emitter.getAxis1().setZ((float) jCircleParticleEmitterPlaneVelocity.getDouble("a1z"));
break;
}
case SPHERE_PARTICLE_EMITTER:
{
JSONObject jSphereParticleEmitter = jParticleSystem.getJSONObject("spe");
SphereParticleEmitter emitter = particleSystem.getSphereParticleEmitter();
emitter.setCount(jSphereParticleEmitter.getInt("c"));
emitter.setLifeTime(jSphereParticleEmitter.getLong("lt"));
emitter.setLifeTimeRnd(jSphereParticleEmitter.getLong("ltrnd"));
emitter.setMass((float) jSphereParticleEmitter.getDouble("m"));
emitter.setMassRnd((float) jSphereParticleEmitter.getDouble("mrnd"));
emitter.getVelocity().setX((float) jSphereParticleEmitter.getDouble("vx"));
emitter.getVelocity().setY((float) jSphereParticleEmitter.getDouble("vy"));
emitter.getVelocity().setZ((float) jSphereParticleEmitter.getDouble("vz"));
emitter.getVelocityRnd().setX((float) jSphereParticleEmitter.getDouble("vrndx"));
emitter.getVelocityRnd().setY((float) jSphereParticleEmitter.getDouble("vrndy"));
emitter.getVelocityRnd().setZ((float) jSphereParticleEmitter.getDouble("vrndz"));
emitter.getColorStart().setRed((float) jSphereParticleEmitter.getDouble("csr"));
emitter.getColorStart().setGreen((float) jSphereParticleEmitter.getDouble("csg"));
emitter.getColorStart().setBlue((float) jSphereParticleEmitter.getDouble("csb"));
emitter.getColorStart().setAlpha((float) jSphereParticleEmitter.getDouble("csa"));
emitter.getColorEnd().setRed((float) jSphereParticleEmitter.getDouble("cer"));
emitter.getColorEnd().setGreen((float) jSphereParticleEmitter.getDouble("ceg"));
emitter.getColorEnd().setBlue((float) jSphereParticleEmitter.getDouble("ceb"));
emitter.getColorEnd().setAlpha((float) jSphereParticleEmitter.getDouble("cea"));
emitter.getCenter().setX((float) jSphereParticleEmitter.getDouble("cx"));
emitter.getCenter().setY((float) jSphereParticleEmitter.getDouble("cy"));
emitter.getCenter().setZ((float) jSphereParticleEmitter.getDouble("cz"));
emitter.setRadius((float) jSphereParticleEmitter.getDouble("r"));
break;
}
default:
System.out.println("ModelMetaDataFileExport::export(): unknown particle system emitter '" + particleSystem.getEmitter() + "'");
}
}
// done
return levelEditorEntity;
}
use of net.drewke.tdme.tools.shared.model.LevelEditorEntityParticleSystem.PointParticleEmitter in project tdme by andreasdr.
the class ParticleSystemScreenController method setParticleSystemEmitter.
/**
* Set particle system emitter
*/
public void setParticleSystemEmitter() {
particleSystemEmitter.getActiveConditions().removeAll();
LevelEditorEntityParticleSystem particleSystem = view.getEntity().getParticleSystem();
switch(particleSystem.getEmitter()) {
case NONE:
{
particleSystemEmitters.getController().setValue(value.set(EMITTER_NONE));
particleSystemEmitter.getActiveConditions().add(EMITTER_NONE);
break;
}
case POINT_PARTICLE_EMITTER:
{
particleSystemEmitters.getController().setValue(value.set(EMITTER_POINTPARTICLEEMITTER));
particleSystemEmitter.getActiveConditions().add(EMITTER_POINTPARTICLEEMITTER);
PointParticleEmitter emitter = particleSystem.getPointParticleEmitter();
ppeCount.getController().setValue(value.set(emitter.getCount()));
ppeLifeTime.getController().setValue(value.set((int) emitter.getLifeTime()));
ppeLifeTimeRnd.getController().setValue(value.set((int) emitter.getLifeTimeRnd()));
ppeMass.getController().setValue(value.set(emitter.getMass(), 4));
ppeMassRnd.getController().setValue(value.set(emitter.getMassRnd(), 4));
ppePosition.getController().setValue(value.set(Tools.formatVector3(emitter.getPosition())));
ppeVelocity.getController().setValue(value.set(Tools.formatVector3(emitter.getVelocity())));
ppeVelocityRnd.getController().setValue(value.set(Tools.formatVector3(emitter.getVelocityRnd())));
ppeColorStart.getController().setValue(value.set(Tools.formatColor4(emitter.getColorStart())));
ppeColorEnd.getController().setValue(value.set(Tools.formatColor4(emitter.getColorEnd())));
break;
}
case BOUNDINGBOX_PARTICLE_EMITTER:
{
particleSystemEmitters.getController().setValue(value.set(EMITTER_BOUNDINGBOXPARTICLEEMITTER));
particleSystemEmitter.getActiveConditions().add(EMITTER_BOUNDINGBOXPARTICLEEMITTER);
BoundingBoxParticleEmitter emitter = particleSystem.getBoundingBoxParticleEmitters();
bbpeCount.getController().setValue(value.set(emitter.getCount()));
bbpeLifeTime.getController().setValue(value.set((int) emitter.getLifeTime()));
bbpeLifeTimeRnd.getController().setValue(value.set((int) emitter.getLifeTimeRnd()));
bbpeMass.getController().setValue(value.set(emitter.getMass(), 4));
bbpeMassRnd.getController().setValue(value.set(emitter.getMassRnd(), 4));
bbpeVelocity.getController().setValue(value.set(Tools.formatVector3(emitter.getVelocity())));
bbpeVelocityRnd.getController().setValue(value.set(Tools.formatVector3(emitter.getVelocityRnd())));
bbpeColorStart.getController().setValue(value.set(Tools.formatColor4(emitter.getColorStart())));
bbpeColorEnd.getController().setValue(value.set(Tools.formatColor4(emitter.getColorEnd())));
bbpeObbCenter.getController().setValue(value.set(Tools.formatVector3(emitter.getObbCenter())));
bbpeObbHalfextension.getController().setValue(value.set(Tools.formatVector3(emitter.getObbHalfextension())));
// set up rotation matrix to extract euler angles
Vector3 rotation = new Vector3();
Matrix4x4 rotationMatrix = new Matrix4x4().identity();
rotationMatrix.setAxes(emitter.getObbAxis0(), emitter.getObbAxis1(), emitter.getObbAxis2());
rotationMatrix.computeEulerAngles(rotation);
// set up rotation
bbpeObbRotationX.getController().setValue(value.set(Tools.formatFloat(rotation.getX())));
bbpeObbRotationY.getController().setValue(value.set(Tools.formatFloat(rotation.getY())));
bbpeObbRotationZ.getController().setValue(value.set(Tools.formatFloat(rotation.getZ())));
break;
}
case CIRCLE_PARTICLE_EMITTER:
{
particleSystemEmitters.getController().setValue(value.set(EMITTER_CIRCLEPARTICLEEMITTER));
particleSystemEmitter.getActiveConditions().add(EMITTER_CIRCLEPARTICLEEMITTER);
CircleParticleEmitter emitter = particleSystem.getCircleParticleEmitter();
cpeCount.getController().setValue(value.set(emitter.getCount()));
cpeLifeTime.getController().setValue(value.set((int) emitter.getLifeTime()));
cpeLifeTimeRnd.getController().setValue(value.set((int) emitter.getLifeTimeRnd()));
cpeMass.getController().setValue(value.set(emitter.getMass(), 4));
cpeMassRnd.getController().setValue(value.set(emitter.getMassRnd(), 4));
cpeVelocity.getController().setValue(value.set(Tools.formatVector3(emitter.getVelocity())));
cpeVelocityRnd.getController().setValue(value.set(Tools.formatVector3(emitter.getVelocityRnd())));
cpeColorStart.getController().setValue(value.set(Tools.formatColor4(emitter.getColorStart())));
cpeColorEnd.getController().setValue(value.set(Tools.formatColor4(emitter.getColorEnd())));
cpeCenter.getController().setValue(value.set(Tools.formatVector3(emitter.getCenter())));
cpeRadius.getController().setValue(value.set(emitter.getRadius(), 4));
// set up rotation matrix to extract euler angles
Vector3 rotation = new Vector3();
Matrix4x4 rotationMatrix = new Matrix4x4().identity();
rotationMatrix.setAxes(emitter.getAxis0(), Vector3.computeCrossProduct(emitter.getAxis0(), emitter.getAxis1()), emitter.getAxis1());
rotationMatrix.computeEulerAngles(rotation);
// set up rotation
cpeRotationX.getController().setValue(value.set(Tools.formatFloat(rotation.getX())));
cpeRotationY.getController().setValue(value.set(Tools.formatFloat(rotation.getY())));
cpeRotationZ.getController().setValue(value.set(Tools.formatFloat(rotation.getZ())));
break;
}
case CIRCLE_PARTICLE_EMITTER_PLANE_VELOCITY:
{
particleSystemEmitters.getController().setValue(value.set(EMITTER_CIRCLEPARTICLEEMITTERPLANEVELOCITY));
particleSystemEmitter.getActiveConditions().add(EMITTER_CIRCLEPARTICLEEMITTERPLANEVELOCITY);
CircleParticleEmitterPlaneVelocity emitter = particleSystem.getCircleParticleEmitterPlaneVelocity();
cpepvCount.getController().setValue(value.set(emitter.getCount()));
cpepvLifeTime.getController().setValue(value.set((int) emitter.getLifeTime()));
cpepvLifeTimeRnd.getController().setValue(value.set((int) emitter.getLifeTimeRnd()));
cpepvMass.getController().setValue(value.set(emitter.getMass(), 4));
cpepvMassRnd.getController().setValue(value.set(emitter.getMassRnd(), 4));
cpepvVelocity.getController().setValue(value.set(emitter.getVelocity(), 4));
cpepvVelocityRnd.getController().setValue(value.set(emitter.getVelocityRnd(), 4));
cpepvColorStart.getController().setValue(value.set(Tools.formatColor4(emitter.getColorStart())));
cpepvColorEnd.getController().setValue(value.set(Tools.formatColor4(emitter.getColorEnd())));
cpepvCenter.getController().setValue(value.set(Tools.formatVector3(emitter.getCenter())));
cpepvRadius.getController().setValue(value.set(emitter.getRadius(), 4));
// set up rotation matrix to extract euler angles
Vector3 rotation = new Vector3();
Matrix4x4 rotationMatrix = new Matrix4x4().identity();
rotationMatrix.setAxes(emitter.getAxis0(), Vector3.computeCrossProduct(emitter.getAxis0(), emitter.getAxis1()), emitter.getAxis1());
rotationMatrix.computeEulerAngles(rotation);
// set up rotation
cpepvRotationX.getController().setValue(value.set(Tools.formatFloat(rotation.getX())));
cpepvRotationY.getController().setValue(value.set(Tools.formatFloat(rotation.getY())));
cpepvRotationZ.getController().setValue(value.set(Tools.formatFloat(rotation.getZ())));
break;
}
case SPHERE_PARTICLE_EMITTER:
{
particleSystemEmitters.getController().setValue(value.set(EMITTER_SPHEREPARTICLEEMITTER));
particleSystemEmitter.getActiveConditions().add(EMITTER_SPHEREPARTICLEEMITTER);
SphereParticleEmitter emitter = particleSystem.getSphereParticleEmitter();
speCount.getController().setValue(value.set(emitter.getCount()));
speLifeTime.getController().setValue(value.set((int) emitter.getLifeTime()));
speLifeTimeRnd.getController().setValue(value.set((int) emitter.getLifeTimeRnd()));
speMass.getController().setValue(value.set(emitter.getMass(), 4));
speMassRnd.getController().setValue(value.set(emitter.getMassRnd(), 4));
speVelocity.getController().setValue(value.set(Tools.formatVector3(emitter.getVelocity())));
speVelocityRnd.getController().setValue(value.set(Tools.formatVector3(emitter.getVelocityRnd())));
speColorStart.getController().setValue(value.set(Tools.formatColor4(emitter.getColorStart())));
speColorEnd.getController().setValue(value.set(Tools.formatColor4(emitter.getColorEnd())));
speCenter.getController().setValue(value.set(Tools.formatVector3(emitter.getCenter())));
speRadius.getController().setValue(value.set(emitter.getRadius(), 4));
break;
}
default:
System.out.println("ParticleSystemScreenController::onParticleSystemEmitterApply(): unknown particle system emitter '" + particleSystem.getEmitter() + "'");
}
// re init entity in view
view.initParticleSystem();
}
Aggregations