MCPcopy Create free account
hub / github.com/OGSR/OGSR-Engine / IsFront

Method IsFront

ogsr_engine/xrGame/CarDoors.cpp:367–389  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

365
366static xr_vector<Fmatrix> bones_bind_forms;
367bool CCar::SDoor::IsFront(const Fvector& pos, const Fvector& dir)
368{
369 IKinematics* K = PKinematics(pcar->Visual());
370 // CBoneInstance bi=K->LL_GetBoneInstance(bone_id);
371 // CBoneData& bd=K->LL_GetData(bone_id);
372 K->LL_GetBindTransform(bones_bind_forms);
373 // Fobb bb=bd.obb;
374 Fvector tdir;
375 tdir.set(pcar->XFORM().i);
376 if (tdir.dotproduct(dir) < 0.f)
377 tdir.invert();
378 Fmatrix pf;
379 pf.mul(pcar->XFORM(), bones_bind_forms[bone_id]);
380 Fvector dif, dif1;
381 dif.sub(pf.c, pos);
382 pcar->Center(dif1);
383 Fvector c_to_d;
384 c_to_d.sub(pf.c, dif1);
385
386 dif1.sub(pos);
387 // dif.normalize_safe();
388 return (dif1.dotproduct(tdir) > dif.dotproduct(tdir) && abs(c_to_d.dotproduct(tdir)) < dif1.dotproduct(tdir));
389}
390bool CCar::SDoor::IsInArea(const Fvector& pos, const Fvector& dir)
391{
392 if (!joint)

Callers 1

UseMethod · 0.80

Calls 9

PKinematicsFunction · 0.85
VisualMethod · 0.80
LL_GetBindTransformMethod · 0.80
setMethod · 0.45
dotproductMethod · 0.45
invertMethod · 0.45
mulMethod · 0.45
subMethod · 0.45
CenterMethod · 0.45

Tested by

no test coverage detected