8 extern void Visualiser_Initialise(void);
9 extern void Visualiser_Update(void);
10 extern void Video_SetName(const char *Format, ...);
12 int main(int argc, char *argv[]);
17 int giVectorComponents;
20 tParticle *gpParticles;
21 unsigned int giNumParticles;
24 int main(int argc, char *argv[])
33 gVideoFile = fopen(argv[1], "rb");
34 len = fread(&giLargeIntSize, 2, 1, gVideoFile);
35 len = fread(&giVectorComponents, 2, 1, gVideoFile);
36 len = fread(&giNumParticles, 4, 1, gVideoFile);
37 printf("Sizeof LI = %i, VectC = %i\n", giLargeIntSize, giVectorComponents);
38 printf("%i Particles\n", giNumParticles);
40 fseek(gVideoFile, 0, SEEK_END);
41 size = ftell(gVideoFile);
42 giNumFrames = (size-8)/(giNumParticles*giLargeIntSize*(giVectorComponents+2));
43 printf("%i Itterations\n", giNumFrames);
44 fseek(gVideoFile, 8, SEEK_SET);
46 gpParticles = malloc( sizeof(tParticle)*giNumParticles );
47 printf("gpParticles = %p\n", gpParticles);
49 Visualiser_Initialise();
58 if(frame < giNumFrames-1) {
72 while(SDL_PollEvent(&e))
76 case SDL_QUIT: return 0;
78 switch(e.key.keysym.sym)
80 case SDLK_ESCAPE: return 0;
88 if(frame < giNumFrames-1) {
94 case SDLK_p: bPlayback = !bPlayback; break;
95 case SDLK_r: bRepeat = !bRepeat; break;
97 case SDLK_KP_PLUS: giFramerate ++; break;
98 case SDLK_KP_MINUS: giFramerate --; break;
108 SDL_Delay(1000/giFramerate);
117 fseek(gVideoFile, 8+ID*(giNumParticles*giLargeIntSize*(giVectorComponents+2)), SEEK_SET);
119 for( i = 0; i < giNumParticles; i++ )
121 len = fread(&gpParticles[i].Location, giLargeIntSize*giVectorComponents, 1, gVideoFile);
122 len = fread(&gpParticles[i].Mass, giLargeIntSize, 1, gVideoFile);
123 len = fread(&gpParticles[i].Charge, giLargeIntSize, 1, gVideoFile);
125 Video_SetName("Timestamp %i (out of %i) (%i FPS)", ID+1, giNumFrames, giFramerate);