#include "EntityBase.h" #include namespace Engine { void EntityVisualState::Draw () { if (mBaseType == EntityBaseTypeActor) { int i, segments; segments = 20; double x, z, rad, drad; drad = (M_PI * 2) / segments; glBegin (GL_TRIANGLE_FAN); glVertex3f (0., 0., 0.); for (i = 0; i <= segments; i++) { rad = drad * i; sincos (rad, &z, &x); glVertex3f (x * mRadius, 0., -z * mRadius); } glEnd (); glDisable (GL_DEPTH_TEST); glColor3f (0.8, 0., 0.2); glBegin (GL_TRIANGLES); glVertex3f (mRadius, 0., 0.); glVertex3f (0., 0., -mRadius * 0.3); glVertex3f (0., 0., mRadius * 0.3); glEnd (); glEnable (GL_DEPTH_TEST); return; } else if (mBaseType == EntityBaseTypeBlock) { glBegin (GL_QUADS); glVertex3f (-0.5, 0., 0.5); glVertex3f (0.5, 0., 0.5); glVertex3f (0.5, 0., -0.5); glVertex3f (-0.5, 0., -0.5); glEnd (); } else if (mBaseType == EntityBaseTypeParticle) { int i, segments; segments = 20; double x, z, rad, drad; drad = (M_PI * 2) / segments; glDisable (GL_DEPTH_TEST); glColor3f (0., 0.8, 0.1); glBegin (GL_TRIANGLE_FAN); glVertex3f (0., 0., 0.); for (i = 0; i <= segments; i++) { rad = drad * i; sincos (rad, &z, &x); glVertex3f (x * mRadius, 0., -z * mRadius); } glEnd (); glColor3f (0.8, 0., 0.2); glBegin (GL_TRIANGLES); glVertex3f (mRadius, 0., 0.); glVertex3f (0., 0., -mRadius * 0.3); glVertex3f (0., 0., mRadius * 0.3); glEnd (); glEnable (GL_DEPTH_TEST); return; } } }