declare namespace UDB { namespace GameConfiguration { /** * Engine name, like `doom`, `boom`, `zdoom` etc. Used for the namespace in UDMF maps. Read-only. */ let engineName: string; /** * If the game configuration supports local sidedef texture offsets (distinct offsets for upper, middle, and lower sidedef parts). */ let hasLocalSidedefTextureOffsets: boolean; } namespace Angle2D { /** * Converts a Doom angle (where 0° is east) to a real world angle (where 0° is north). * @param doomangle Doom angle in degrees * @returns Doom angle in degrees */ function doomToReal(doomangle: number): number; /** * Converts a Doom angle (where 0° is east) to a real world angle (where 0° is north) in radians. * @param doomangle Doom angle in degrees * @returns Doom angle in radians */ function doomToRealRad(doomangle: number): number; /** * Converts a real world angle (where 0° is north) to a Doom angle (where 0° is east). * @param realangle Real world angle in degrees * @returns Doom angle in degrees */ function realToDoom(realangle: number): number; /** * Converts a real world angle (where 0° is north) to a Doom angle (where 0° is east) in radians. * @param realangle Real world angle in radians * @returns Doom angle in degrees */ function realToDoomRad(realangle: number): number; /** * Converts radians to degrees. * @param rad Angle in radians * @returns Angle in degrees */ function radToDeg(rad: number): number; /** * Converts degrees to radians. * @param deg Angle in degrees * @returns Angle in radians */ function degToRad(deg: number): number; /** * Normalizes an angle in degrees so that it is bigger or equal to 0° and smaller than 360°. * @param angle Angle in degrees * @returns Normalized angle in degrees */ function normalized(angle: number): number; /** * Normalizes an angle in radians so that it is bigger or equal to 0 and smaller than 2 Pi. * @param angle Angle in radians * @returns Normalized angle in radians */ function normalizedRad(angle: number): number; /** * Returns the angle between three positions. * @param p1 First position * @param p2 Second position * @param p3 Third position * @returns Angle in degrees */ function getAngle(p1: any, p2: any, p3: any): number; /** * Returns the angle between three positions in radians. * @param p1 First position * @param p2 Second position * @param p3 Third position * @returns Angle in radians */ function getAngleRad(p1: any, p2: any, p3: any): number; } class BlockEntry { /** * Gets all `Linedef`s in the blockmap entry. * @returns `Array` of `Linedef`s */ getLinedefs(): Linedef[]; /** * Gets all `Thing`s in the blockmap entry. * @returns `Array` of `Thing`s */ getThings(): Thing[]; /** * Gets all `Sector`s in the blockmap entry. * @returns `Array` of `Sector`s */ getSectors(): Sector[]; /** * Gets all `Vertex` in the blockmap entry. * @returns `Array` of `Vertex` */ getVertices(): Vertex[]; } class BlockMapQueryResult { /** * Gets all `Linedef`s in the blockmap query result. * @returns `Array` of `Linedef`s */ getLinedefs(): Linedef[]; /** * Gets all `Thing`s in the blockmap query result. * @returns `Array` of `Thing`s */ getThings(): Thing[]; /** * Gets all `Sector`s in the blockmap query result. * @returns `Array` of `Sector`s */ getSectors(): Sector[]; /** * Gets all `Vertex` in the blockmap query result. * @returns `Array` of `Vertex` */ getVertices(): Vertex[]; } class BlockMap { /** * Creates a blockmap that includes linedefs, things, sectors, and vertices. */ constructor(); /** * Creates a blockmap that only includes certain map element types. * @param lines If linedefs should be added or not * @param things If thigs should be added or not * @param sectors If sectors should be added or not * @param vertices If vertices should be added or not */ constructor(lines: boolean, things: boolean, sectors: boolean, vertices: boolean); /** * Gets the `BlockEntry` at a point. The given point can be a `Vector2D` or an `Array` of two numbers. * @param pos The point to get the `BlockEntry` of * @returns The `BlockEntry` on the given point */ getBlockAt(pos: any): BlockEntry; /** * Gets a `BlockMapQueryResult` for the blockmap along a line between two points. The given points can be `Vector2D`s or an `Array`s of two numbers. * @param v1 The first point * @param v2 The second point * @returns The `BlockMapQueryResult` for the line between the two points */ getLineBlocks(v1: any, v2: any): BlockMapQueryResult; /** * Gets a `BlockMapQueryResult` for the blockmap in a rectangle. * @param x X position of the top-left corner of the rectangle * @param y Y position of the top-left corner of the rectangle * @param width Width of the rectangle * @param height Height of the rectangle * @returns None */ getRectangleBlocks(x: number, y: number, width: number, height: number): BlockMapQueryResult; } namespace Data { /** * Returns an `Array` of all texture names. * @returns `Array` of all texture names */ function getTextureNames(): string[]; /** * Checks if a texture with the given name exists. * @param name Texture name to check * @returns `true` if the texture exists, `false` if it doesn't */ function textureExists(name: string): boolean; /** * Returns an `ImageInfo` object for the given texture name. * @param name Texture name to get the info for * @returns `ImageInfo` object containing information about the texture */ function getTextureInfo(name: string): ImageInfo; /** * Returns an `Array`of all flat names. * @returns `Array` of all flat names */ function getFlatNames(): string[]; /** * Checks if a flat with the given name exists. * @param name Flat name to check * @returns `true` if the flat exists, `false` if it doesn't */ function flatExists(name: string): boolean; /** * Returns an `ImageInfo` object for the given flat name. * @param name Flat name to get the info for * @returns `ImageInfo` object containing information about the flat */ function getFlatInfo(name: string): ImageInfo; } class ImageInfo { /** * Name of the image. */ name: string; /** * Width of the image. */ width: number; /** * Height of the image. */ height: number; /** * Scale of the image as `Vector2D`. */ scale: Vector2D; /** * If the image is a flat (`true`) or not (`false`). */ isFlat: boolean; } class Line2D { /** * Creates a new `Line2D` from two points. * @param v1 First point * @param v2 Second point */ constructor(v1: any, v2: any); /** * Returns the coordinates on the line, where `u` is the position between the first and second point, `u = 0.0` being on the first point, `u = 1.0` being on the second point, and `u = 0.5` being in the middle between the points. * @param u Position on the line, between 0.0 and 1.0 * @returns Position on the line as `Vector2D` */ getCoordinatesAt(u: number): Vector2D; /** * Returns the length of the `Line2D`. * @returns Length of the `Line2D` */ getLength(): number; /** * Returns the angle of the `Line2D` in radians. * @returns Angle of `Line2D` in radians */ getAngleRad(): number; /** * Return the angle of the `Line2D` in degrees. * @returns Angle of the `Line2D` in degrees */ getAngle(): number; /** * Returns the perpendicular of this line as `Vector2D`. * @returns Perpendicular of this line as `Vector2D` */ getPerpendicular(): Vector2D; /** * Checks if the given `Line2D` intersects this line. If `bounded` is set to `true` (default) the finite length of the lines is used, otherwise the infinite length of the lines is used. * @param ray `Line2D` to check against * @param bounded `true` (default) to use finite length of lines, `false` to use infinite length of lines * @returns `true` if lines intersect, `false` if they do not intersect */ isIntersecting(ray: Line2D, bounded: boolean): boolean; /** * Checks if the given line intersects this line. If `bounded` is set to `true` (default) the finite length of the lines is used, otherwise the infinite length of the lines is used. * @param a1 First point of the line to check against * @param a2 Second point of the line to check against * @param bounded `true` (default) to use finite length of lines, `false` to use infinite length of lines * @returns `true` if the lines intersect, `false` if they do not */ isIntersecting(a1: any, a2: any, bounded: boolean): boolean; /** * Returns the intersection point of of the given line defined by its start and end points with this line as `Vector2D`. If the lines do not intersect the `x` and `y` properties of the `Vector2D` are `NaN`. If `bounded` is set to `true` (default) the finite length of the lines is used, otherwise the infinite length of the lines is used. * @param a1 First point of first line * @param a2 Second point of first line * @param bounded `true` (default) to use finite length of lines, `false` to use infinite length of lines * @returns The intersection point as `Vector2D` */ getIntersectionPoint(a1: any, a2: any, bounded: boolean): Vector2D; /** * Returns the intersection point of of the given line with this line as `Vector2D`. If the lines do not intersect the `x` and `y` properties of the `Vector2D` are `NaN`. If `bounded` is set to `true` (default) the finite length of the lines is used, otherwise the infinite length of the lines is used. * @param ray Other `Line2D` to get the intersection point from * @param bounded `true` (default) to use finite length of lines, `false` to use infinite length of lines * @returns The intersection point as `Vector2D` */ getIntersectionPoint(ray: Line2D, bounded: boolean): Vector2D; /** * Returns which the of the line defined by its start and end point a given point is on. * @param p Point to check * @returns `< 0` if `p` is on the front (right) side, `> 0` if `p` is on the back (left) side, `== 0` if `p` in on the line */ getSideOfLine(p: any): number; /** * `Vector2D` position of start of the line. */ v1: Vector2D; /** * `Vector2D` position of end of the line. */ v2: Vector2D; } namespace Line2D { /** * Checks if two lines intersect. If `bounded` is set to `true` (default) the finite length of the lines is used, otherwise the infinite length of the lines is used. * @param line1 First `Line2D` * @param line2 Second `Line2D` * @param bounded `true` to use finite length of lines, `false` to use infinite length of lines * @returns `true` if the lines intersect, `false` if they do not */ function areIntersecting(line1: Line2D, line2: Line2D, bounded: boolean): boolean; /** * Checks if two lines defined by their start and end points intersect. If `bounded` is set to `true` (default) the finite length of the lines is used, otherwise the infinite length of the lines is used. * @param a1 First point of first line * @param a2 Second point of first line * @param b1 First point of second line * @param b2 Second point of second line * @param bounded `true` (default) to use finite length of lines, `false` to use infinite length of lines * @returns `true` if the lines intersect, `false` if they do not */ function areIntersecting(a1: any, a2: any, b1: any, b2: any, bounded: boolean): boolean; /** * Returns the intersection point of two lines as `Vector2D`. If the lines do not intersect the `x` and `y` properties of the `Vector2D` are `NaN`. If `bounded` is set to `true` (default) the finite length of the lines is used, otherwise the infinite length of the lines is used. * @param a1 First point of first line * @param a2 Second point of first line * @param b1 First point of second line * @param b2 Second point of second line * @param bounded `true` (default) to use finite length of lines, `false` to use infinite length of lines * @returns The intersection point as `Vector2D` */ function getIntersectionPoint(a1: any, a2: any, b1: any, b2: any, bounded: boolean): Vector2D; /** * Returns which the of the line defined by its start and end point a given point is on. * @param v1 First point of the line * @param v2 Second point of the line * @param p Point to check * @returns `< 0` if `p` is on the front (right) side, `> 0` if `p` is on the back (left) side, `== 0` if `p` in on the line */ function getSideOfLine(v1: any, v2: any, p: any): number; /** * Returns the shortest distance from point `p` to the line defined by its start and end points. If `bounded` is set to `true` (default) the finite length of the lines is used, otherwise the infinite length of the lines is used. * @param v1 First point of the line * @param v2 Second point of the line * @param p Point to get the distance to * @param bounded `true` (default) to use finite length of lines, `false` to use infinite length of lines * @returns The shortest distance to the line */ function getDistanceToLine(v1: any, v2: any, p: any, bounded: boolean): number; /** * Returns the shortest square distance from point `p` to the line defined by its start and end points. If `bounded` is set to `true` (default) the finite length of the lines is used, otherwise the infinite length of the lines is used. * @param v1 First point of the line * @param v2 Second point of the line * @param p Point to get the distance to * @param bounded `true` (default) to use finite length of lines, `false` to use infinite length of lines * @returns The shortest square distance to the line */ function getDistanceToLineSq(v1: any, v2: any, p: any, bounded: boolean): number; /** * Returns the offset coordinate on the line nearest to the given point. `0.0` being on the first point, `1.0` being on the second point, and `u = 0.5` being in the middle between the points. * @param v1 First point of the line * @param v2 Second point of the line * @param p Point to get the nearest offset coordinate from * @returns The offset value relative to the first point of the line. */ function getNearestOnLine(v1: any, v2: any, p: any): number; /** * Returns the coordinate on a line defined by its start and end points as `Vector2D`. * @param v1 First point of the line * @param v2 Second point of the line * @param u Offset coordinate relative to the first point of the line * @returns Point on the line as `Vector2D` */ function getCoordinatesAt(v1: any, v2: any, u: number): Vector2D; } class Linedef { /** * Copies the properties of this `Linedef` to another `Linedef`. * @param other The `Linedef` to copy the properties to */ copyPropertiesTo(other: Linedef): void; /** * Clears all flags. */ clearFlags(): void; /** * Flips the `Linedef`'s vertex attachments. */ flipVertices(): void; /** * Flips the `Linedef`'s `Sidedef`s. */ flipSidedefs(): void; /** * Flips the `Linedef`'s vertex attachments and `Sidedef`s. This is a shortcut to using both `flipVertices()` and `flipSidedefs()`. */ flip(): void; /** * Gets a `Vector2D` for testing on one side. The `Vector2D` is on the front when `true` is passed, otherwise on the back. * @param front `true` for front, `false` for back * @returns `Vector2D` that's either on the front of back of the Linedef */ getSidePoint(front: boolean): Vector2D; /** * Gets a `Vector2D` that's in the center of the `Linedef`. * @returns `Vector2D` in the center of the `Linedef` */ getCenterPoint(): Vector2D; /** * Automatically sets the blocking and two-sided flags based on the existing `Sidedef`s. */ applySidedFlags(): void; /** * Get a `Vector2D` that's *on* the line, closest to `pos`. `pos` can either be a `Vector2D`, or an array of numbers. * @param pos Point to check against * @returns `Vector2D` that's on the linedef */ nearestOnLine(pos: any): Vector2D; /** * Gets the shortest "safe" squared distance from `pos` to the line. If `bounded` is `true` that means that the not the whole line's length will be used, but `lengthInv` less at the start and end. * @param pos Point to check against * @param bounded `true` if only the finite length of the line should be used, `false` if the infinite length of the line should be used * @returns Squared distance to the line */ safeDistanceToSq(pos: any, bounded: boolean): number; /** * Gets the shortest "safe" distance from `pos` to the line. If `bounded` is `true` that means that the not the whole line's length will be used, but `lengthInv` less at the start and end. * @param pos Point to check against * @param bounded `true` if only the finite length of the line should be used, `false` if the infinite length of the line should be used * @returns Distance to the line */ safeDistanceTo(pos: any, bounded: boolean): number; /** * Gets the shortest squared distance from `pos` to the line. * @param pos Point to check against * @param bounded `true` if only the finite length of the line should be used, `false` if the infinite length of the line should be used * @returns Squared distance to the line */ distanceToSq(pos: any, bounded: boolean): number; /** * Gets the shortest distance from `pos` to the line. * @param pos Point to check against * @param bounded `true` if only the finite length of the line should be used, `false` if the infinite length of the line should be used * @returns Distance to the line */ distanceTo(pos: any, bounded: boolean): number; /** * Tests which side of the `Linedef` `pos` is on. Returns < 0 for front (right) side, > for back (left) side, and 0 if `pos` is on the line. * @param pos Point to check against * @returns < 0 for front (right) side, > for back (left) side, and 0 if `pos` is on the line */ sideOfLine(pos: any): number; /** * Splits the `Linedef` at the given position. This can either be a `Vector2D`, an array of numbers, or an existing `Vertex`. The result will be two lines, from the start `Vertex` of the `Linedef` to `pos`, and from `pos` to the end `Vertex` of the `Linedef`. * @param pos `Vertex` to split by * @returns The newly created `Linedef` */ split(pos: any): Linedef; /** * Deletes the `Linedef`. Note that this will result in unclosed `Sector`s unless it has the same `Sector`s on both sides. */ delete(): void; /** * Returns an `Array` of the `Linedef`'s tags. UDMF only. Supported game configurations only. * @returns `Array` of tags */ getTags(): number[]; /** * Adds a tag to the `Linedef`. UDMF only. Supported game configurations only. * @param tag Tag to add * @returns `true` when the tag was added, `false` when the tag already exists */ addTag(tag: number): boolean; /** * Removes a tag from the `Linedef`. UDMF only. Supported game configurations only. * @param tag Tag to remove * @returns `true` when the tag was removed successfully, `false` when the tag did not exist */ removeTag(tag: number): boolean; /** * The linedef's index. Read-only. */ index: number; /** * The linedef's start `Vertex`. */ start: Vertex; /** * The linedef's end `Vertex`. */ end: Vertex; /** * The `Linedef`'s front `Sidedef`. Is `null` when there is no front (should not happen). */ front: Sidedef; /** * The `Linedef`'s back `Sidedef`. Is `null` when there is no back. */ back: Sidedef; /** * The `Line2D` from the `start` to the `end` `Vertex`. */ line: Line2D; /** * If the `Linedef` is selected or not. */ selected: boolean; /** * If the `Linedef` is marked or not. It is used to mark map elements that were created or changed (for example after drawing new geometry). */ marked: boolean; /** * The activation flag. Hexen format only. */ activate: number; /** * `Linedef` flags. It's an object with the flags as properties. In Doom format and Hexen format they are identified by numbers, in UDMF by their name. */ flags: any; /** * `Array` of arguments of the `Linedef`. Number of arguments depends on game config (usually 5). Hexen format and UDMF only. */ args: number[]; /** * `Linedef` action. */ action: number; /** * `Linedef` tag. UDMF only. */ tag: number; /** * The `Linedef`'s squared length. Read-only. */ lengthSq: number; /** * The `Linedef`'s length. Read-only. */ length: number; /** * 1.0 / length. Read-only. */ lengthInv: number; /** * The `Linedef`'s angle in degree. Read-only. */ angle: number; /** * The `Linedef`'s angle in radians. Read-only. */ angleRad: number; /** * UDMF fields. It's an object with the fields as properties. */ fields: any; } namespace Map { /** * Returns the given point snapped to the current grid. * @param pos Point that should be snapped to the grid * @returns Snapped position as `Vector2D` */ function snappedToGrid(pos: any): Vector2D; /** * Returns an `Array` of all `Thing`s in the map. * @returns `Array` of `Thing`s */ function getThings(): Thing[]; /** * Returns an `Array` of all `Sector`s in the map. * @returns `Array` of `Sector`s */ function getSectors(): Sector[]; /** * Returns an `Array` of all `Sidedef`s in the map. * @returns `Array` of `Sidedef`s */ function getSidedefs(): Sidedef[]; /** * Returns an `Array` of all `Linedef`s in the map. * @returns `Array` of `Linedef`s */ function getLinedefs(): Linedef[]; /** * Returns an `Array` of all `Vertex` in the map. * @returns `Array` of `Vertex` */ function getVertices(): Vertex[]; /** * Stitches marked geometry with non-marked geometry. * @param mergemode Mode to merge by as `MergeGeometryMode` * @returns `true` if successful, `false` if failed */ function stitchGeometry(mergemode: MergeGeometryMode): boolean; /** * Snaps all vertices and things to the map format accuracy. Call this to ensure the vertices and things are at valid coordinates. * @param usepreciseposition `true` if decimal places defined by the map format should be used, `false` if no decimal places should be used */ function snapAllToAccuracy(usepreciseposition: boolean): void; /** * Gets a new tag. * @param usedtags `Array` of tags to skip * @returns The new tag */ function getNewTag(usedtags: number[]): number; /** * Gets multiple new tags. * @param count Number of tags to get * @returns `Array` of the new tags */ function getMultipleNewTags(count: number): number[]; /** * Gets the `Linedef` that's nearest to the specified position. * @param pos Position to check against * @param maxrange Maximum range (optional) * @returns Nearest `Linedef` */ function nearestLinedef(pos: any, maxrange: number): Linedef; /** * Gets the `Thing` that's nearest to the specified position. * @param pos Position to check against * @param maxrange Maximum range (optional) * @returns Nearest `Linedef` */ function nearestThing(pos: any, maxrange: number): Thing; /** * Gets the `Vertex` that's nearest to the specified position. * @param pos Position to check against * @param maxrange Maximum range (optional) * @returns Nearest `Vertex` */ function nearestVertex(pos: any, maxrange: number): Vertex; /** * Gets the `Sidedef` that's nearest to the specified position. * @param pos Position to check against * @returns Nearest `Sidedef` */ function nearestSidedef(pos: any): Sidedef; /** * Draws lines. Data has to be an `Array` of `Array` of numbers, `Vector2D`s, `Vector3D`s, or objects with x and y properties. Note that the first and last element have to be at the same positions to make a complete drawing. * @param data `Array` of positions * @returns `true` if drawing was successful, `false` if it wasn't */ function drawLines(data: any): boolean; /** * Sets the `marked` property of all map elements. Can be passed `true` to mark all map elements. * @param mark `false` to set the `marked` property to `false` (default), `true` to set the `marked` property to `true` */ function clearAllMarks(mark: boolean): void; /** * Sets the `marked` property of all vertices. Can be passed `true` to mark all vertices. * @param mark `false` to set the `marked` property to `false` (default), `true` to set the `marked` property to `true` */ function clearMarkedVertices(mark: boolean): void; /** * Sets the `marked` property of all `Thing`s. Can be passed `true` to mark all `Thing`s. * @param mark `false` to set the `marked` property to `false` (default), `true` to set the `marked` property to `true` */ function clearMarkedThings(mark: boolean): void; /** * Sets the `marked` property of all `Linedef`s. Can be passed `true` to mark all `Linedef`s. * @param mark `false` to set the `marked` property to `false` (default), `true` to set the `marked` property to `true` */ function clearMarkeLinedefs(mark: boolean): void; /** * Sets the `marked` property of all `Sidedef`s. Can be passed `true` to mark all `Sidedef`s. * @param mark `false` to set the `marked` property to `false` (default), `true` to set the `marked` property to `true` */ function clearMarkeSidedefs(mark: boolean): void; /** * Sets the `marked` property of all `Sector`s. Can be passed `true` to mark all `Sector`s. * @param mark `false` to set the `marked` property to `false` (default), `true` to set the `marked` property to `true` */ function clearMarkeSectors(mark: boolean): void; /** * Inverts all marks of all map elements. */ function invertAllMarks(): void; /** * Inverts the `marked` property of all vertices. */ function invertMarkedVertices(): void; /** * Inverts the `marked` property of all `Thing`s. */ function invertMarkedThings(): void; /** * Inverts the `marked` property of all `Linedef`s. */ function invertMarkedLinedefs(): void; /** * Inverts the `marked` property of all `Sidedef`s. */ function invertMarkedSidedefs(): void; /** * Inverts the `marked` property of all `Sector`s. */ function invertMarkedSectors(): void; /** * Gets all marked (default) or unmarked vertices. * @param mark `true` to get all marked vertices (default), `false` to get all unmarked vertices * @returns None */ function getMarkedVertices(mark: boolean): Vertex[]; /** * Gets all marked (default) or unmarked `Thing`s. * @param mark `true` to get all marked `Thing`s (default), `false` to get all unmarked `Thing`s * @returns None */ function getMarkedThings(mark: boolean): Thing[]; /** * Gets all marked (default) or unmarked `Linedef`s. * @param mark `true` to get all marked `Linedef`s (default), `false` to get all unmarked `Linedef`s * @returns None */ function getMarkedLinedefs(mark: boolean): Linedef[]; /** * Gets all marked (default) or unmarked `Sidedef`s. * @param mark `true` to get all marked `Sidedef`s (default), `false` to get all unmarked `Sidedef`s * @returns None */ function getMarkedSidedefs(mark: boolean): Sidedef[]; /** * Gets all marked (default) or unmarked `Sector`s. * @param mark `true` to get all marked `Sector`s (default), `false` to get all unmarked `Sector`s * @returns None */ function getMarkedSectors(mark: boolean): Sector[]; /** * Marks (default) or unmarks all selected vertices. * @param mark `true` to mark all selected vertices (default), `false` to unmark */ function markSelectedVertices(mark: boolean): void; /** * Marks (default) or unmarks all selected `Linedef`s. * @param mark `true` to mark all selected `Linedef`s (default), `false` to unmark */ function markSelectedLinedefs(mark: boolean): void; /** * Marks (default) or unmarks all selected `Sector`s. * @param mark `true` to mark all selected `Sector`s (default), `false` to unmark */ function markSelectedSectors(mark: boolean): void; /** * Marks (default) or unmarks all selected `Thing`s. * @param mark `true` to mark all selected `Thing`s (default), `false` to unmark */ function markSelectedThings(mark: boolean): void; /** * Gets all selected (default) or unselected vertices. * @param selected `true` to get all selected vertices, `false` to get all unselected ones * @returns `Array` of `Vertex` */ function getSelectedVertices(selected: boolean): Vertex[]; /** * Get the currently highlighted `Vertex`. * @returns The currently highlighted `Vertex` or `null` if no `Vertex` is highlighted */ function getHighlightedVertex(): Vertex; /** * Gets the currently selected `Vertex`s *or*, if no `Vertex`s are selected, a currently highlighted `Vertex`. * @returns `Array` of `Vertex` */ function getSelectedOrHighlightedVertices(): Vertex[]; /** * Gets all selected (default) or unselected `Thing`s. * @param selected `true` to get all selected `Thing`s, `false` to get all unselected ones * @returns `Array` of `Thing`s */ function getSelectedThings(selected: boolean): Thing[]; /** * Get the currently highlighted `Thing`. * @returns The currently highlighted `Thing` or `null` if no `Thing` is highlighted */ function getHighlightedThing(): Thing; /** * Gets the currently selected `Thing`s *or*, if no `Thing`s are selected, a currently highlighted `Thing`. * @returns `Array` of `Thing`s */ function getSelectedOrHighlightedThings(): Thing[]; /** * Gets all selected (default) or unselected `Sector`s. * @param selected `true` to get all selected `Sector`s, `false` to get all unselected ones * @returns `Array` of `Sector`s */ function getSelectedSectors(selected: boolean): Sector[]; /** * Get the currently highlighted `Sector`. * @returns The currently highlighted `Sector` or `null` if no `Sector` is highlighted */ function getHighlightedSector(): Sector; /** * Gets the currently selected `Sector`s *or*, if no `Sector`s are selected, a currently highlighted `Sector`. * @returns `Array` of `Sector`s */ function getSelectedOrHighlightedSectors(): Sector[]; /** * Gets all selected (default) or unselected `Linedef`s. * @param selected `true` to get all selected `Linedef`s, `false` to get all unselected ones * @returns `Array` of `Linedef`s */ function getSelectedLinedefs(selected: boolean): Linedef[]; /** * Get the currently highlighted `Linedef`. * @returns The currently highlighted `Linedef` or `null` if no `Linedef` is highlighted */ function getHighlightedLinedef(): Linedef; /** * Gets the currently selected `Linedef`s *or*, if no `Linede`f`s are selected, a currently highlighted `Linedef`. * @returns `Array` of `Linedef`s */ function getSelectedOrHighlightedLinedefs(): Linedef[]; /** * Gets all `Sidedef`s from the selected `Linedef`s. * @param selected `true` to get all `Sidedef`s of all selected `Linedef`s, `false` to get all `Sidedef`s of all unselected `Linedef`s * @returns `Array` of `Sidedef` */ function getSidedefsFromSelectedLinedefs(selected: boolean): Sidedef[]; /** * Gets the `Sidedef`s of the currently selected `Linedef`s *or*, if no `Linedef`s are selected, the `Sidedef`s of the currently highlighted `Linedef`. * @returns `Array` of `Sidedef`s */ function getSidedefsFromSelectedOrHighlightedLinedefs(): Sidedef[]; /** * Clears all selected map elements. */ function clearAllSelected(): void; /** * Clears all selected vertices. */ function clearSelectedVertices(): void; /** * Clears all selected `Thing`s. */ function clearSelectedThings(): void; /** * Clears all selected `Sector`s. */ function clearSelectedSectors(): void; /** * Creates a new `Vertex` at the given position. The position can be a `Vector2D` or an `Array` of two numbers. * @param pos Position where the `Vertex` should be created at * @returns The created `Vertex` */ function createVertex(pos: any): Vertex; /** * Creates a new `Thing` at the given position. The position can be a `Vector2D`, `Vector3D`, or an `Array` of two numbers or three numbers (note that the z position only works for game configurations that support vertical pos. A thing type can be supplied optionally. * @param pos Position where the `Thing` should be created at * @param type Thing type (optional) * @returns The new `Thing` */ function createThing(pos: any, type: number): Thing; /** * Joins `Sector`s, keeping lines shared by the `Sector`s. All `Sector`s will be joined with the first `Sector` in the array. * @param sectors `Array` of `Sector`s */ function joinSectors(sectors: Sector[]): void; /** * Merges `Sector`s, deleting lines shared by the `Sector`s. All `Sector`s will be merged into the first `Sector` in the array. * @param sectors `Array` of `Sector`s */ function mergeSectors(sectors: Sector[]): void; /** * `true` if the map is in Doom format, `false` if it isn't. Read-only. */ let isDoom: boolean; /** * `true` if the map is in Hexen format, `false` if it isn't. Read-only. */ let isHexen: boolean; /** * `true` if the map is in UDMF, `false` if it isn't. Read-only. */ let isUDMF: boolean; /** * The map coordinates of the mouse position as a `Vector2D`. Read-only. */ let mousePosition: Vector2D; /** * `VisualCamera` object with information about the position of the camera in visual mode. Read-only. */ let camera: VisualCamera; } namespace Map { /** * How geometry should be merged when geometry is stitched. */ enum MergeGeometryMode { /** * Merge vertices only */ CLASSIC, /** * Merge vertices and lines */ MERGE, /** * Merge vertices and lines, replacing sector geometry */ REPLACE, } } class Plane { /** * Creates a new `Plane` from a normal and an offset. The normal vector has to be `Vector3D`, `Array`s of 3 numbers, or an object with x, y, and z properties. * @param normal Normal vector of the plane * @param offset Distance of the plane from the origin */ constructor(normal: any, offset: number); /** * Creates a new `Plane` from 3 points. The points have to be `Vector3D`, `Array`s of 3 numbers, or an object with x, y, and z properties. * @param p1 First point * @param p2 Second point * @param p3 Thrid point * @param up `true` if plane is pointing up, `false` if pointing down */ constructor(p1: any, p2: any, p3: any, up: boolean); /** * Checks if the line between `from` and `to` intersects the plane. * @param from `Vector3D` of the start of the line * @param to `Vector3D` of the end of the line * @returns None */ getIntersection(from: any, to: any): object[]; /** * Computes the distance between the `Plane` and a point. The given point can be a `Vector3D` or an `Array` of three numbers. A result greater than 0 means the point is on the front of the plane, less than 0 means the point is behind the plane. * @param p Point to compute the distnace to * @returns Distance between the `Plane` and the point as `number` */ distance(p: any): number; /** * Returns the point that's closest to the given point on the `Plane`. The given point can be a `Vector3D` or an `Array` of three numbers. * @param p Point to get the closest position from * @returns Point as `Vector3D` on the plane closest to the given point */ closestOnPlane(p: any): Vector3D; /** * Returns the position on the z axis of the plane for the given point. The given point can be a `Vector2D` or an `Array` of two numbers. * @param p Point to get the z position from * @returns None */ getZ(p: any): number; /** * The plane's normal vector. */ normal: Vector3D; /** * The distance of the plane along the normal vector. */ offset: number; /** * The `a` value of the plane equation. This is the `x` value of the normal vector. */ a: number; /** * The `b` value of the plane equation. This is the `y` value of the normal vector. */ b: number; /** * The `c` value of the plane equation. This is the `z` value of the normal vector. */ c: number; /** * The `d` value of the plane equation. This is the same as the `offset` value. */ d: number; } class Sector { /** * Returns an `Array` of all `Sidedef`s of the `Sector`. * @returns `Array` of the `Sector`'s `Sidedef`s */ getSidedefs(): Sidedef[]; /** * Clears all flags. */ clearFlags(): void; /** * Copies the properties from this `Sector` to another. * @param s the `Sector` to copy the properties to */ copyPropertiesTo(s: Sector): void; /** * Checks if the given point is in this `Sector` or not. The given point can be a `Vector2D` or an `Array` of two numbers. * @param p Point to test * @returns `true` if the point is in the `Sector`, `false` if it isn't */ intersect(p: any): boolean; /** * Joins this `Sector` with another `Sector`. Lines shared between the sectors will not be removed. * @param other Sector to join with */ join(other: Sector): void; /** * Deletes the `Sector` and its `Sidedef`s. */ delete(): void; /** * Gets an array of `Vector2D` arrays, representing the vertices of the triangulated sector. Note that for sectors with islands some triangles may not always have their points on existing vertices. * @returns Array of `Vector2D` arrays */ getTriangles(): Vector2D[][]; /** * Gets the floor's slope vector. * @returns The floor's slope normal as a `Vector3D` */ getFloorSlope(): Vector3D; /** * Sets the floor's slope vector. The vector has to be normalized. * @param normal The new slope vector as `Vector3D` */ setFloorSlope(normal: any): void; /** * Gets the ceiling's slope vector. * @returns The ceiling's slope normal as a `Vector3D` */ getCeilingSlope(): Vector3D; /** * Sets the ceiling's slope vector. The vector has to be normalized. * @param normal The new slope vector as `Vector3D` */ setCeilingSlope(normal: any): void; /** * Returns an `Array` of `Vector2D` of label positions for the `Sector`. This are the positions where for example selection number or tags are shown. * @returns `Array` of `Vector2D` of all label positions */ getLabelPositions(): Vector2D[]; /** * Returns an `Array` of the `Sector`'s tags. UDMF only. Supported game configurations only. * @returns `Array` of tags */ getTags(): number[]; /** * Adds a tag to the `Sector`. UDMF only. Supported game configurations only. * @param tag Tag to add * @returns `true` when the tag was added, `false` when the tag already exists */ addTag(tag: number): boolean; /** * Removes a tag from the `Sector`. UDMF only. Supported game configurations only. * @param tag Tag to remove * @returns `true` when the tag was removed successfully, `false` when the tag did not exist */ removeTag(tag: number): boolean; /** * The `Sector`'s index. Read-only. */ index: number; /** * Floor height of the `Sector`. */ floorHeight: number; /** * Ceiling height of the `Sector`. */ ceilingHeight: number; /** * Floor texture of the `Sector`. */ floorTexture: string; /** * Ceiling texture of the `Sector`. */ ceilingTexture: string; /** * If the `Sector` is selected or not. */ selected: boolean; /** * If the `Sector`'s floor is selected or not. Will always return `true` in classic modes if the `Sector` is selected. Read-only. */ floorSelected: boolean; /** * If the `Sector`'s floor is highlighted or not. Will always return `true` in classic modes if the `Sector` is highlighted. Read-only. */ floorHighlighted: boolean; /** * If the `Sector`'s ceiling is selected or not. Will always return `true` in classic modes if the `Sector` is selected. Read-only. */ ceilingSelected: boolean; /** * If the `Sector`'s ceiling is highlighted or not. Will always return `true` in classic modes if the `Sector` is highlighted. Read-only. */ ceilingHighlighted: boolean; /** * If the `Sector` is marked or not. It is used to mark map elements that were created or changed (for example after drawing new geometry). */ marked: boolean; /** * `Sector` flags. It's an object with the flags as properties. Only available in UDMF. */ flags: any; /** * The `Sector`'s special type. */ special: number; /** * The `Sector`'s tag. */ tag: number; /** * The `Sector`'s brightness. */ brightness: number; /** * The floor's slope offset. */ floorSlopeOffset: number; /** * The ceiling's slope offset. */ ceilingSlopeOffset: number; /** * UDMF fields. It's an object with the fields as properties. */ fields: any; } class Sidedef { /** * The `Sidedef`'s index. Read-only. */ index: number; /** * `true` if this `Sidedef` is the front of its `Linedef`, otherwise `false`. Read-only. */ isFront: boolean; /** * The `Sector` the `Sidedef` belongs to. Read-only. */ sector: Sector; /** * The `Linedef` the `Sidedef` belongs to. Read-only. */ line: Linedef; /** * The `Sidedef` on the other side of this `Sidedef`'s `Linedef`. Returns `null` if there is no other. Read-only. */ other: Sidedef; /** * The `Sidedef`'s angle in degrees. Read-only. */ angle: number; /** * The `Sidedef`'s angle in radians. Read-only. */ angleRad: number; /** * The x offset of the `Sidedef`'s textures. */ offsetX: number; /** * The y offset of the `Sidedef`'s textures. */ offsetY: number; /** * `Sidedef` flags. It's an object with the flags as properties. Only available in UDMF. */ flags: any; /** * The `Sidedef`'s upper texture. */ upperTexture: string; /** * The `Sidedef`'s middle texture. */ middleTexture: string; /** * The `Sidedef`'s lower texture. */ lowerTexture: string; /** * If the `Sidedef`'s upper part is selected or not. Will always return `true` in classic modes if the parent `Linedef` is selected. */ upperSelected: boolean; /** * If the `Sidedef`'s upper part is highlighted or not. Will always return `true` in classic modes if the parent `Linedef` is selected. */ upperHighlighted: boolean; /** * If the `Sidedef`'s middle part is selected or not. Will always return `true` in classic modes if the parent `Linedef` is selected. */ middleSelected: boolean; /** * If the `Sidedef`'s middle part is highlighted or not. Will always return `true` in classic modes if the parent `Linedef` is selected. */ middleHighlighted: boolean; /** * If the `Sidedef`'s lower part is selected or not. Will always return `true` in classic modes if the parent `Linedef` is selected. */ lowerSelected: boolean; /** * If the `Sidedef`'s lower part is highlighted or not. Will always return `true` in classic modes if the parent `Linedef` is selected. */ lowerHighlighted: boolean; /** * UDMF fields. It's an object with the fields as properties. */ fields: any; } class Thing { /** * Copies the properties from this `Thing` to another. * @param t The `Thing` to copy the properties to */ copyPropertiesTo(t: Thing): void; /** * Clears all flags. */ clearFlags(): void; /** * Snaps the `Thing`'s position to the grid. */ snapToGrid(): void; /** * Snaps the `Thing`'s position to the map format's accuracy. */ snapToAccuracy(): void; /** * Gets the squared distance between this `Thing` and the given point. * @param pos Point to calculate the squared distance to. * @returns Distance to `pos` */ distanceToSq(pos: any): number; /** * Gets the distance between this `Thing` and the given point. The point can be either a `Vector2D` or an array of numbers. * @param pos Point to calculate the distance to. * @returns Distance to `pos` */ distanceTo(pos: any): number; /** * Deletes the `Thing`. */ delete(): void; /** * Determines and returns the `Sector` the `Thing` is in. * @returns The `Sector` the `Thing` is in */ getSector(): Sector; /** * Index of the `Thing`. Read-only. */ index: number; /** * Type of the `Thing`. */ type: number; /** * Angle of the `Thing` in degrees, see https://doomwiki.org/wiki/Angle. */ angle: number; /** * Angle of the `Thing` in radians. */ angleRad: number; /** * `Array` of arguments of the `Thing`. Number of arguments depends on game config (usually 5). Hexen format and UDMF only. */ args: number[]; /** * `Thing` action. Hexen and UDMF only. */ action: number; /** * `Thing` tag. UDMF only. */ tag: number; /** * If the `Thing` is selected or not. */ selected: boolean; /** * If the `Thing` is marked or not. It is used to mark map elements that were created or changed (for example after drawing new geometry). */ marked: boolean; /** * `Thing` flags. It's an object with the flags as properties. In Doom format and Hexen format they are identified by numbers, in UDMF by their name. */ flags: any; /** * Position of the `Thing`. It's an object with `x`, `y`, and `z` properties. The latter is only relevant in Hexen format and UDMF. */ position: any; /** * Pitch of the `Thing` in degrees. Only valid for supporting game configurations. */ pitch: number; /** * Roll of the `Thing` in degrees. Only valid for supporting game configurations. */ roll: number; /** * UDMF fields. It's an object with the fields as properties. */ fields: any; } /** * Set the progress of the script in percent. Value can be between 0 and 100. Also shows the script running dialog. * @param value Number between 0 and 100 */ function setProgress(value: number): void; /** * Adds a line to the script log. Also shows the script running dialog. * @param text Line to add to the script log */ function log(text: any): void; /** * Shows a message box with an "OK" button. * @param message Message to show */ function showMessage(message: any): void; /** * Shows a message box with an "Yes" and "No" button. * @param message Message to show * @returns true if "Yes" was clicked, false if "No" was clicked */ function showMessageYesNo(message: any): boolean; /** * Exist the script prematurely without undoing its changes. * @param s Text to show in the status bar (optional) */ function exit(s: string): void; /** * Exist the script prematurely with undoing its changes. * @param s Text to show in the status bar (optional) */ function die(s: string): void; class Vector2D { /** * Creates a new `Vector2D` from x and y coordinates * @param x The x coordinate * @param y The y coordinate */ constructor(x: number, y: number); /** * Creates a new `Vector2D` from a point. * @param v The vector to create the `Vector2D` from */ constructor(v: any); /** * Returns the perpendicular to the `Vector2D`. * @returns The perpendicular as `Vector2D` */ getPerpendicular(): Vector2D; /** * Returns a `Vector2D` with the sign of all components. * @returns A `Vector2D` with the sign of all components */ getSign(): Vector2D; /** * Returns the angle of the `Vector2D` in radians. * @returns The angle of the `Vector2D` in radians */ getAngleRad(): number; /** * Returns the angle of the `Vector2D` in degree. * @returns The angle of the `Vector2D` in degree */ getAngle(): number; /** * Returns the length of the `Vector2D`. * @returns The length of the `Vector2D` */ getLength(): number; /** * Returns the square length of the `Vector2D`. * @returns The square length of the `Vector2D` */ getLengthSq(): number; /** * Returns the normal of the `Vector2D`. * @returns The normal as `Vector2D` */ getNormal(): Vector2D; /** * Returns the transformed vector as `Vector2D`. * @param offsetx X offset * @param offsety Y offset * @param scalex X scale * @param scaley Y scale * @returns The transformed vector as `Vector2D` */ getTransformed(offsetx: number, offsety: number, scalex: number, scaley: number): Vector2D; /** * Returns the inverse transformed vector as `Vector2D`. * @param invoffsetx X offset * @param invoffsety Y offset * @param invscalex X scale * @param invscaley Y scale * @returns The inverse transformed vector as `Vector2D` */ getInverseTransformed(invoffsetx: number, invoffsety: number, invscalex: number, invscaley: number): Vector2D; /** * Returns the rotated vector as `Vector2D`. * @param theta Angle in degree to rotate by * @returns The rotated `Vector2D` */ getRotated(theta: number): Vector2D; /** * Returns the rotated vector as `Vector2D`. * @param theta Angle in radians to rotate by * @returns The rotated `Vector2D` */ getRotatedRad(theta: number): Vector2D; /** * Checks if the `Vector2D` is finite or not. * @returns `true` if `Vector2D` is finite, otherwise `false` */ isFinite(): boolean; /** * The `x` value of the vector. */ x: number; /** * The `y` value of the vector. */ y: number; } namespace Vector2D { /** * Returns the dot product of two `Vector2D`s. * @param a First `Vector2D` * @param b Second `Vector2D` * @returns The dot product of the two vectors */ function dotProduct(a: Vector2D, b: Vector2D): number; /** * Returns the cross product of two `Vector2D`s. * @param a First `Vector2D` * @param b Second `Vector2D` * @returns Cross product of the two vectors as `Vector2D` */ function crossProduct(a: any, b: any): Vector2D; /** * Reflects a `Vector2D` over a mirror `Vector2D`. * @param v `Vector2D` to reflect * @param m Mirror `Vector2D` * @returns The reflected vector as `Vector2D` */ function reflect(v: any, m: any): Vector2D; /** * Returns a reversed `Vector2D`. * @param v `Vector2D` to reverse * @returns The reversed vector as `Vector2D` */ function reversed(v: any): Vector2D; /** * Creates a `Vector2D` from an angle in radians, * @param angle Angle in radians * @returns Vector as `Vector2D` */ function fromAngleRad(angle: number): Vector2D; /** * Creates a `Vector2D` from an angle in degrees, * @param angle Angle in degrees * @returns Vector as `Vector2D` */ function fromAngle(angle: number): Vector2D; /** * Returns the angle between two `Vector2D`s in radians * @param a First `Vector2D` * @param b Second `Vector2D` * @returns Angle in radians */ function getAngleRad(a: any, b: any): number; /** * Returns the angle between two `Vector2D`s in degrees. * @param a First `Vector2D` * @param b Second `Vector2D` * @returns Angle in degrees */ function getAngle(a: any, b: any): number; /** * Returns the square distance between two `Vector2D`s. * @param a First `Vector2D` * @param b Second `Vector2D` * @returns The squared distance */ function getDistanceSq(a: any, b: any): number; /** * Returns the distance between two `Vector2D`s. * @param a First `Vector2D` * @param b Second `Vector2D` * @returns The distance */ function getDistance(a: any, b: any): number; } class Vector3D { /** * Creates a new `Vector3D` from x and y coordinates * @param x The x coordinate * @param y The y coordinate * @param z The z coordinate */ constructor(x: number, y: number, z: number); /** * Creates a new `Vector3D` from a point. * @param v The vector to create the `Vector3D` from */ constructor(v: any); /** * Returns the x/y angle of the `Vector3D` in radians. * @returns The x/y angle of the `Vector3D` in radians */ getAngleXYRad(): number; /** * Returns the angle of the `Vector3D` in degrees. * @returns The angle of the `Vector3D` in degrees */ getAngleXY(): number; /** * Returns the z angle of the `Vector3D` in radians. * @returns The z angle of the `Vector3D` in radians */ getAngleZRad(): number; /** * Returns the z angle of the `Vector3D` in degrees. * @returns The z angle of the `Vector3D` in degrees */ getAngleZ(): number; /** * Returns the length of the `Vector3D`. * @returns The length of the `Vector3D` */ getLength(): number; /** * Returns the square length of the `Vector3D`. * @returns The square length of the `Vector3D` */ getLengthSq(): number; /** * Returns the normal of the `Vector3D`. * @returns The normal as `Vector3D` */ getNormal(): Vector3D; /** * Return the scaled `Vector3D`. * @param scale Scale, where 1.0 is unscaled * @returns The scaled `Vector3D` */ getScaled(scale: number): Vector3D; /** * Checks if the `Vector3D` is normalized or not. * @returns `true` if `Vector3D` is normalized, otherwise `false` */ isNormalized(): boolean; /** * Checks if the `Vector3D` is finite or not. * @returns `true` if `Vector3D` is finite, otherwise `false` */ isFinite(): boolean; /** * The `x` value of the vector. */ x: number; /** * The `y` value of the vector. */ y: number; /** * The `z` value of the vector. */ z: number; } namespace Vector3D { /** * Returns the dot product of two `Vector3D`s. * @param a First `Vector3D` * @param b Second `Vector3D` * @returns The dot product of the two vectors */ function dotProduct(a: Vector3D, b: Vector3D): number; /** * Returns the cross product of two `Vector3D`s. * @param a First `Vector3D` * @param b Second `Vector3D` * @returns Cross product of the two vectors as `Vector3D` */ function crossProduct(a: any, b: any): Vector3D; /** * Reflects a `Vector3D` over a mirror `Vector3D`. * @param v `Vector3D` to reflect * @param m Mirror `Vector3D` * @returns The reflected vector as `Vector3D` */ function reflect(v: any, m: any): Vector3D; /** * Returns a reversed `Vector3D`. * @param v `Vector3D` to reverse * @returns The reversed vector as `Vector3D` */ function reversed(v: any): Vector3D; /** * Creates a `Vector3D` from an angle in radians * @param angle Angle on the x/y axes in radians * @returns Vector as `Vector3D` */ function fromAngleXYRad(angle: number): Vector3D; /** * Creates a `Vector3D` from an angle in radians, * @param angle Angle on the x/y axes in degrees * @returns Vector as `Vector3D` */ function fromAngleXY(angle: number): Vector3D; /** * Creates a `Vector3D` from two angles in radians * @param anglexy Angle on the x/y axes in radians * @param anglez Angle on the z axis in radians * @returns Vector as `Vector3D` */ function fromAngleXYZRad(anglexy: number, anglez: number): Vector3D; /** * Creates a `Vector3D` from two angles in degrees * @param anglexy Angle on the x/y axes in radians * @param anglez Angle on the z axis in radians * @returns Vector as `Vector3D` */ function fromAngleXYZ(anglexy: number, anglez: number): Vector3D; } class Vertex { /** * Gets all `Linedefs` that are connected to this `Vertex`. * @returns Array of linedefs */ getLinedefs(): Linedef[]; /** * Copies the properties from this `Vertex` to another. * @param v the vertex to copy the properties to */ copyPropertiesTo(v: Vertex): void; /** * Gets the squared distance between this `Vertex` and the given point. * @param pos Point to calculate the squared distance to. * @returns Squared distance to `pos` */ distanceToSq(pos: any): number; /** * Gets the distance between this `Vertex` and the given point. * @param pos Point to calculate the distance to. * @returns Distance to `pos` */ distanceTo(pos: any): number; /** * Returns the `Linedef` that is connected to this `Vertex` that is closest to the given point. * @param pos Point to get the nearest `Linedef` connected to this `Vertex` from * @returns None */ nearestLinedef(pos: any): Linedef; /** * Snaps the `Vertex`'s position to the map format's accuracy. */ snapToAccuracy(): void; /** * Snaps the `Vertex`'s position to the grid. */ snapToGrid(): void; /** * Joins this `Vertex` with another `Vertex`, deleting this `Vertex` and keeping the other. * @param other `Vertex` to join with */ join(other: Vertex): void; /** * Deletes the `Vertex`. Note that this can result in unclosed sectors. */ delete(): void; /** * The vertex index. Read-only. */ index: number; /** * Position of the `Vertex`. It's an object with `x` and `y` properties. */ position: any; /** * If the `Vertex` is selected or not. */ selected: boolean; /** * If the `Vertex` is marked or not. It is used to mark map elements that were created or changed (for example after drawing new geometry). */ marked: boolean; /** * The ceiling z position of the `Vertex`. Only available in UDMF. Only available for supported game configurations. */ ceilingZ: number; /** * The floor z position of the `Vertex`. Only available in UDMF. Only available for supported game configurations. */ floorZ: number; /** * UDMF fields. It's an object with the fields as properties. */ fields: any; } class VisualCamera { /** * Position of the camera as `Vector3D`. Read-only. */ position: Vector3D; /** * Angle of the camera on the X/Y axes. Read-only. */ angleXY: number; /** * Angle of the camera on the Z axis. Read-only. */ angleZ: number; } class QueryOptions { /** * Initializes a new `QueryOptions` object. */ constructor(); /** * Adds a parameter to query * @param name Name of the variable that the queried value is stored in * @param description Textual description of the parameter * @param type UniversalType value of the parameter * @param defaultvalue Default value of the parameter */ addOption(name: string, description: string, type: number, defaultvalue: any): void; /** * Adds a parameter to query * @param name Name of the variable that the queried value is stored in * @param description Textual description of the parameter * @param type UniversalType value of the parameter * @param defaultvalue Default value of the parameter * @param enumvalues *missing* */ addOption(name: string, description: string, type: number, defaultvalue: any, enumvalues: any): void; /** * Removes all parameters */ clear(): void; /** * Queries all parameters. Options a window where the user can enter values for the options added through `addOption()`. * @returns True if OK was pressed, otherwise false */ query(): boolean; /** * Object containing all the added options as properties. */ options: any; } }