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

Method queueCollision

Engine/source/T3D/shapeBase.cpp:2936–2986  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2934//----------------------------------------------------------------------------
2935
2936void ShapeBase::queueCollision( SceneObject *obj, const VectorF &vec)
2937{
2938 // Add object to list of collisions.
2939 SimTime time = Sim::getCurrentTime();
2940 S32 num = obj->getId();
2941
2942 CollisionTimeout** adr = &mTimeoutList;
2943 CollisionTimeout* ptr = mTimeoutList;
2944 while (ptr) {
2945 if (ptr->objectNumber == num) {
2946 if (ptr->expireTime < time) {
2947 ptr->expireTime = time + CollisionTimeoutValue;
2948 ptr->object = obj;
2949 ptr->vector = vec;
2950 }
2951 return;
2952 }
2953 // Recover expired entries
2954 if (ptr->expireTime < time) {
2955 CollisionTimeout* cur = ptr;
2956 *adr = ptr->next;
2957 ptr = ptr->next;
2958 cur->next = sFreeTimeoutList;
2959 sFreeTimeoutList = cur;
2960 }
2961 else {
2962 adr = &ptr->next;
2963 ptr = ptr->next;
2964 }
2965 }
2966
2967 // New entry for the object
2968 if (sFreeTimeoutList != NULL)
2969 {
2970 ptr = sFreeTimeoutList;
2971 sFreeTimeoutList = ptr->next;
2972 ptr->next = NULL;
2973 }
2974 else
2975 {
2976 ptr = sTimeoutChunker.alloc();
2977 }
2978
2979 ptr->object = obj;
2980 ptr->objectNumber = obj->getId();
2981 ptr->vector = vec;
2982 ptr->expireTime = time + CollisionTimeoutValue;
2983 ptr->next = mTimeoutList;
2984
2985 mTimeoutList = ptr;
2986}
2987
2988void ShapeBase::notifyCollision()
2989{

Callers 3

collisionFilterFunction · 0.80
findCallbackMethod · 0.80
findCallbackMethod · 0.80

Calls 3

getIdMethod · 0.65
getCurrentTimeFunction · 0.50
allocMethod · 0.45

Tested by

no test coverage detected