32#import "MyOpenGLView.h" 
   36#define FREEZE_PARTICLES    0 
   51- (id) initWithPosition:(HPVector)pos
 
   54               minSpeed:(
float)minSpeed
 
   55               maxSpeed:(
float)maxSpeed
 
   57              baseColor:(GLfloat[4])baseColor
 
   61    if ((
self = [super 
init]))
 
   70        for (
unsigned i = 0; i < 
count; i++)
 
   76            color = vector_normal(color);
 
    51- (id) initWithPosition:(HPVector)pos {
…}
  
   95    return [
NSString stringWithFormat:@"ttl: %.3fs", _duration - _timePassed];
 
 
  105- (BOOL) checkCloseCollisionWith:(
Entity *)other
 
  107    if (other == [
self owner])  
return NO;
 
   105- (BOOL) checkCloseCollisionWith:(
Entity *)other {
…}
  
  123    for (i = 0; i < 
count; i++)
 
  125        particlePosition[
i] = vector_add(particlePosition[i], vector_multiply_scalar(particleVelocity[i], delta_t));
 
 
  133#define DrawQuadForView(x, y, z, sz) \ 
  135    glTexCoord2f(0.0, 1.0); glVertex3f(x-sz, y-sz, z); \ 
  136    glTexCoord2f(1.0, 1.0); glVertex3f(x+sz, y-sz, z); \ 
  137    glTexCoord2f(1.0, 0.0); glVertex3f(x+sz, y+sz, z); \ 
  138    glTexCoord2f(0.0, 0.0); glVertex3f(x-sz, y+sz, z); \ 
   133#define DrawQuadForView(x, y, z, sz) \ …  
  142- (void) drawImmediate:(
bool)immediate translucent:(
bool)translucent
 
  144    if (!translucent || [
UNIVERSE breakPatternHide])  
return;
 
  149    OOGL(glPushAttrib(GL_ENABLE_BIT | GL_COLOR_BUFFER_BIT));
 
  151    OOGL(glEnable(GL_TEXTURE_2D));
 
  152    OOGL(glEnable(GL_BLEND));
 
  153    OOGL(glBlendFunc(GL_SRC_ALPHA, GL_ONE));
 
  156    HPVector        viewPosition = [PLAYER viewpointPosition];
 
  157    HPVector        selfPosition = [
self position];
 
  171        for (i = 0; i < 
count; i++)
 
  173            glColor4fv(particleColor[i]);
 
  174            DrawQuadForView(particlePosition[i].
x, particlePosition[i].
y, particlePosition[i].z, particleSize[i]);
 
  183        float thresholdSq = distanceThreshold * distanceThreshold;
 
  186        if (distanceSq > thresholdSq)
 
  194            for (i = 0; i < 
count; i++)
 
  200                glColor4fv(particleColor[i]);
 
  214            float individuality = 3.0f * (1.0f - distanceSq / thresholdSq);
 
  215            individuality = OOClamp_0_1_f(individuality);
 
  217            for (i = 0; i < 
count; i++)
 
  223                glColor4fv(particleColor[i]);
 
   142- (void) drawImmediate:(
bool)immediate translucent:(
bool)translucent {
…}
  
  263- (id) initFragmentBurstFrom:(HPVector)fragPosition velocity:(Vector)fragVelocity size:(GLfloat)size
 
  281        for (
unsigned i = 0; i < 
count; i++)
 
 
  292+ (id) fragmentBurstFromEntity:(
Entity *)entity
 
   292+ (id) fragmentBurstFromEntity:(
Entity *)entity {
…}
  
  310    for (i = 0; i < 
count; i++)
 
  312        GLfloat du = 0.5f + (1.0f/32.0f) * (32 - i);
 
  313        particleColor[
i][3] = OOClamp_0_1_f(1.0f - timePassed / du);
 
 
  322- (id) initFragmentBurstFrom:(HPVector)fragPosition velocity:(Vector)fragVelocity size:(GLfloat)size
 
  324    float minSpeed = 1.0f + 
size * 0.5f;
 
  337        for (
unsigned i = 0; i < 
count; i++)
 
 
  347+ (id) fragmentBurstFromEntity:(
Entity *)entity
 
   347+ (id) fragmentBurstFromEntity:(
Entity *)entity {
…}
  
  353- (void) update:(
double)delta_t
 
  368    GLfloat di = 1.0f / (
count - 1);
 
  370    for (i = 0; i < 
count; i++)
 
  372        GLfloat du = duration * (0.5f + di * i);
 
  373        particleColor[
i][3] = OOClamp_0_1_f(1.0f - timePassed / du);
 
  375        particleSize[
i] = 
size;
 
   353- (void) update:(
double)delta_t {
…}
  
#define OO_ENTER_OPENGL()
 
OOMatrix OOMatrixForBillboard(HPVector bbPos, HPVector eyePos)
 
void OOGLPushModelView(void)
 
void OOGLTranslateModelView(Vector vector)
 
void OOGLMultModelView(OOMatrix matrix)
 
OOMatrix OOGLPopModelView(void)
 
@ OPENGL_STATE_ADDITIVE_BLENDING
 
#define OOVerifyOpenGLState()
 
BOOL OOCheckOpenGLErrors(NSString *format,...)
 
#define OOSetOpenGLState(STATE)
 
@ kFragmentBurstMaxParticles
 
@ kBigFragmentBurstMaxParticles
 
#define DrawQuadForView(x, y, z, sz)
 
Vector OORandomUnitVector(void)
 
void update:(OOTimeDelta delta_t)
 
GLfloat collisionRadius()
 
GLfloat cam_zero_distance
 
void setStatus:(OOEntityStatus stat)
 
void setPosition:(HPVector posn)
 
void getRed:green:blue:alpha:(float *red,[green] float *green,[blue] float *blue,[alpha] float *alpha)
 
OOColor * colorWithHue:saturation:brightness:alpha:(float hue,[saturation] float saturation,[brightness] float brightness,[alpha] float alpha)
 
OOTexture * defaultParticleTexture()
 
void update:(OOTimeDelta delta_t)
 
NSString * descriptionComponents()
 
Vector _particleVelocity[kFragmentBurstMaxParticles]
 
GLfloat _particleSize[kFragmentBurstMaxParticles]
 
GLfloat _particleColor[kFragmentBurstMaxParticles][4]
 
Vector _particlePosition[kFragmentBurstMaxParticles]