Options
All
  • Public
  • Public/Protected
  • All
Menu

Class Rectangle<CustomDataType>

Class representing a Rectangle

example

Without custom data (JS/TS):

const rectangle = new Rectangle({ 
x: 10,
y: 20,
width: 30,
height: 40,
});
example

With custom data (JS/TS):

const rectangle = new Rectangle({ 
x: 10,
y: 20,
width: 30,
height: 40,
data: {
name: 'Jane',
health: 100,
},
});
example

With custom data (TS):

interface ObjectData {
name: string
health: number
}
const entity: ObjectData = {
name: 'Jane',
health: 100,
};

// Typescript will infer the type of the data property
const rectangle1 = new Rectangle({
x: 10,
y: 20,
width: 30,
height: 40,
data: entity,
});

// You can also pass in a generic type for the data property
const rectangle2 = new Rectangle<ObjectData>({
x: 10,
y: 20,
width: 30,
height: 40,
});
rectangle2.data = entity;
example

With custom class extending Rectangle (implements RectangleGeometry (x, y, width, height)):

// extending inherits the qtIndex method
class Box extends Rectangle {

constructor(props) {
// call super to set x, y, width, height (and data, if given)
super(props);
this.content = props.content;
}
}

const box = new Box({
content: 'Gravity Boots',
x: 10,
y: 20,
width: 30,
height: 40,
});
example

With custom class and mapping RectangleGeometry:

// no need to extend if you don't implement RectangleGeometry
class Box {

constructor(content) {
this.content = content;
this.position = [10, 20];
this.size = [30, 40];
}

// add a qtIndex method to your class
qtIndex(node) {
// map your properties to RectangleGeometry
return Rectangle.prototype.qtIndex.call({
x: this.position[0],
y: this.position[1],
width: this.size[0],
height: this.size[1],
}, node);
}
}

const box = new Box('Gravity Boots');
example

With custom object that implements RectangleGeometry:

const player = {
name: 'Jane',
health: 100,
x: 10,
y: 20,
width: 30,
height: 30,
qtIndex: Rectangle.prototype.qtIndex,
});
example

With custom object and mapping RectangleGeometry:

// Note: this is not recommended but possible. 
// Using this technique, each object would have it's own qtIndex method.
// Rather add qtIndex to your prototype, e.g. by using classes like shown above.
const player = {
name: 'Jane',
health: 100,
position: [10, 20],
size: [30, 40],
qtIndex: function(node) {
return Rectangle.prototype.qtIndex.call({
x: this.position[0],
y: this.position[1],
width: this.size[0],
height: this.size[1],
}, node);
},
});

Type parameters

  • CustomDataType = void

    Type of the custom data property (optional, inferred automatically).

Hierarchy

  • Rectangle

Implements

Index

Constructors

Properties

Methods

Constructors

constructor

Properties

Optional data

data?: CustomDataType

Custom data.

height

height: number

Height of the rectangle.

width

width: number

Width of the rectangle.

x

x: number

X start of the rectangle (top left).

y

y: number

Y start of the rectangle (top left).

Methods

qtIndex

  • Determine which quadrant this rectangle belongs to.

    Parameters

    Returns number[]

    Array containing indexes of intersecting subnodes (0-3 = top-right, top-left, bottom-left, bottom-right)

Generated using TypeDoc