Revision 672 org.gvsig.animation3d/trunk/org.gvsig.animation3d/org.gvsig.animation3d.swing/org.gvsig.animation3d.swing.impl/src/main/java/org/gvsig/animation3d/swing/impl/DefaultAnimation3DSwingManager.java
DefaultAnimation3DSwingManager.java | ||
---|---|---|
3 | 3 |
import java.util.ArrayList; |
4 | 4 |
import java.util.Collection; |
5 | 5 |
import java.util.List; |
6 |
import java.util.Map; |
|
6 | 7 |
|
7 | 8 |
import org.gvsig.animation3d.swing.api.Animation3D; |
9 |
import org.gvsig.animation3d.swing.api.Animation3DPanel; |
|
8 | 10 |
import org.gvsig.animation3d.swing.api.Animation3DSwingManager; |
9 | 11 |
import org.gvsig.animation3d.swing.api.Frame3D; |
12 |
import org.gvsig.animation3d.swing.api.Frame3DCreationException; |
|
13 |
import org.gvsig.fmap.geom.Geometry.SUBTYPES; |
|
14 |
import org.gvsig.fmap.geom.GeometryLocator; |
|
15 |
import org.gvsig.fmap.geom.exception.CreateGeometryException; |
|
10 | 16 |
import org.gvsig.fmap.geom.primitive.Point; |
11 | 17 |
import org.gvsig.fmap.mapcontext.layers.ExtendedPropertiesSupport; |
12 | 18 |
import org.gvsig.tools.persistence.impl.DelegatedList; |
19 |
import org.gvsig.view3d.swing.api.MapControl3D; |
|
20 |
import org.gvsig.view3d.swing.api.ViewPort3D; |
|
13 | 21 |
|
14 | 22 |
/** |
15 | 23 |
* @author <a href="mailto:lmarques@disid.com">Lluis Marques</a> |
... | ... | |
43 | 51 |
} |
44 | 52 |
|
45 | 53 |
@Override |
54 |
public Frame3D getFrame3D(String name, MapControl3D mapControl3D) |
|
55 |
throws Frame3DCreationException { |
|
56 |
|
|
57 |
ViewPort3D viewport = mapControl3D.getViewPort(); |
|
58 |
double heading = viewport.getHeading(); |
|
59 |
double pitch = viewport.getPitch(); |
|
60 |
double elevation = viewport.getElevation(); |
|
61 |
double zoom = viewport.getZoom(); |
|
62 |
|
|
63 |
Point position = null; |
|
64 |
double x = viewport.getCenterPosition().getX(); |
|
65 |
double y = viewport.getCenterPosition().getY(); |
|
66 |
try { |
|
67 |
position = GeometryLocator.getGeometryManager().createPoint(x, y, SUBTYPES.GEOM2D); |
|
68 |
} catch (CreateGeometryException e) { |
|
69 |
String msg = |
|
70 |
String.format("Can not create frame position [longitude: %1s latitude: %2s]", |
|
71 |
new Object[] { x, y }); |
|
72 |
throw new Frame3DCreationException(msg, e); |
|
73 |
} |
|
74 |
|
|
75 |
return createFrame3D(name, heading, pitch, elevation, position, zoom); |
|
76 |
} |
|
77 |
|
|
78 |
@Override |
|
46 | 79 |
public Frame3D createFrame3D(String name, double heading, double pitch, double elevation, |
47 | 80 |
Point position, double zoom) { |
48 | 81 |
return new DefaultFrame3D(name, heading, pitch, elevation, position, zoom); |
... | ... | |
54 | 87 |
return new DefaultAnimation3D(name, sphericalFrames, flatFrames); |
55 | 88 |
} |
56 | 89 |
|
90 |
@Override |
|
91 |
public Animation3DPanel createAnimationManager(Map<String, ExtendedPropertiesSupport> properties) { |
|
92 |
return new DefaultAnimation3DPanelController(properties); |
|
93 |
} |
|
94 |
|
|
95 |
// @Override |
|
96 |
// public void goTo(Frame3D frame) { |
|
97 |
// |
|
98 |
// Globe globe = this.getWwd().getView().getGlobe(); |
|
99 |
// OrbitView view = (OrbitView) this.getWwd().getView(); |
|
100 |
// view.stopAnimations(); |
|
101 |
// |
|
102 |
// double longitude = frame.getPosition().getX(); |
|
103 |
// double latitude = frame.getPosition().getY(); |
|
104 |
// Position lookFromPos = |
|
105 |
// new Position(LatLon.fromDegrees(latitude, longitude), globe.getElevation( |
|
106 |
// Angle.fromDegreesLatitude(latitude), |
|
107 |
// Angle.fromDegreesLongitude(longitude)) |
|
108 |
// + frame.getElevation()); |
|
109 |
// |
|
110 |
// final long MIN_LENGTH_MILLIS = 4000; |
|
111 |
// final long MAX_LENGTH_MILLIS = 14000; |
|
112 |
// long timeToMove = |
|
113 |
// AnimationSupport.getScaledTimeMillisecs(view.getEyePosition(), |
|
114 |
// lookFromPos, |
|
115 |
// MIN_LENGTH_MILLIS, MAX_LENGTH_MILLIS); |
|
116 |
// |
|
117 |
// Animator animator = |
|
118 |
// FlyToOrbitViewAnimator.createFlyToOrbitViewAnimator(view, |
|
119 |
// view.getCenterPosition(), |
|
120 |
// lookFromPos, view.getHeading(), Angle.fromDegrees(frame.getHeading()), |
|
121 |
// view.getPitch(), Angle.fromDegrees(frame.getPitch()), view.getZoom(), |
|
122 |
// frame.getZoom(), timeToMove, WorldWind.ABSOLUTE); |
|
123 |
// view.addAnimator(animator); |
|
124 |
// view.firePropertyChange(AVKey.VIEW, null, this.getWwd().getView()); |
|
125 |
// } |
|
126 |
// |
|
127 |
// @Override |
|
128 |
// public void goTo(List<Frame3D> frames) { |
|
129 |
// View view = this.getWwd().getView(); |
|
130 |
// view.stopAnimations(); |
|
131 |
// |
|
132 |
// Animator animator = null; |
|
133 |
// if (view instanceof OrbitView) { |
|
134 |
// animator = new MultipleFlyToOrbitViewAnimator((OrbitView) view, frames); |
|
135 |
// } |
|
136 |
// |
|
137 |
// view.addAnimator(animator); |
|
138 |
// view.firePropertyChange(AVKey.VIEW, null, this.getWwd().getView()); |
|
139 |
// } |
|
57 | 140 |
} |
Also available in: Unified diff