17 package com.generalrobotix.ui.view.tdview;
19 import java.util.Iterator;
20 import java.util.List;
22 import java.util.Vector;
24 import javax.media.j3d.BranchGroup;
25 import javax.media.j3d.Transform3D;
26 import javax.media.j3d.TransformGroup;
28 import org.eclipse.jface.dialogs.MessageDialog;
29 import org.eclipse.swt.widgets.Display;
50 import com.sun.j3d.utils.picking.PickCanvas;
51 import com.sun.j3d.utils.picking.PickTool;
78 DynamicsSimulator currentDynamics_;
106 PickCanvas pickCanvas =
new PickCanvas(
110 pickCanvas.setMode(PickTool.GEOMETRY_INTERSECT_INFO);
112 handler_ =
new IseBehaviorHandler(
this);
116 BranchGroup bg =
new BranchGroup();
173 Transform3D transform =
new Transform3D();
174 evt.getTransformGroup().getTransform(transform);
208 if (update && currentDynamics_ !=
null) {
210 currentDynamics_.destroy();
211 }
catch (Exception e) {
214 currentDynamics_ =
null;
217 if (currentDynamics_ ==
null) {
219 org.omg.CORBA.Object
obj =
221 DynamicsSimulatorFactory ifactory = DynamicsSimulatorFactoryHelper
223 currentDynamics_ = ifactory.create();
224 currentDynamics_._non_existent();
227 }
catch (Exception e) {
229 currentDynamics_ =
null;
232 return currentDynamics_;
247 boolean ModelModified =
false;
249 while(itr.hasNext()){
252 ModelModified =
true;
255 Display display = Display.getDefault();
256 display.syncExec(
new Runnable(){
258 MessageDialog.openInformation(
null,
"",
MessageBundle.
get(
"BehaviorManager.dialog.message.reloadModel")+
name+
") ");
263 if(ModelModified)
return false;
273 if(bodyInfo==
null)
return false;
274 currentDynamics_.registerCharacter(model.
getName(), bodyInfo);
277 IntegrateMethod m = IntegrateMethod.EULER;
278 currentDynamics_.init(0.005, m, SensorOption.ENABLE_SENSOR);
279 currentDynamics_.setGVector(
new double[] { 0.0, 0.0, 9.8});
288 currentDynamics_.setCharacterLinkData(
292 currentDynamics_.setCharacterAllLinkData(
293 model.
getName(), LinkDataType.JOINT_VALUE,
303 if (m1 ==
null || m2 ==
null)
continue;
304 Vector<GrxLinkItem> links1, links2;
305 String lname1 =
item.getStr(
"jointName1",
"");
306 if (lname1.equals(
"")){
309 links1 =
new Vector<GrxLinkItem>();
311 if (l !=
null) links1.add(l);
313 String lname2 =
item.getStr(
"jointName2",
"");
314 if (lname2.equals(
"")){
317 links2 =
new Vector<GrxLinkItem>();
319 if (l !=
null) links2.add(l);
321 for (
int j=0; j<links1.size(); j++){
322 for (
int k=0; k<links2.size(); k++){
323 currentDynamics_.registerIntersectionCheckPair(
324 m1.
getName(), links1.get(j).getName(),
325 m2.
getName(), links2.get(k).getName(),
326 links1.get(j).getDbl(
"tolerance",0.0)+links2.get(k).getDbl(
"tolerance",0.0));
331 }
catch (Exception e) {
345 behavior_.removeClickListener( listener );
351 if (currentDynamics_ ==
null)
return false;
357 currentDynamics_.setCharacterLinkData(
name, base.
getName(), LinkDataType.ABS_TRANSFORM,
data);
359 currentDynamics_.setCharacterAllLinkData(
name, LinkDataType.JOINT_VALUE,
data);
374 if (currentDynamics_.checkCollision(
true)){
375 WorldStateHolder wsH =
new WorldStateHolder();
376 currentDynamics_.getWorldState(wsH);
377 return wsH.value.collisions;
393 return currentDynamics_.checkDistance();
406 return currentDynamics_.checkIntersection(
true);
409 public void setItem(List<GrxModelItem> models, List<GrxCollisionPairItem> cols){
417 currentDynamics_.destroy();
418 }
catch (Exception e) {
421 currentDynamics_ =
null;