Variant Physics2DDirectSpaceState::_cast_motion(const RID& p_shape, const Matrix32& p_xform,const Vector2& p_motion,const Vector<RID>& p_exclude,uint32_t p_user_mask) { #if 0 Set<RID> exclude; for(int i=0;i<p_exclude.size();i++) exclude.insert(p_exclude[i]); bool result = cast_motion(p_shape,p_xform,p_motion,0,mcc,exclude,p_user_mask); if (!result) return Variant(); Dictionary d(true); d["point"]=mcc.point; d["normal"]=mcc.normal; d["rid"]=mcc.rid; d["collider_id"]=mcc.collider_id; d["collider"]=mcc.collider; d["shape"]=mcc.shape; return d; #endif return Variant(); }
Array Physics2DDirectSpaceState::_cast_motion(const Ref<Physics2DShapeQueryParameters> &p_shape_query) { float closest_safe, closest_unsafe; bool res = cast_motion(p_shape_query->shape, p_shape_query->transform, p_shape_query->motion, p_shape_query->margin, closest_safe, closest_unsafe, p_shape_query->exclude, p_shape_query->collision_layer, p_shape_query->object_type_mask); if (!res) return Array(); Array ret; ret.resize(2); ret[0] = closest_safe; ret[1] = closest_unsafe; return ret; }
Array PhysicsDirectSpaceState::_cast_motion(const Ref<PhysicsShapeQueryParameters> &psq,const Vector3& p_motion){ float closest_safe,closest_unsafe; bool res = cast_motion(psq->shape,psq->transform,p_motion,psq->margin,closest_safe,closest_unsafe,psq->exclude,psq->layer_mask,psq->object_type_mask); if (!res) return Array(); Array ret(true); ret.resize(2); ret[0]=closest_safe; ret[0]=closest_unsafe; return ret; }