Options
All
  • Public
  • Public/Protected
  • All
Menu

An Abstract Base Class which defines a Placeable Object which represents a Document placed on the Canvas

abstract
interface
param document

The Document instance which is represented by this object

Hierarchy

Index

Constructors

  • Parameters

    • document: any

    Returns PlaceableObject

Properties

scene: Scene

Retain a reference to the Scene within which this Placeable Object resides

document: Document

A reference to the Scene embedded Document instance which this object represents

vision: { fov: Circle; los: PointSourcePolygon }

Track the field of vision for the placeable object. This is necessary to determine whether a player has line-of-sight towards a placeable object or vice-versa

Type declaration

controlIcon: ControlIcon

A control icon for interacting with the object

mouseInteractionManager: MouseInteractionManager

A mouse interaction manager instance which handles mouse workflows related to this object.

cullable: boolean
visible: any
renderable: any
_preview: any
_dragPassthrough: boolean = false

Passthrough certain drag operations on locked objects.

_isHoverIn: boolean = false

Know if a placeable is in the hover-in state.

#lastQuadtreeBounds: Rectangle

The bounds that the placeable was added to the quadtree with.

#drawing: Promise<PlaceableObject> = ...

An internal reference to a Promise in-progress to draw the Placeable Object.

#drawn: boolean = false

Has this Placeable Object been drawn and is there no drawing in progress?

#controlled: boolean = false
#hover: boolean = false
embeddedName: string

Identify the official Document name for this PlaceableObject class

RENDER_FLAGS: { redraw: { propagate: string[] }; refresh: { propagate: string[]; alias: boolean }; refreshState: {} } = ...

The flags declared here are required for all PlaceableObject subclasses to also support.

override

