Revision 684 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 | ||
---|---|---|
1 | 1 |
package org.gvsig.animation3d.swing.impl; |
2 | 2 |
|
3 |
import gov.nasa.worldwind.View; |
|
4 |
import gov.nasa.worldwind.WorldWind; |
|
5 |
import gov.nasa.worldwind.animation.AnimationSupport; |
|
6 |
import gov.nasa.worldwind.avlist.AVKey; |
|
7 |
import gov.nasa.worldwind.awt.WorldWindowGLJPanel; |
|
8 |
import gov.nasa.worldwind.geom.Angle; |
|
9 |
import gov.nasa.worldwind.geom.LatLon; |
|
10 |
import gov.nasa.worldwind.geom.Position; |
|
11 |
import gov.nasa.worldwind.view.orbit.FlyToOrbitViewAnimator; |
|
12 |
import gov.nasa.worldwind.view.orbit.OrbitView; |
|
13 |
|
|
3 | 14 |
import java.util.ArrayList; |
4 | 15 |
import java.util.Collection; |
5 | 16 |
import java.util.List; |
... | ... | |
8 | 19 |
import org.gvsig.animation3d.swing.api.Animation3D; |
9 | 20 |
import org.gvsig.animation3d.swing.api.Animation3DPanel; |
10 | 21 |
import org.gvsig.animation3d.swing.api.Animation3DSwingManager; |
22 |
import org.gvsig.animation3d.swing.api.Animator; |
|
11 | 23 |
import org.gvsig.animation3d.swing.api.Frame3D; |
12 | 24 |
import org.gvsig.animation3d.swing.api.Frame3DCreationException; |
13 | 25 |
import org.gvsig.fmap.geom.Geometry.SUBTYPES; |
... | ... | |
17 | 29 |
import org.gvsig.fmap.mapcontext.layers.ExtendedPropertiesSupport; |
18 | 30 |
import org.gvsig.tools.persistence.impl.DelegatedList; |
19 | 31 |
import org.gvsig.view3d.swing.api.MapControl3D; |
20 |
import org.gvsig.view3d.swing.api.ViewPort3D; |
|
21 | 32 |
|
22 | 33 |
/** |
23 | 34 |
* @author <a href="mailto:lmarques@disid.com">Lluis Marques</a> |
... | ... | |
51 | 62 |
} |
52 | 63 |
|
53 | 64 |
@Override |
54 |
public Frame3D getFrame3D(String name, MapControl3D mapControl3D)
|
|
65 |
public Frame3D createFrame3D(String name, MapControl3D mapControl3D)
|
|
55 | 66 |
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 | 67 |
|
68 |
OrbitView orbitView = getOrbitView(mapControl3D); |
|
69 |
double heading = orbitView.getHeading().getDegrees(); |
|
70 |
double pitch = orbitView.getPitch().getDegrees(); |
|
71 |
double elevation = orbitView.getCenterPosition().getElevation(); |
|
72 |
double zoom = orbitView.getZoom(); |
|
73 |
|
|
63 | 74 |
Point position = null; |
64 |
double x = viewport.getCenterPosition().getX();
|
|
65 |
double y = viewport.getCenterPosition().getY();
|
|
75 |
double x = orbitView.getCenterPosition().getLongitude().getDegrees();
|
|
76 |
double y = orbitView.getCenterPosition().getLatitude().getDegrees();
|
|
66 | 77 |
try { |
67 | 78 |
position = GeometryLocator.getGeometryManager().createPoint(x, y, SUBTYPES.GEOM2D); |
68 | 79 |
} catch (CreateGeometryException e) { |
... | ... | |
75 | 86 |
return createFrame3D(name, heading, pitch, elevation, position, zoom); |
76 | 87 |
} |
77 | 88 |
|
78 |
@Override |
|
79 | 89 |
public Frame3D createFrame3D(String name, double heading, double pitch, double elevation, |
80 | 90 |
Point position, double zoom) { |
81 | 91 |
return new DefaultFrame3D(name, heading, pitch, elevation, position, zoom); |
... | ... | |
88 | 98 |
} |
89 | 99 |
|
90 | 100 |
@Override |
91 |
public Animation3DPanel createAnimationManager(Map<String, ExtendedPropertiesSupport> properties) {
|
|
101 |
public Animation3DPanel createAnimationPanel(Map<String, ExtendedPropertiesSupport> properties) {
|
|
92 | 102 |
return new DefaultAnimation3DPanelController(properties); |
93 | 103 |
} |
94 | 104 |
|
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 |
// } |
|
105 |
@Override |
|
106 |
public Animator createGoToAnimator(MapControl3D mapControl3D, Frame3D frame, |
|
107 |
final long minMillis, final long maxMillis) { |
|
108 |
|
|
109 |
OrbitView orbitView = getOrbitView(mapControl3D); |
|
110 |
double longitude = frame.getPosition().getX(); |
|
111 |
double latitude = frame.getPosition().getY(); |
|
112 |
Position endPos = |
|
113 |
new Position(LatLon.fromDegrees(latitude, longitude), frame.getElevation()); |
|
114 |
|
|
115 |
Position beginPos = |
|
116 |
Position.fromDegrees(orbitView.getCenterPosition().getLatitude().getDegrees(), |
|
117 |
orbitView.getCenterPosition().getLongitude().getDegrees(), orbitView |
|
118 |
.getCenterPosition().getElevation()); |
|
119 |
long timeToMove = |
|
120 |
AnimationSupport.getScaledTimeMillisecs(beginPos, endPos, minMillis, maxMillis); |
|
121 |
|
|
122 |
gov.nasa.worldwind.animation.Animator animator = |
|
123 |
FlyToOrbitViewAnimator.createFlyToOrbitViewAnimator(orbitView, beginPos, endPos, |
|
124 |
orbitView.getHeading(), Angle.fromDegrees(frame.getHeading()), |
|
125 |
orbitView.getPitch(), Angle.fromDegrees(frame.getPitch()), orbitView.getZoom(), |
|
126 |
frame.getZoom(), timeToMove, WorldWind.ABSOLUTE); |
|
127 |
return new DefaultAnimatorWrapper(animator); |
|
128 |
} |
|
129 |
|
|
130 |
@Override |
|
131 |
public Animator createGoToAnimator(MapControl3D mapControl3D, List<Frame3D> frames, |
|
132 |
long minMillis, long maxMillis) { |
|
133 |
OrbitView orbitView = getOrbitView(mapControl3D); |
|
134 |
gov.nasa.worldwind.animation.Animator animator = |
|
135 |
new MultipleFlyToOrbitViewAnimator(orbitView, frames, minMillis, maxMillis); |
|
136 |
return new DefaultAnimatorWrapper(animator); |
|
137 |
} |
|
138 |
|
|
139 |
@Override |
|
140 |
public void addAnimator(MapControl3D mapControl3D, Animator animator) { |
|
141 |
OrbitView orbitView = getOrbitView(mapControl3D); |
|
142 |
orbitView.addAnimator(new DefaultWWAnimationWrapper(animator)); |
|
143 |
orbitView.firePropertyChange(AVKey.VIEW, null, orbitView); |
|
144 |
} |
|
145 |
|
|
146 |
@Override |
|
147 |
public boolean isAnimating(MapControl3D mapControl3D) { |
|
148 |
OrbitView orbitView = getOrbitView(mapControl3D); |
|
149 |
return orbitView.isAnimating(); |
|
150 |
} |
|
151 |
|
|
152 |
@Override |
|
153 |
public void stopAnimations(MapControl3D mapControl3D) { |
|
154 |
OrbitView orbitView = getOrbitView(mapControl3D); |
|
155 |
orbitView.stopAnimations(); |
|
156 |
} |
|
157 |
|
|
158 |
private OrbitView getOrbitView(MapControl3D mapControl3D) { |
|
159 |
Object underLineComponent = mapControl3D.getUnderLineComponent(); |
|
160 |
if (underLineComponent instanceof WorldWindowGLJPanel) { |
|
161 |
WorldWindowGLJPanel wwd = (WorldWindowGLJPanel) underLineComponent; |
|
162 |
View view = wwd.getView(); |
|
163 |
if (view instanceof OrbitView) { |
|
164 |
return (OrbitView) view; |
|
165 |
} |
|
166 |
} |
|
167 |
throw new IllegalArgumentException( |
|
168 |
"Can not get WorldWind view from under line MapControl3D component"); |
|
169 |
} |
|
140 | 170 |
} |
Also available in: Unified diff