/******************************************************************************* * Copyright (c) 2012, 2013 Association for Decentralized Information Management in * Industry THTH ry. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * VTT Technical Research Centre of Finland - initial API and implementation *******************************************************************************/ package org.simantics.g3d.jme.utils; import java.util.Collection; import javax.vecmath.AxisAngle4d; import javax.vecmath.Quat4d; import javax.vecmath.Vector3d; import org.simantics.g3d.math.MathTools; import com.jme3.app.Application; import com.jme3.math.Quaternion; import com.jme3.renderer.RenderManager; import com.jme3.scene.Node; import com.jme3.scene.Spatial; public class JmeUtil { public static Node getRoot(Application app) { return getRoot(app.getRenderManager()); } public static Node getRoot(RenderManager manager) { return (Node)(manager.getMainView("Default").getScenes().get(0)); } public static void updateTransform(Collection props, Vector3d pos, Quat4d q) { double position[] = new double[]{pos.x,pos.y,pos.z}; updateTransform(props, position, q); } public static void updateTransform(Spatial actor, double pos[], Quat4d quat) { Quaternion q = new Quaternion((float)quat.x, (float)quat.y,(float)quat.z, (float)quat.w); actor.setLocalRotation(q); actor.setLocalTranslation((float)pos[0], (float)pos[1], (float)pos[2]); } public static void updateTransform(Collection props, double pos[], AxisAngle4d aa) { Quat4d q = new Quat4d(); MathTools.getQuat(aa, q); updateTransform(props, pos, q); } public static void updateTransform(Collection props, double pos[], Quat4d quat) { Quaternion q = new Quaternion((float)quat.x, (float)quat.y,(float)quat.z, (float)quat.w); for (Spatial actor : props) { actor.setLocalRotation(q); actor.setLocalTranslation((float)pos[0], (float)pos[1], (float)pos[2]); } } public static void updateTransform(Collection props, Vector3d pos, Quat4d quat, double scale) { Quaternion q = new Quaternion((float)quat.x, (float)quat.y,(float)quat.z, (float)quat.w); for (Spatial actor : props) { actor.setLocalRotation(q); actor.setLocalTranslation((float)pos.x, (float)pos.y, (float)pos.z); actor.setLocalScale((float)scale); } } public static void updateTransform(Collection props, double pos[], Quat4d quat, double scale) { Quaternion q = new Quaternion((float)quat.x, (float)quat.y,(float)quat.z, (float)quat.w); for (Spatial actor : props) { actor.setLocalRotation(q); actor.setLocalTranslation((float)pos[0], (float)pos[1], (float)pos[2]); actor.setLocalScale((float)scale); } } public static void updateTransform(Spatial actor, Vector3d pos, Quat4d quat, double scalex, double scaley,double scalez) { Quaternion q = new Quaternion((float)quat.x, (float)quat.y,(float)quat.z, (float)quat.w); actor.setLocalRotation(q); actor.setLocalTranslation((float)pos.x, (float)pos.y, (float)pos.z); actor.setLocalScale((float)scalex,(float)scaley,(float)scalez); } public static void updateTransform(Collection props, Vector3d pos, Quat4d quat, double scalex, double scaley,double scalez) { Quaternion q = new Quaternion((float)quat.x, (float)quat.y,(float)quat.z, (float)quat.w); for (Spatial actor : props) { actor.setLocalRotation(q); actor.setLocalTranslation((float)pos.x, (float)pos.y, (float)pos.z); actor.setLocalScale((float)scalex,(float)scaley,(float)scalez); } } }