Пример #1
0
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();

}
Пример #2
0
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;
}
Пример #3
0
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;

}