MCPcopy Create free account
hub / github.com/TorqueGameEngines/Torque3D / rolloverRayCast

Method rolloverRayCast

Engine/source/afx/arcaneFX.cpp:460–499  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

458}
459
460S32 arcaneFX::rolloverRayCast(Point3F start, Point3F end, U32 mask)
461{
462 sIsFreeTargeting = false;
463#if !defined(AFX_CAP_ROLLOVER_RAYCASTS)
464 return -1;
465#else
466 GameConnection* conn = GameConnection::getConnectionToServer();
467 SceneObject* ctrl_obj = NULL;
468
469 if (!arcaneFX::sClickToTargetSelf && conn != NULL)
470 ctrl_obj = conn->getControlObject();
471
472 if (ctrl_obj)
473 ctrl_obj->disableCollision();
474
475 SceneObject* rollover_obj = (conn) ? conn->getRolloverObj() : 0;
476 SceneObject* picked_obj = 0;
477
478 RayInfo hit_info;
479 if (gClientContainer.castRay(start, end, mask, &hit_info))
480 picked_obj = dynamic_cast<SceneObject*>(hit_info.object);
481
482 if (ctrl_obj)
483 ctrl_obj->enableCollision();
484
485 if (picked_obj != rollover_obj)
486 {
487 if (rollover_obj)
488 rollover_obj->setSelectionFlags(rollover_obj->getSelectionFlags() & ~SceneObject::PRE_SELECTED);
489 if (picked_obj)
490 picked_obj->setSelectionFlags(picked_obj->getSelectionFlags() | SceneObject::PRE_SELECTED);
491 rollover_obj = picked_obj;
492
493 if (conn)
494 conn->setRolloverObj(rollover_obj);
495 }
496
497 return (picked_obj) ? picked_obj->getId() : -1;
498#endif
499}
500
501bool arcaneFX::freeTargetingRayCast(Point3F start, Point3F end, U32 mask)
502{

Callers

nothing calls this directly

Calls 9

getRolloverObjMethod · 0.80
getSelectionFlagsMethod · 0.80
setRolloverObjMethod · 0.80
getIdMethod · 0.65
getControlObjectMethod · 0.45
disableCollisionMethod · 0.45
castRayMethod · 0.45
enableCollisionMethod · 0.45
setSelectionFlagsMethod · 0.45

Tested by

no test coverage detected