Type declaration

  • redraw: { propagate: string[] }
    • propagate: string[]
  • refresh: { propagate: string[]; alias: boolean }
    • propagate: string[]
    • alias: boolean
  • refreshState: {}

    Accessors

    • get interactionState(): { NONE: number; HOVER: number; CLICKED: number; DRAG: number; DROP: number }
    • The mouse interaction state of this placeable.

      Returns { NONE: number; HOVER: number; CLICKED: number; DRAG: number; DROP: number }

      • NONE: number
      • HOVER: number
      • CLICKED: number
      • DRAG: number
      • DROP: number
    • get bounds(): Rectangle
    • The bounding box for this PlaceableObject. This is required if the layer uses a Quadtree, otherwise it is optional

      Returns Rectangle

    • get center(): Point
    • The central coordinate pair of the placeable object based on it's own width and height

      Returns Point

    • get id(): string
    • The id of the corresponding Document which this PlaceableObject represents.

      Returns string

    • get objectId(): string
    • A unique identifier which is used to uniquely identify elements on the canvas related to this object.

      Returns string

    • get sourceId(): string
    • The named identified for the source object associated with this PlaceableObject. This differs from the objectId because the sourceId is the same for preview objects as for the original.

      Returns string

    • get isPreview(): boolean
    • Is this placeable object a temporary preview?

      Returns boolean

    • get hasPreview(): boolean
    • Does there exist a temporary preview of this placeable object?

      Returns boolean

    • The field-of-vision polygon for the object, if it has been computed

      Returns Circle

    • Provide a reference to the CanvasLayer which contains this PlaceableObject.

      Returns PlaceablesLayer

    • The line-of-sight polygon for the object, if it has been computed

      Returns PointSourcePolygon

    • A Form Application which is used to configure the properties of this Placeable Object or the Document it represents.

      Returns FormApplication

    • get controlled(): boolean
    • An indicator for whether the object is currently controlled

      Returns boolean

    • get hover(): boolean
    • set hover(state: boolean): void
    • An indicator for whether the object is currently a hover target

      Returns boolean

    • An indicator for whether the object is currently a hover target

      Parameters

      • state: boolean

      Returns void

    Methods

    • applyRenderFlags(): void
    • override

      Returns void

    • Clear the display of the existing object.

      Returns PlaceableObject

      The cleared object

    • destroy(options: any): any
    • inheritdoc

      Parameters

      • options: any

      Returns any

    • Draw the placeable object into its parent container

      Parameters

      • options: any = {}

      Returns Promise<PlaceableObject>

      The drawn object

    • Refresh all incremental render flags for the PlaceableObject. This method is no longer used by the core software but provided for backwards compatibility.

      Parameters

      • options: any = {}

      Returns PlaceableObject

      The refreshed object

    • _updateQuadtree(): void
    • Update the quadtree.

      internal

      Returns void

    • control(options?: { releaseOthers: boolean }): boolean
    • Assume control over a PlaceableObject, flagging it as controlled and enabling downstream behaviors

      Parameters

      • options: { releaseOthers: boolean } = {}

        Additional options which modify the control request

        • releaseOthers: boolean

          Release any other controlled objects first

      Returns boolean

      A flag denoting whether control was successful

    • release(options?: any): boolean
    • Release control over a PlaceableObject, removing it from the controlled set

      Parameters

      • options: any = {}

        Options which modify the releasing workflow

      Returns boolean

      A Boolean flag confirming the object was released.

    • Clone the placeable object, returning a new object with identical attributes. The returned object is non-interactive, and has no assigned ID. If you plan to use it permanently you should call the create method.

      Returns PlaceableObject

      A new object with identical data

    • Rotate the PlaceableObject to a certain angle of facing

      Parameters

      • angle: number

        The desired angle of rotation

      • snap: number

        Snap the angle of rotation to a certain target degree increment

      Returns Promise<PlaceableObject>

      The rotated object

    • _updateRotation(options?: { angle: number; delta: number; snap: number }): number
    • Determine a new angle of rotation for a PlaceableObject either from an explicit angle or from a delta offset.

      Parameters

      • options: { angle: number; delta: number; snap: number } = {}

        An object which defines the rotation update parameters

        • angle: number
        • delta: number
        • snap: number

      Returns number

      The new rotation angle for the object

    • _getShiftedPosition(dx: number, dy: number): { x: number; y: number }
    • Obtain a shifted position for the Placeable Object

      Parameters

      • dx: number

        The number of grid units to shift along the X-axis

      • dy: number

        The number of grid units to shift along the Y-axis

      Returns { x: number; y: number }

      The shifted target coordinates

      • x: number
      • y: number
    • activateListeners(): void
    • Activate interactivity for the Placeable Object

      Returns void

    • can(user: User, action: string): boolean
    • Test whether a user can perform a certain interaction regarding a Placeable Object

      Parameters

      • user: User

        The User performing the action

      • action: string

        The named action being attempted

      Returns boolean

      Does the User have rights to perform the action?

    • _applyRenderFlags(flags: any): void
    • Apply render flags before a render occurs.

      Parameters

      • flags: any

        The render flags which must be applied

      Returns void

    • _destroy(options: any): void
    • The inner _destroy method which may optionally be defined by each PlaceableObject subclass.

      Parameters

      • options: any

      Returns void

    • _draw(options: any): Promise<void>
    • The inner _draw method which must be defined by each PlaceableObject subclass.

      abstract

      Parameters

      • options: any

        Options which may modify the draw workflow

      Returns Promise<void>

    • _getTargetAlpha(): number
    • Get the target opacity that should be used for a Placeable Object depending on its preview state.

      Returns number

    • _onCreate(data: any, options: any, userId: string): void
    • Register pending canvas operations which should occur after a new PlaceableObject of this type is created

      Parameters

      • data: any
      • options: any
      • userId: string

      Returns void

    • _onUpdate(data: any, options: any, userId: string): void
    • Define additional steps taken when an existing placeable object of this type is updated with new data

      Parameters

      • data: any
      • options: any
      • userId: string

      Returns void

    • _onDelete(options: any, userId: string): void
    • Define additional steps taken when an existing placeable object of this type is deleted

      Parameters

      • options: any
      • userId: string

      Returns void

    • _onControl(options: any): void
    • Additional events which trigger once control of the object is established

      Parameters

      • options: any

        Optional parameters which apply for specific implementations

      Returns void

    • _onRelease(options: any): void
    • Additional events which trigger once control of the object is released

      Parameters

      • options: any

        Options which modify the releasing workflow

      Returns void

    • _canHUD(user: User, event: any): boolean
    • Can the User access the HUD for this Placeable Object?

      Parameters

      • user: User

        The User performing the action.

      • event: any

        The event object.

      Returns boolean

      The returned status.

    • _canConfigure(user: User, event: any): boolean
    • Does the User have permission to configure the Placeable Object?

      Parameters

      • user: User

        The User performing the action.

      • event: any

        The event object.

      Returns boolean

      The returned status.

    • _canControl(user: User, event: any): boolean
    • Does the User have permission to control the Placeable Object?

      Parameters

      • user: User

        The User performing the action.

      • event: any

        The event object.

      Returns boolean

      The returned status.

    • _canView(user: User, event: any): boolean
    • Does the User have permission to view details of the Placeable Object?

      Parameters

      • user: User

        The User performing the action.

      • event: any

        The event object.

      Returns boolean

      The returned status.

    • _canCreate(user: User, event: any): boolean
    • Does the User have permission to create the underlying Document?

      Parameters

      • user: User

        The User performing the action.

      • event: any

        The event object.

      Returns boolean

      The returned status.

    • _canDrag(user: User, event: any): boolean
    • Does the User have permission to drag this Placeable Object?

      Parameters

      • user: User

        The User performing the action.

      • event: any

        The event object.

      Returns boolean

      The returned status.

    • _canHover(user: User, event: any): boolean
    • Does the User have permission to hover on this Placeable Object?

      Parameters

      • user: User

        The User performing the action.

      • event: any

        The event object.

      Returns boolean

      The returned status.

    • _canUpdate(user: User, event: any): boolean
    • Does the User have permission to update the underlying Document?

      Parameters

      • user: User

        The User performing the action.

      • event: any

        The event object.

      Returns boolean

      The returned status.

    • _canDelete(user: User, event: any): boolean
    • Does the User have permission to delete the underlying Document?

      Parameters

      • user: User

        The User performing the action.

      • event: any

        The event object.

      Returns boolean

      The returned status.

    • _onHoverIn(event: FederatedEvent, options?: { hoverOutOthers: boolean }): boolean
    • Actions that should be taken for this Placeable Object when a mouseover event occurs. Hover events on PlaceableObject instances allow event propagation by default.

      see

      MouseInteractionManager##handleMouseOver

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      • options: { hoverOutOthers: boolean } = {}

        Options which customize event handling

        • hoverOutOthers: boolean

      Returns boolean

      True if the event was handled, otherwise false

    • _onHoverOut(event: FederatedEvent): boolean
    • Actions that should be taken for this Placeable Object when a mouseout event occurs

      see

      MouseInteractionManager##handleMouseOut

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      Returns boolean

      True if the event was handled, otherwise false

    • _propagateLeftClick(event: FederatedEvent): boolean
    • Should the placeable propagate left click downstream?

      Parameters

      • event: FederatedEvent

      Returns boolean

    • _onClickLeft(event: FederatedEvent): void
    • Callback actions which occur on a single left-click event to assume control of the object

      see

      MouseInteractionManager##handleClickLeft

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      Returns void

    • _onClickLeft2(event: FederatedEvent): void
    • Callback actions which occur on a double left-click event to activate

      see

      MouseInteractionManager##handleClickLeft2

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      Returns void

    • _propagateRightClick(event: FederatedEvent): boolean
    • Should the placeable propagate right click downstream?

      Parameters

      • event: FederatedEvent

      Returns boolean

    • _onClickRight(event: FederatedEvent): void
    • Callback actions which occur on a single right-click event to configure properties of the object

      see

      MouseInteractionManager##handleClickRight

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      Returns void

    • _onClickRight2(event: FederatedEvent): void
    • Callback actions which occur on a double right-click event to configure properties of the object

      see

      MouseInteractionManager##handleClickRight2

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      Returns void

    • _onDragLeftStart(event: FederatedEvent): any
    • Callback actions which occur when a mouse-drag action is first begun.

      see

      MouseInteractionManager##handleDragStart

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      Returns any

    • _onDragStart(): void
    • Begin a drag operation from the perspective of the preview clone. Modify the appearance of both the clone (this) and the original (_original) object.

      Returns void

    • _onDragEnd(): void
    • Conclude a drag operation from the perspective of the preview clone. Modify the appearance of both the clone (this) and the original (_original) object.

      Returns void

    • _onDragLeftMove(event: FederatedEvent): any
    • Callback actions which occur on a mouse-move operation.

      see

      MouseInteractionManager##handleDragMove

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      Returns any

    • _onDragLeftDrop(event: FederatedEvent): Promise<any>
    • Callback actions which occur on a mouse-move operation.

      see

      MouseInteractionManager##handleDragDrop

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      Returns Promise<any>

    • _onDragLeftCancel(event: FederatedEvent): any
    • Callback actions which occur on a mouse-move operation.

      see

      MouseInteractionManager##handleDragCancel

      Parameters

      • event: FederatedEvent

        The triggering mouse click event

      Returns any

    • _onLongPress(event: FederatedEvent, origin: Point): any
    • Callback action which occurs on a long press.

      see

      MouseInteractionManager##handleLongPress

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      • origin: Point

        The local canvas coordinates of the mousepress.

      Returns any