1 package nl.tudelft.goal.ut2004.visualizer.timeline.map;
2
3 import java.awt.Color;
4 import java.util.LinkedList;
5 import java.util.List;
6 import java.util.logging.Level;
7 import java.util.logging.Logger;
8
9 import javax.media.opengl.GL;
10 import javax.media.opengl.GL2;
11 import javax.media.opengl.glu.GLU;
12 import javax.media.opengl.glu.GLUquadric;
13
14 import nl.tudelft.goal.ut2004.visualizer.map.BlendTriangle;
15
16 import static javax.media.opengl.GL.*;
17 import static javax.media.opengl.GL2.*;
18 import com.jogamp.opengl.util.gl2.GLUT;
19
20 import cz.cuni.amis.pogamut.base3d.worldview.object.Location;
21 import cz.cuni.amis.pogamut.unreal.communication.worldview.map.IUnrealWaypoint;
22
23
24
25
26
27
28
29
30 public class UTWaypointSubGLRenderer implements ISubGLRenderer<IRenderableWorldObject> {
31
32 private Logger logger;
33 private GLU glu;
34 private GLUT glut;
35 private GLUquadric quadratic;
36
37 private final IRenderableWorldObject waypoint;
38 public final double NAVPOINT_OUTER_RADIUS = 30;
39 public final double NAVPOINT_INNER_RADIUS = 0;
40 public final int NAVPOINT_SLICES = 32;
41 public final int NAVPOINT_RINGS = 1;
42 public final double NAVPOINT_FLOAT = 1;
43
44
45
46
47
48
49
50 public UTWaypointSubGLRenderer(IRenderableWorldObject waypoint) {
51 this.waypoint = waypoint;
52 }
53
54 @Override
55 public void prepare(GL gl) {
56 glu = new GLU();
57 glut = new GLUT();
58 quadratic = glu.gluNewQuadric();
59
60 logger = Logger.getLogger("UTFlagRenderer");
61 logger.setLevel(Level.INFO);
62 }
63
64 @Override
65 public void render(GL gla) {
66 GL2 gl = gla.getGL2();
67
68 try {
69 Location waypointLocation = waypoint.getLocation();
70 if (waypointLocation == null) {
71 return;
72 }
73 Location center = new Location(waypointLocation.x, waypointLocation.y, waypointLocation.z);
74
75 GlColor color = new GlColor(waypoint.getColor());
76
77 gl.glLoadName(waypoint.getGLName());
78
79 renderFlag(gl, color, center);
80
81 } catch (RuntimeException e) {
82 e.printStackTrace();
83 }
84
85 }
86
87 private void renderFlag(GL gla, GlColor color, Location position) {
88 GL2 gl = gla.getGL2();
89
90 gl.glPushMatrix();
91 {
92 gl.glTranslated(position.x, position.y, position.z + NAVPOINT_FLOAT);
93 gl.glColor4d(color.r, color.g, color.b, color.a);
94 glu.gluDisk(quadratic, NAVPOINT_INNER_RADIUS, NAVPOINT_OUTER_RADIUS, NAVPOINT_SLICES, NAVPOINT_RINGS);
95
96 }
97 gl.glPopMatrix();
98 }
99
100 @Override
101 public IRenderableWorldObject getObject() {
102 return waypoint;
103 }
104
105 @Override
106 public List<BlendTriangle> getBlendedTris() {
107 return new LinkedList<BlendTriangle>();
108 }
109
110 }