Main Page | Namespace List | Class Hierarchy | Compound List | File List | Compound Members | File Members

AnimatedPerlinTexture.cpp

Go to the documentation of this file.
00001 #include "AnimatedPerlinTexture.h"
00002 
00003 AnimatedPerlinTexture::AnimatedPerlinTexture() {
00004   animation_step = 1.0f;
00005   elapsed_time = 0.0f;
00006   _init_textures();
00007 }
00008 
00009 AnimatedPerlinTexture::AnimatedPerlinTexture(double as) {
00010   animation_step = as;
00011   elapsed_time = 0.0f;
00012   _init_textures();
00013 }
00014 
00015 void AnimatedPerlinTexture::_init_textures() {
00016   next = new PerlinTexture();
00017   last = new PerlinTexture();
00018   curr = new PerlinTexture();
00019   
00020   next->refresh();
00021   last->refresh();
00022 }
00023 
00024 AnimatedPerlinTexture::~AnimatedPerlinTexture() {
00025     delete next;
00026     delete last;
00027     delete curr;
00028 }
00029 
00030 void AnimatedPerlinTexture::animate(double dt) {
00031   double p1, p2;
00032   if (dt <= 0)
00033     return;
00034   elapsed_time += dt;
00035   if (elapsed_time >= animation_step) {
00036     elapsed_time -= animation_step;
00037     delete last;
00038     last = next;
00039     next = new PerlinTexture();
00040     next->refresh();
00041   }
00042   p1 = animation_step - elapsed_time;
00043   p2 = elapsed_time;
00044 
00045   unsigned char* a;
00046   unsigned char* b;
00047   unsigned char* c;
00048   a = next->get_scaled(0,0);
00049   b = curr->get_scaled(0,0);
00050   c = last->get_scaled(0,0);
00051   for (int i = 0; i < PERLINTEXTURE_BASE_SQUARE; i++) {
00052     *b = (unsigned char) (*c) * p1 + (*a) * p2;
00053     ++a;
00054     ++b;
00055     ++c;
00056   }
00057 }

Generated on Sat Jul 12 04:29:20 2003 for glPirates by doxygen 1.3.2