love-typescript-definitions
Version:
Write LÖVE 2D projects with TypeScript
319 lines (292 loc) • 12.3 kB
TypeScript
declare module "love.physics" {
import { Type } from "love";
/**
* Fixtures attach shapes to bodies.
* @link [Fixture](https://love2d.org/wiki/Fixture)
*/
interface Fixture extends Type<"Fixture"> {
/**
* Destroys the fixture
*
* @link [Fixture:destroy](https://love2d.org/wiki/Fixture:destroy)
*/
destroy(): void;
/**
* Returns the body to which the fixture is attached.
*
* @return body, The parent body.
* @link [Fixture:getBody](https://love2d.org/wiki/Fixture:getBody)
*/
getBody(): Body;
/**
* Returns the points of the fixture bounding box. In case the fixture has
* multiple children a 1-based index can be specified. For example, a fixture will
* have multiple children with a chain shape.
*
* @param index A bounding box of the fixture.
* @return topLeftX, The x position of the top-left point.
* @return topLeftY, The y position of the top-left point.
* @return bottomRightX, The x position of the bottom-right point.
* @return bottomRightY, The y position of the bottom-right point.
* @link [Fixture:getBoundingBox](https://love2d.org/wiki/Fixture:getBoundingBox)
*/
getBoundingBox(
index?: number,
): LuaMultiReturn<
[
topLeftX: number,
topLeftY: number,
bottomRightX: number,
bottomRightY: number,
]
>;
/**
* Returns the categories the fixture belongs to.
*
* @return categories, The categories this fixture belongs to.
* @link [Fixture:getCategory](https://love2d.org/wiki/Fixture:getCategory)
*/
getCategory(): LuaMultiReturn<number[]>;
/**
* Returns the density of the fixture.
*
* @return density, The fixture density in kilograms per square meter.
* @link [Fixture:getDensity](https://love2d.org/wiki/Fixture:getDensity)
*/
getDensity(): number;
/**
* Returns the filter data of the fixture. Categories and masks are encoded as the
* bits of a 16-bit integer.
*
* @return categories, The categories as an integer from 0 to 65535.
* @return mask, The mask as an integer from 0 to 65535.
* @return group, The group as an integer from -32768 to 32767.
* @link [Fixture:getFilterData](https://love2d.org/wiki/Fixture:getFilterData)
*/
getFilterData(): LuaMultiReturn<
[categories: number, mask: number, group: number]
>;
/**
* Returns the friction of the fixture.
*
* @return friction, The fixture friction.
* @link [Fixture:getFriction](https://love2d.org/wiki/Fixture:getFriction)
*/
getFriction(): number;
/**
* Returns the group the fixture belongs to. Fixtures with the same group will
* always collide if the group is positive or never collide if it's negative. The
* group zero means no group.
*
* The groups range from -32768 to 32767.
*
* @return group, The group of the fixture.
* @link [Fixture:getGroupIndex](https://love2d.org/wiki/Fixture:getGroupIndex)
*/
getGroupIndex(): number;
/**
* Returns the category mask of the fixture.
*
* @return categories, The categories the mask of this fixture belongs to.
* @link [Fixture:getMask](https://love2d.org/wiki/Fixture:getMask)
*/
getMask(): LuaMultiReturn<number[]>;
/**
* Returns the mass, its center and the rotational inertia.
*
* @return x, The x position of the center of mass.
* @return y, The y position of the center of mass.
* @return mass, The mass of the fixture.
* @return inertia, The rotational inertia.
* @link [Fixture:getMassData](https://love2d.org/wiki/Fixture:getMassData)
*/
getMassData(): LuaMultiReturn<
[x: number, y: number, mass: number, inertia: number]
>;
/**
* Returns the restitution of the fixture.
*
* @return restitution, The fixture restitution.
* @link [Fixture:getRestitution](https://love2d.org/wiki/Fixture:getRestitution)
*/
getRestitution(): number;
/**
* Returns the shape of the fixture. This shape is a reference to the actual data
* used in the simulation. It's possible to change its values between timesteps.
*
* Do not call any functions on this shape after the parent fixture has been
* destroyed. This shape will point to an invalid memory address and likely cause
* crashes if you interact further with it.
*
* @return shape, The fixture's shape.
* @link [Fixture:getShape](https://love2d.org/wiki/Fixture:getShape)
*/
getShape(): Shape;
/**
* Returns the Lua value associated with this fixture.
*
* Use this function in one thread only.
*
* @return value, The Lua value associated with the fixture.
* @link [Fixture:getUserData](https://love2d.org/wiki/Fixture:getUserData)
*/
getUserData(): any;
/**
* Gets whether the Fixture is destroyed. Destroyed fixtures cannot be used.
*
* @return destroyed, Whether the Fixture is destroyed.
* @link [Fixture:isDestroyed](https://love2d.org/wiki/Fixture:isDestroyed)
*/
isDestroyed(): boolean;
/**
* Returns whether the fixture is a sensor.
*
* @return sensor, If the fixture is a sensor.
* @link [Fixture:isSensor](https://love2d.org/wiki/Fixture:isSensor)
*/
isSensor(): boolean;
/**
* Casts a ray against the shape of the fixture and returns the surface normal
* vector and the line position where the ray hit. If the ray missed the shape,
* _nil/undefined_ will be returned.
*
* The ray starts on the first point of the input line and goes towards the second
* point of the line. The fourth argument is the maximum distance the ray is going
* to travel as a scale factor of the input line length.
*
* The childIndex parameter is used to specify which child of a parent shape, such
* as a ChainShape, will be ray casted. For ChainShapes, the index of 1 is the
* first edge on the chain. Ray casting a parent shape will only test the child
* specified so if you want to test every shape of the parent, you must loop
* through all of its children.
*
* The world position of the impact can be calculated by multiplying the line
* vector with the third return value and adding it to the line starting point.
*
* hitx, hity = x1 + (x2 - x1) * fraction, y1 + (y2 - y1) * fraction
*
* @param x1 The x position of the ray starting point.
* @param y1 The y position of the ray starting point.
* @param x2 The x position of the ray end point.
* @param y2 The y position of the ray end point.
* @param maxFraction The maximum distance the ray is going to travel as a number from 0 to 1.
* @param childIndex The index of the child the ray gets cast against.
* @return x, The x position where the ray intersects with the shape.
* @return y, The y position where the ray intersects with the shape.
* @return fraction, The position on the input vector where the intersection happened as a number from 0 to 1.
* @link [Fixture:rayCast](https://love2d.org/wiki/Fixture:rayCast)
*/
rayCast(
x1: number,
y1: number,
x2: number,
y2: number,
maxFraction: number,
childIndex?: number,
): LuaMultiReturn<[x: number, y: number, fraction: number] | []>;
/**
* Sets the categories the fixture belongs to. There can be up to 16 categories
* represented as a number from 1 to 16.
*
* @param category1 The first category.
* @param ... Additional categories.
* @link [Fixture:setCategory](https://love2d.org/wiki/Fixture:setCategory)
*/
setCategory(category1: number, ...vararg: Array<number>): void;
/**
* Sets the density of the fixture. Call Body:resetMassData if this needs to take
* effect immediately.
*
* @param density The fixture density in kilograms per square meter.
* @link [Fixture:setDensity](https://love2d.org/wiki/Fixture:setDensity)
*/
setDensity(density: number): void;
/**
* Sets the filter data of the fixture.
*
* Groups, categories, and mask can be used to define the collision behaviour of
* the fixture.
*
* If two fixtures are in the same group they either always collide if the group
* is positive, or never collide if it's negative. If the group is zero or they do
* not match, then the contact filter checks if the fixtures select a category of
* the other fixture with their masks. The fixtures do not collide if that's not
* the case. If they do have each other's categories selected, the return value of
* the custom contact filter will be used. They always collide if none was set.
*
* There can be up to 16 categories. Categories and masks are encoded as the bits
* of a 16-bit integer.
*
* @param categories The categories as an integer from 0 to 65535.
* @param mask The mask as an integer from 0 to 65535.
* @param group The group as an integer from -32768 to 32767.
* @link [Fixture:setFilterData](https://love2d.org/wiki/Fixture:setFilterData)
*/
setFilterData(categories: number, mask: number, group: number): void;
/**
* Sets the friction of the fixture.
*
* @param friction The fixture friction.
* @link [Fixture:setFriction](https://love2d.org/wiki/Fixture:setFriction)
*/
setFriction(friction: number): void;
/**
* Sets the group the fixture belongs to. Fixtures with the same group will always
* collide if the group is positive or never collide if it's negative. The group
* zero means no group.
*
* The groups range from -32768 to 32767.
*
* @param group The group as an integer from -32768 to 32767.
* @link [Fixture:setGroupIndex](https://love2d.org/wiki/Fixture:setGroupIndex)
*/
setGroupIndex(group: number): void;
/**
* Sets the category mask of the fixture. There can be up to 16 categories
* represented as a number from 1 to 16.
*
* This fixture will collide with the fixtures that are in the selected categories
* if the other fixture also has a category of this fixture selected.
*
* @param mask1 The first category.
* @param ... Additional categories.
* @link [Fixture:setMask](https://love2d.org/wiki/Fixture:setMask)
*/
setMask(mask1: number, ...vararg: Array<number>): void;
/**
* Sets the restitution of the fixture.
*
* @param restitution The fixture restitution.
* @link [Fixture:setRestitution](https://love2d.org/wiki/Fixture:setRestitution)
*/
setRestitution(restitution: number): void;
/**
* Sets whether the fixture should act as a sensor.
*
* Sensor do not produce collisions responses, but the begin and end callbacks
* will still be called for this fixture.
*
* @param sensor The sensor status.
* @link [Fixture:setSensor](https://love2d.org/wiki/Fixture:setSensor)
*/
setSensor(sensor: boolean): void;
/**
* Associates a Lua value with the fixture.
*
* Use this function in one thread only.
*
* @param value The Lua value associated with the fixture.
* @link [Fixture:setUserData](https://love2d.org/wiki/Fixture:setUserData)
*/
setUserData(value: any): void;
/**
* Checks if a point is inside the shape of the fixture.
*
* @param x The x position of the point.
* @param y The y position of the point.
* @return isInside, True if the point is inside or false if it is outside.
* @link [Fixture:testPoint](https://love2d.org/wiki/Fixture:testPoint)
*/
testPoint(x: number, y: number): boolean;
}
}