View Javadoc

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.*; // GL constants
17  import static javax.media.opengl.GL2.*; // GL2 constants
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   * Sub renderer for Flag objects.
25   * 
26   * 
27   * @author M.P. Korstanje
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  	 * Create a new subrenderer with passed agent as source of data.
46  	 * 
47  	 * @param renderableUTAgent
48  	 *            agent used as source of data.
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 }