testdll.c
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include <math.h>
00027 #include <windows.h>
00028
00029 #if __ZTC__ || __SC__
00030 #ifndef max
00031 #define max(a,b) ( ((a) > (b)) ? (a) : (b) )
00032 #endif
00033 #endif
00034
00035 #if __WATCOMC__
00036 #define PI 3.1415926
00037 #endif
00038
00039
00040
00041 #define double float
00042 typedef double vector[3];
00043
00044 typedef struct VERTEX {
00045 vector p;
00046 double x,y;
00047 } vertex;
00048
00049 typedef struct TVERTEX {
00050 double x,y;
00051 } tvertex;
00052
00053 typedef struct {
00054 long nvert;
00055 long ltime;
00056 long vmin[3];
00057 long vmax[3];
00058 long origin[3];
00059 double time;
00060 } sfxinfo;
00061
00062
00063
00064 long CALLBACK DLL_ExternalEffect(char *PrmList, sfxinfo *SFXinfo,
00065 vertex *Vlist);
00066
00067
00068
00069 int APIENTRY LibMain(HANDLE hDLL, DWORD dwReason, LPVOID lpReserved){
00070 #define BUFSIZE 80
00071 HANDLE ghMod;
00072 switch (dwReason) {
00073 case DLL_PROCESS_ATTACH: {
00074 char buf[BUFSIZE+1];
00075
00076
00077
00078
00079
00080
00081 break;
00082 }
00083 case DLL_PROCESS_DETACH:
00084
00085
00086
00087
00088 break;
00089 }
00090 return (int)TRUE;
00091 }
00092
00093 #if __SC__
00094 #pragma startaddress(LibMain)
00095 #endif
00096
00097
00098
00099
00100
00101 long CALLBACK DLL_ExternalEffect(char *PrmList, sfxinfo *SFXinfo,
00102 vertex *Vlist){
00103 double amplitude,wavelength,displacement,distance;
00104 long i;
00105 double PRMfreq, PRMwavelength;
00106 char axis, *cp;
00107 wavelength=max((double)(SFXinfo->vmax[1]-SFXinfo->vmin[1]),1.0) / 12.0;
00108 amplitude=wavelength/24;
00109 for(i=0L; i < SFXinfo->nvert; i++){
00110 distance=sqrt((double)Vlist[i].p[0]*(double)Vlist[i].p[0] +
00111 (double)Vlist[i].p[1]*(double)Vlist[i].p[1]);
00112 displacement=amplitude*cos(PI*2*(SFXinfo->time-distance/wavelength));
00113 Vlist[i].p[2] += (long)displacement;
00114 }
00115 return 1;
00116 }
00117