| 194 | } |
| 195 | |
| 196 | bool objcollide(physent *d, const vec &objpos, float objrad, float objheight) // collide with custom/typeless objects |
| 197 | { |
| 198 | const float r = d->radius+objrad; |
| 199 | if(fabs(objpos.x-d->o.x)<r && fabs(objpos.y-d->o.y)<r) |
| 200 | { |
| 201 | const float maxdist = (d->eyeheight+d->aboveeye+objheight)/2.0f; |
| 202 | const float dz = d->o.z+(-d->eyeheight+d->aboveeye)/2.0f; |
| 203 | const float objz = objpos.z+objheight/2.0f; |
| 204 | return dz-objz <= maxdist && dz-objz >= -maxdist; |
| 205 | } |
| 206 | return false; |
| 207 | } |
| 208 | |
| 209 | // all collision happens here |
| 210 | // spawn is a dirty side effect used in spawning |