void Water::VectorWave(Point3 &p, Point3 &n) { int i; float f,pd; Point3 d,v; n.x = n.y = n.z = 0.0f; for (i = 0; i < count; i++) { WaveDesc &wd = waves[i]; pd = wd.period; v.x = (p.x-wd.cent[0])/pd; v.y = (p.y-wd.cent[1])/pd; v.z = (p.z-wd.cent[2])/pd; vwave(v,wd.rate,d); f = pd/maxperiod; n += f*d; } f = amp/((float)count); n *= f; }
/* Routine to process a transitive verb */ trverb() { switch(verb){ case CALM: case WALK: case QUIT: case SCORE: case FOO: case BRIEF: case SUSPEND: case HOURS: case LOG: actspk(verb); break; case TAKE: vtake(); break; case DROP: vdrop(); break; case OPEN: case LOCK: vopen(); break; case SAY: vsay(); break; case NOTHING: rspeak(54); break; case ON: von(); break; case OFF: voff(); break; case WAVE: vwave(); break; case KILL: vkill(); break; case POUR: vpour(); break; case EAT: veat(); break; case DRINK: vdrink(); break; case RUB: if (object != LAMP) rspeak(76); else actspk(RUB); break; case THROW: vthrow(); break; case FEED: vfeed(); break; case FIND: case INVENTORY: vfind(); break; case FILL: vfill(); break; case READ: vread(); break; case BLAST: vblast(); break; case BREAK: vbreak(); break; case WAKE: vwake(); break; default: printf("This verb is not implemented yet.\n"); } }