editor › Globals › IPositionableElement
Interface: IPositionableElement
If a model element can be localized, e.g. one can say that the element has a position rotation etc, it should implement this interface.
ToDo: This could also be more conveniently done with an abstract class - so we could do run-time type checking ToDo: and implement the event logic here to easily enforce the behavior specified in comments
Hierarchy
↳ IPositionableElement
Implemented by
- AbstractOrnamentDescriptor
- ExternalObjectDescriptor
- ImportedModelDescriptor
- LocalOrnamentDescriptor
- MakerAsset
- Mesh
- OrnamentDescriptor
- PolygonOrnamentDescriptor
- SingleSurfaceDescriptor
- SvgSurfaceDescriptor
Index
Methods
- destroy
- disable
- enable
- getAssembly
- getChangeEventEmitter
- getElementsThisDependsOn
- getIsValid
- getParent
- getTransforms
- getTransformsChangeEventEmitter
- getTransformsDefiner
- isEnabled
- setAssembly
- setTransformsDefiner
Methods
destroy
▸ destroy(): void
Inherited from IModelElement.destroy
Defined in src/model/data/Concepts/IModelElement.ts:64
This method should be called right before the model element's subgraph is removed from the assembly. In it, the ModelElement should destroy all anchors and deregister from any events to prevent memory leaks.
Returns: void
Optional disable
▸ disable(realizer1: any): void
Inherited from IModelElement.disable
Defined in src/model/data/Concepts/IModelElement.ts:70
Do not realize and undo realization. Used to disable realization persistently (eg a parametric hole disables other ornaments).
Parameters:
| Name | Type |
|---|---|
realizer1 |
any |
Returns: void
Optional enable
▸ enable(): void
Inherited from IModelElement.enable
Defined in src/model/data/Concepts/IModelElement.ts:75
Enable realization again and emit a change event.
Returns: void
getAssembly
▸ getAssembly(): Assembly
Inherited from IModelElement.getAssembly
Defined in src/model/data/Concepts/IModelElement.ts:47
Get the assembly this concept belongs to
Returns: Assembly
getChangeEventEmitter
▸ getChangeEventEmitter(): IPublicEventEmitterInterface‹IModelElementEvent›
Inherited from IModelElement.getChangeEventEmitter
Defined in src/model/data/Concepts/IModelElement.ts:42
Should be emitted when the model element changes, so that the realization can be updated. As invalidity should not cause destructive actions, the event should not be emitted if the model element became invalid.
Returns: IPublicEventEmitterInterface‹IModelElementEvent›
getElementsThisDependsOn
▸ getElementsThisDependsOn(): IModelElement[]
Inherited from IModelElement.getElementsThisDependsOn
Defined in src/model/data/Concepts/IModelElement.ts:35
A model element may depend on other model elements, i.e. if a model element A links to another ModelElement B with an anchor (and B being the anchor's target), A depends on B.
Such dependencies should make sense semantically, e.g. an Ornament depends on a Mesh via an anchor that points to a specific place on the mesh. They are used to determine the order in which model elements are realized.
ToDo: for the sake of consistency, one could refactor this to getModelElementDependencyDefiners, as with ToDo: IPositionableElement.getTransformsDefiner()
Returns: IModelElement[]
getIsValid
▸ getIsValid(): boolean
Inherited from IModelElement.getIsValid
Defined in src/model/data/Concepts/IModelElement.ts:58
Returns: boolean
whether the model element currently is valid or not. As with IAnchor.getIsValid(), this should be lazily evaluated and no destructive action should be automatically performed if a ModelElement is invalid.
getParent
▸ getParent(): ITransformable | null
Inherited from ITransformable.getParent
Defined in src/util/Transforms.ts:27
The parent of the coordinate system (where global points to). The graph connecting all transforms has to be a tree.
Returns: ITransformable | null
parent in next higher space (global) or null if at root space
getTransforms
▸ getTransforms(): IReadOnlyTransforms
Inherited from ITransformable.getTransforms
Defined in src/util/Transforms.ts:20
Returns: IReadOnlyTransforms
the transform from next higher space (global) to local space
getTransformsChangeEventEmitter
▸ getTransformsChangeEventEmitter(): IPublicEventEmitterInterface‹ITransformsChangeEvent›
Inherited from IPositionable.getTransformsChangeEventEmitter
Defined in src/model/data/Concepts/IPositionable.ts:31
If the IPositionable changes it transforms because the transforms defining anchor changed them, it must emit this event. Other anchors pointing to this element or external listeners may subscribe to this event.
see TransformsChangeEvent to check what fields have to be provided
The elements's getChangeEventEmitter() event must not be fired if only the transforms changed.
Returns: IPublicEventEmitterInterface‹ITransformsChangeEvent›
getTransformsDefiner
▸ getTransformsDefiner(): IPositionableElementTransformsDefiner
Inherited from IPositionable.getTransformsDefiner
Defined in src/model/data/Concepts/IPositionable.ts:18
The IPositionable must always be able to specify one anchor that determines its transforms.
Changes in the transforms defined by this IPositionableElementTransformsDefiner must be propagated via the IPositionableElement.getTransformsChangeEventEmitter() event.
WARNING: If you want an anchor / other element to depend on this element's transforms, never directly listen to events emitted by its transformsDefiner but instead listen to getTransformsChangeEventEmitter of the model element itself, as it may replace its transformsDefiner at any time. Use the @see PositionableElementAnchor as a basic implementation.
Returns: IPositionableElementTransformsDefiner
Optional isEnabled
▸ isEnabled(): boolean
Inherited from IModelElement.isEnabled
Defined in src/model/data/Concepts/IModelElement.ts:80
Whether the realization is enabled.
Returns: boolean
setAssembly
▸ setAssembly(assembly: Assembly): any
Inherited from IModelElement.setAssembly
Defined in src/model/data/Concepts/IModelElement.ts:52
Change the assembly this element belongs to. This should only be called by assemblies themselves.
Parameters:
| Name | Type |
|---|---|
assembly |
Assembly |
Returns: any
setTransformsDefiner
▸ setTransformsDefiner(transformsDefiner: IPositionableElementTransformsDefiner): this
Inherited from IPositionable.setTransformsDefiner
Defined in src/model/data/Concepts/IPositionable.ts:20
Parameters:
| Name | Type |
|---|---|
transformsDefiner |
IPositionableElementTransformsDefiner |
Returns: this