int collide_recursive(box *b1, box *b2, double R[3][3], double T[3], double s) { double d[3]; // temp storage for scaled dimensions of box b2. int rc; // return codes if (1) { #if TRACE1 PrintInfo(("Next collision: b1, b2, R, T, s\n"); PrintInfo(("b1=%x, b2=%x\n", b1, b2); Mprint(R); Vprint(T); PrintInfo(("%lf\n", s); #endif if (RAPID_first_contact && (RAPID_num_contacts > 0)) return RAPID_OK; // test top level RAPID_num_box_tests++; int f1; d[0] = s * b2->d[0]; d[1] = s * b2->d[1]; d[2] = s * b2->d[2]; f1 = obb_disjoint(R, T, b1->d, d); #if TRACE1 if (f1 != 0) { PrintInfo(("BOX TEST %d DISJOINT! (code %d)\n", RAPID_num_box_tests, f1); }
void Numput(unsigned int i) { char buf[20]; strnum((unsigned char *)buf, i); Mprint(buf); }
unsigned int readuuhead(T_HD *hp, unsigned char *ptr, unsigned int slen) { unsigned int mode= hp->mode; #if BCB dummy_use(slen); /* BCB の警告対策 */ #endif memclr(sizeof(T_HD)-NAMES, hp); hp->mode= mode; ptr = getword(hp->fname, ptr); if(*ptr) { ptr = getword(hp->fname, ptr); hp->perm = num7str(hp->fname); if(hp->perm >= 0 && *ptr) { ptr = getword(hp->fname, ptr); #if BCB dummy_use((unsigned int)ptr); #endif if(!(hp->mode & mLIST)) { Merr((char *)hp->fname); Merrch(' '); } else { Mprint((char *)hp->fname); Mprint(" line:"); } hp->ztype = zUUE; hp->uulength = -1; hp->fsize = 0; hp->nextline = 0; return TRUE; } } return FALSE; }
static unsigned int readhead(T_HD *hp, unsigned char *ptr, unsigned int slen) { struct headline hd; unsigned int len = (*ptr == '!') ? decline_7((unsigned char *)&hd, ptr, slen) : decline_8((unsigned char *)&hd, ptr, slen); /* 上のちょっと危ないぞ */ if(len > 60 && crc_check(0xffff, (unsigned char *)&hd, len) == 0x1d0f) { unsigned int i; unsigned char *s, *p; /* memclr( sizeof(T_HD), hp );*/ timecpy(&hp->fsize, (unsigned int *)hd.fs); /* 危ないかも WDN */ if((int)(hp->vol = hd.volume)) { timecpy(&hp->volsize, (unsigned int *)hd.vbyte); /* 危かも WDN */ hp->fsize= (hp->volsize*hd.volume > hp->fsize ? hp->fsize-(hp->volsize*(hd.volume-1)) : hp->volsize); } hp->byte= hd.line[0]+(hd.line[1]<<8); hp->tcrc= (hd.crc16[0]<<8)+hd.crc16[1]; hp->body= hp->byte-3; hp->blockbyte= hp->body*hp->body; hp->date= hp->perm= 0; if( hd.flag & 1 ) timecpy(&hp->date, (unsigned int *)hd.date); /* 危かも WDN */ hp->initflag= TRUE; hp->exec= ztype[hp->ztype= ishbit2z[hd.ishbit]].decexec; hp->block= hp->fsize/hp->blockbyte +1; hp->fsize+= 2; hp->dline= hp->fsize/hp->body+1; for( i= 0, s= hp->fname, p= hd.node ; *p != ' ' && i<8 ; i++ ) *s++= *p++; if( *hd.ext != ' ' ) for( *s++= '.', i= 0, p= hd.ext ; *p!=' '&&i<3 ; i++ ) *s++= *p++; *s= '\0'; if( !(hp->mode & mADJNAME) ) { unsigned int ic; for( ic= 0, s= hp->fname, p= hp->adjname ; *s && *s == *p && ic<8 ; s++, p++, ic++ ); if( (!*s || *s == '.' || ic == 8) && *p ) p_strcpy( hp->fname, hp->adjname ); } /* debug */ { if( !(hp->mode & mLIST) ) { Merr( (char *)hp->fname ); Merrch( '(' ); Numerr( hp->fsize-2 ); if( hd.volume ) { Merrch( '/' ); Numerr( hd.volume ); } Merrch( ')' ); } else { char buf[28]; Mprint( (char *)hp->fname ); Mputchar( ' ' ); Mputchar( '(' ); Numput( hp->fsize-2 ); if( hd.volume ) { Mputchar( '/' ); Numput( hd.volume ); } Mputchar( ')' ); Mputchar( ' ' ); DATESTR( ((hp->date & 0xfe000000)>>9)+ ((hp->date & 0x01e00000)>>13)+ ((hp->date & 0x001f0000)>>16)+ 0x27bc0000 , buf ); Mprint( buf ); Mputchar( ' ' ); TIMESTR( ((hp->date & 0x0000f800)<<5)+ ((hp->date & 0x000007e0)<<3)+ ((hp->date<<1) & 0x3e) , buf ); Mprint( buf ); Mputchar( ' ' ); Mprint( (char *)ztype[hp->ztype].name ); Mprint( " os:" ); Numput( hd.os ); #if 0 if( hd.flag & 12 ) { unsigned i,j; i= (hd.crc16[0]<<8)+hd.crc16[1]; timecpy( &j, hd.crc32 ); if( filecrc( hp->fname, i, j ) ) { Mprint( "<crcOK!>" ); } } #endif Mprint( " line:" ); } } return TRUE; }