MCPcopy Create free account
hub / github.com/bfbbdecomp/bfbb / iBoxVecDist

Function iBoxVecDist

src/SB/Core/gc/iMath3.cpp:170–421  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

168}
169
170void iBoxVecDist(const xBox* box, const xVec3* v, xIsect* isx)
171{
172 if (v->x < box->lower.x)
173 {
174 if (v->y < box->lower.y)
175 {
176 if (v->z < box->lower.z)
177 {
178 isx->norm.x = box->lower.x - v->x;
179 isx->norm.y = box->lower.y - v->y;
180 isx->norm.z = box->lower.z - v->z;
181 isx->flags = isx->flags & ~0x1F000000 | 0x00000000;
182 isx->flags |= 0x80000000;
183 }
184 else if (v->z <= box->upper.z)
185 {
186 isx->norm.x = box->lower.x - v->x;
187 isx->norm.y = box->lower.y - v->y;
188 isx->norm.z = 0.0f;
189 isx->flags = isx->flags & ~0x1F000000 | 0x01000000;
190 isx->flags |= 0x40000000;
191 }
192 else
193 {
194 isx->norm.x = box->lower.x - v->x;
195 isx->norm.y = box->lower.y - v->y;
196 isx->norm.z = box->upper.z - v->z;
197 isx->flags = isx->flags & ~0x1F000000 | 0x02000000;
198 isx->flags |= 0x80000000;
199 }
200 }
201 else if (v->y <= box->upper.y)
202 {
203 if (v->z < box->lower.z)
204 {
205 isx->norm.x = box->lower.x - v->x;
206 isx->norm.y = 0.0f;
207 isx->norm.z = box->lower.z - v->z;
208 isx->flags = isx->flags & ~0x1F000000 | 0x03000000;
209 isx->flags |= 0x40000000;
210 }
211 else if (v->z <= box->upper.z)
212 {
213 isx->norm.x = box->lower.x - v->x;
214 isx->norm.y = 0.0f;
215 isx->norm.z = 0.0f;
216 isx->flags = isx->flags & ~0x1F000000 | 0x04000000;
217 isx->flags |= 0x20000000;
218 }
219 else
220 {
221 isx->norm.x = box->lower.x - v->x;
222 isx->norm.y = 0.0f;
223 isx->norm.z = box->upper.z - v->z;
224 isx->flags = isx->flags & ~0x1F000000 | 0x05000000;
225 isx->flags |= 0x40000000;
226 }
227 }

Callers 1

iBoxIsectSphereFunction · 0.85

Calls 1

xVec3LengthFunction · 0.85

Tested by

no test coverage detected