IModel

Description

interface Tinman.Engine.Models.IModel

Extended by

Model sealed

Base interface for classes that represent 3D models.

The coordinate space for untransformed 3D models is defined as follows:

  • X+ : points eastwards resp. sidewards.

  • Y+ : points upwards.

  • Z- : points northwards resp. forwards.

The ground level is expected to be at Y-coordinate zero.

Public / Methods

ChildAt


[Pure]
public method ChildAt → (1)

index in : int32

[0..IModel.ChildCount-1]
The child model index.

returns → IModel

The child model.

Returns the index in-th child model.

ChildTransformAt


[Pure]
public method ChildTransformAt → (1)

index in : int32

[0..IModel.ChildCount-1]
The child model index.

returns → AffineTransform

The transformation from the child model to this model as parent.

Returns the child-to-parent transformation matrix of the index in-th child model.

The transformation matrix uses the unit of measure of the parent model (see Unit).

See also

IModel.ChildAt

ColliderLoad


public method ColliderLoad → (1)

data in : ISerializable

The precomputed spatial data structures.

Initializes the Collider object from the given precomputed spatial data structures.

As an alternative to this method, the ModelFlags.ComplexGeometry flag may be used.

If the given data in is unsuitable, this method will return silently and a new IModelCollider will be computed.

PartAt


[Pure]
public method PartAt → (1)

index in : int32

[0..IModel.PartCount-1]
The model part index.

returns → IModelPart

The model part.

Returns the index in-th model part.

PrepareLazy


public method PrepareLazy → ()

returns → IModel

this

Prepares all lazy-loaded data for this model.

IOException

If an I/O error has occurred while lazy-loading model data.

UseGeometryInstancing


public method UseGeometryInstancing → (1)

instanceBuffer in : IResourceHandle

The resource handle that returns an IVertexBuffer object that holds instance data to use for this model object or null to disable geometry instancing. The instanceBuffer in value will be returned by the IModelGeometry.InstanceBuffer property of the geometry objects of the returned model and all its descendants.

returns → IModel

The resulting model.

Configures geometry instancing for this model.

Public / Attributes

ChildCount


public attribute ChildCount → (get)

value : int32

[>=0]
The child model count.

The number of child models.

Collider


public attribute Collider → (get)

value : IModelCollider

[not-null]
The collider object.

The collider object for this model.

Flags


public attribute Flags → (get)

value : ModelFlags

The model flags.

The model flags.

Name


public attribute Name → (get)

value : string

The model name, will either be null or non-empty.

The name of this model.

PartCount


public attribute PartCount → (get)

value : int32

[>=0]
The model part count.

The number of model parts.

See also

IModel.PartAt

Unit


public attribute Unit → (get)

value : UnitOfMeasure

The model-space unit. If set to null, the default value is returned instead.

The unit of measure in which model-space coordinates are expressed.

Defaults to UnitOfMeasure.Metre.

Extensions

ChildFor


[Pure]
public static method ChildFor → (1)

name in : string

The model name.

returns → IModel

The first matching child model or null if there is none.

Returns the first child model of the given name (see IModel.Name).

ChildTransformWithUnitScaleAt


[Pure]
public static method ChildTransformWithUnitScaleAt → (1)

index in : int32

[0..model.ChildCount-1]
The child model index.

returns → AffineTransform

The transformation matrix.

Returns the child-to-parent transformation matrix of the index in-th child model.

The transformation matrix uses the unit of measure of the child model (see IModel.Unit).

See also

IModel.ChildAt

Traverse


public static method Traverse → (4)

action in : ModelDelegate

[not-null]
The model action to perform.

includeThis opt : bool = true

Invoke action in for this model?

includeChildren opt : bool = true

Invoke action in for descendant models?

level opt : int32 = 0

[>=0]
The model hierarchy level, where 0 represents the top-most model of the traversal, which is not necessarily the root model of the hierarchy.

Traverses this model hierarchy and performs the given action at each node.

UnitScale


[Pure]
public static method UnitScale → (1)

unit opt : UnitOfMeasure = null

The target unit of measure. If null, metres will be used.

returns → float64

The scale factor from model units to target units.

Returns the scale factor for the give model, based on the specified unit of measure.

Wrap


[OwnerReturn]
public static method Wrap → ()

returns → IModelReader

The IModelReader that wraps this model.

Wraps this model in a IModelReader.