Sector

Properties


brightness

The Sector's brightness.


ceilingHeight

Ceiling height of the Sector.


Version: 3

ceilingHighlighted

If the Sector's ceiling is highlighted or not. Will always return true in classic modes if the Sector is highlighted. Read-only.


Version: 3

ceilingSelected

If the Sector's ceiling is selected or not. Will always return true in classic modes if the Sector is selected. Read-only.


ceilingSlopeOffset

The ceiling's slope offset.


ceilingTexture

Ceiling texture of the Sector.


fields

UDMF fields. It's an object with the fields as properties.

s.fields.comment = 'This is a comment';
s.fields['comment'] = 'This is a comment'; // Also  works
s.fields.xscalefloor = 2.0;
t.fields.score = 100;

It is also possible to define new fields:

s.fields.user_myboolfield = true;

There are some restrictions, though:

  • it only works for fields that are not in the base UDMF standard, since those are handled directly in the respective class
  • it does not work for flags. While they are technically also UDMF fields, they are handled in the flags field of the respective class (where applicable)
  • JavaScript does not distinguish between integer and floating point numbers, it only has floating point numbers (of double precision). For fields where UDB knows that they are integers this it not a problem, since it'll automatically convert the floating point numbers to integers (dropping the fractional part). However, if you need to specify an integer value for an unknown or custom field you have to work around this limitation: Version 5 and later: You can use a BigInt. This is done by appending a n to the number. Note that this is just a convenient way to define whole numbers, it still only supports 32 bit integers:
s.fields.user_myintfield = 25n; // Sets the 'user_myintfield' field to an integer value of 25

In version 4 and earlier you have to use the UniValue class:

s.fields.user_myintfield = new UDB.UniValue(0, 25); // Sets the 'user_myintfield' field to an integer value of 25

To remove a field you have to assign null to it:

s.fields.user_myintfield = null;

flags

Sector flags. It's an object with the flags as properties. Only available in UDMF.

s.flags['noattack'] = true; // Monsters in this sector don't attack
s.flags.noattack = true; // Also works

floorHeight

Floor height of the Sector.


Version: 3

floorHighlighted

If the Sector's floor is highlighted or not. Will always return true in classic modes if the Sector is highlighted. Read-only.


Version: 3

floorSelected

If the Sector's floor is selected or not. Will always return true in classic modes if the Sector is selected. Read-only.


floorSlopeOffset

The floor's slope offset.


floorTexture

Floor texture of the Sector.


index

The Sector's index. Read-only.


marked

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).


selected

If the Sector is selected or not.


special

The Sector's special type.


tag

The Sector's tag.

Methods


addTag(tag: int)

Adds a tag to the Sector. UDMF only. Supported game configurations only.

Parameters

  • tag: Tag to add

Return value

true when the tag was added, false when the tag already exists


clearFlags()

Clears all flags.


copyPropertiesTo(s: Sector)

Copies the properties from this Sector to another.

Parameters

  • s: the Sector to copy the properties to

delete()

Deletes the Sector and its Sidedefs.


getCeilingSlope()

Gets the ceiling's slope vector.

Return value

The ceiling's slope normal as a Vector3D


getFloorSlope()

Gets the floor's slope vector.

Return value

The floor's slope normal as a Vector3D


Version: 5 Version: 5

getLabelPositions()

Returns an Array of Vector2D of label positions for the Sector. This are the positions where for example selection number or tags are shown.

This example adds an imp to the label position of each sector in the map:

UDB.Map.getSectors().forEach(s => {
    const positions = s.getLabelPositions();
    if(positions.length > 0)
        UDB.Map.createThing(positions[0], 3001);
});

Return value

Array of Vector2D of all label positions


getSidedefs()

Returns an Array of all Sidedefs of the Sector.

Return value

Array of the Sector's Sidedefs


getTags()

Returns an Array of the Sector's tags. UDMF only. Supported game configurations only.

Return value

Array of tags


getTriangles()

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.

Return value

Array of Vector2D arrays


intersect(p: object)

Checks if the given point is in this Sector or not. The given point can be a Vector2D or an Array of two numbers.

if(s.intersect(new Vector2D(32, 64)))
    UDB.showMessage('Point is in the sector!');

if(s.intersect([ 32, 64 ]))
    UDB.showMessage('Point is in the sector!');

Parameters

  • p: Point to test

Return value

true if the point is in the Sector, false if it isn't


join(other: Sector)

Joins this Sector with another Sector. Lines shared between the sectors will not be removed.

Parameters

  • other: Sector to join with

removeTag(tag: int)

Removes a tag from the Sector. UDMF only. Supported game configurations only.

Parameters

  • tag: Tag to remove

Return value

true when the tag was removed successfully, false when the tag did not exist


setCeilingSlope(normal: object)

Sets the ceiling's slope vector. The vector has to be normalized.

Parameters

  • normal: The new slope vector as Vector3D

setFloorSlope(normal: object)

Sets the floor's slope vector. The vector has to be normalized.

Parameters

  • normal: The new slope vector as Vector3D