Files
alternativaphysics-archive/0.0.6.0/src/alternativa/physics/collision/.svn/text-base/ICollisionDetector.as.svn-base
2024-10-05 12:31:02 +01:00

92 lines
5.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package alternativa.physics.collision {
import alternativa.physics.collision.primitives.CollisionPrimitive;
import alternativa.physics.collision.types.RayIntersection;
import alternativa.physics.rigid.Body;
import alternativa.physics.rigid.Contact;
import alternativa.physics.types.Vector3;
/**
* Интерфейс детектора столкновений.
*/
public interface ICollisionDetector {
/**
* Добавляет физический примитив в коллайдер.
*
* @param primitive добавляемый примитив
* @param isStatic указывает тип примитива: статический или динамический
* @return true если примитив был успешно добавлен, иначе false
*/
function addPrimitive(primitive:CollisionPrimitive, isStatic:Boolean = true):Boolean;
/**
* Удаляет физический примитив из коллайдера.
*
* @param primitive удаляемый примитив
* @param isStatic указывает тип примитива: статический или динамический
* @return true если примитив был успшено удалён, иначе false
*/
function removePrimitive(primitive:CollisionPrimitive, isStatic:Boolean = true):Boolean;
/**
* Выполняет инициализацию детектора после обновления списка примитивов.
*/
function init():void;
/**
* Получает все столкновения в текущей конфигурации физической геометрии.
*
* @param contacts список контактов, в кторые будет записана информация о столкновении
* @return количество найденных столкновений
*/
function getAllCollisions(contacts:Vector.<Contact>):int;
/**
* Тестирует луч на пересечение с физической геометрией. Подразумевается, что детектор содержит набор примитивов, для которых выполняется проверка.
* В случае наличия нескольких пересечений, метод должен возвращать ближайшее к началу луча пересечение.
*
* @param origin начальная точка луча в мировых координатах
* @param dir направляющий вектор луча в мировых координатах. Длина вектора должна быть отлична от нуля.
* @param collisionGroup идентификатор группы
* @param maxTime параметр, задающий длину проверяемого сегмента. Единица соответствует одной длине направлящего вектора.
* @param predicate предикат, применяемый к столкновениям
* @param result переменная для записи информации о столкновении в случае положительного теста. В случае отрицательного результата сохранность начальных данных в
* переданной структуре не гарантируется.
* @return true в случае наличия пересечения, иначе false
*/
function intersectRay(origin:Vector3, dir:Vector3, collisionGroup:int, maxTime:Number, predicate:IRayCollisionPredicate, result:RayIntersection):Boolean;
/**
* Тестирует луч на пересечение со статической физической геометрией. Подразумевается, что детектор содержит набор примитивов, для которых выполняется проверка.
* В случае наличия нескольких пересечений, метод должен возвращать ближайшее к началу луча пересечение.
*
* @param origin начальная точка луча в мировых координатах
* @param dir направляющий вектор луча в мировых координатах. Длина вектора должна быть отлична от нуля.
* @param collisionGroup идентификатор группы
* @param maxTime параметр, задающий длину проверяемого сегмента. Единица соответствует одной длине направлящего вектора.
* @param predicate предикат, применяемый к столкновениям
* @param result переменная для записи информации о столкновении в случае положительного теста. В случае отрицательного результата сохранность начальных данных в
* переданной структуре не гарантируется.
* @return true в случае наличия пересечения, иначе false
*/
function intersectRayWithStatic(origin:Vector3, dir:Vector3, collisionGroup:int, maxTime:Number, predicate:IRayCollisionPredicate, result:RayIntersection):Boolean;
/**
*
* @param prim1
* @param prim2
* @param contact
* @return
*/
function collide(prim1:CollisionPrimitive, prim2:CollisionPrimitive, contact:Contact):Boolean;
/**
*
* @param prim1
* @param prim2
* @return
*/
function testCollision(prim1:CollisionPrimitive, prim2:CollisionPrimitive):Boolean;
}
}