bp-cloner
    Preparing search index...

    Class MatrixCloner

    The MatrixCloner clones and distributes given meshes in 3D space. If more than one mesh is provided, then the corresponding clones will be placed subsequently one after another starting in the x direction followed by y and z direction. The MatrixCloner returns an object with an important property: root. It is an invisible mesh, it's the anchor and parent of all generated clones, its position is the middle position of all generated clones. Transforming this root affects all underlying clones (childs) at once. The given input meshes will be made inactive during construction.

    The array of meshes/cloners to be cloned, meshes will be made inactive after construction.

    Babylon scene.

    The number of clones in x,y and z direction. Default { x: 3, y: 3, z: 3 }.

    The distance from one clone to another in x,y and z direction. Default { x: 2, y: 2, z: 2 }.

    Flag if clones should be technical "clones" or "instances". Default true.

    Flag true if Cloner meshes should be pickable. Default false.

    Hierarchy (View Summary)

    Index

    Constructors

    • Parameters

      • mesh: Mesh[]
      • scene: Scene
      • __namedParameters: {
            iModeRelative?: boolean;
            isPickable?: boolean;
            mcount?: { x: number; y: number; z: number };
            size?: { x: number; y: number; z: number };
            useInstances?: boolean;
        } = {}

      Returns MatrixCloner

    Properties

    _clones: CMesh[]
    _count: undefined | number
    _effectors: IEffector[] = []
    _frame: number
    _index: number
    _mesh: Mesh[] = []
    _rootNode: null | Mesh = null
    _scene: Scene
    instance_nr: number
    vOne: Vector3 = ...
    vZero: Vector3 = ...

    Accessors

    • get root(): null | Mesh

      Gets Cloner's root - an invisible mesh, the anchor and parent of all generated instances/clones. Transforming this root affects all underlying clones (childs) at once.

      Returns null | Mesh

    • get state(): {
          mcount: { x: number; y: number; z: number };
          size: { x: number; y: number; z: number };
      }

      Returns {
          mcount: { x: number; y: number; z: number };
          size: { x: number; y: number; z: number };
      }

    Methods

    • set the cloner's root node to the state of the flag (true=enabled)

      Parameters

      • enabled: boolean

      Returns void

    • Returns an array of matrices (scaling, rotation, position) of the Cloner meshes.

      Returns Matrix[]

    • Converts the Cloner to thin instances, then deletes this Cloner and returns an array of Cloner meshes. The source meshes are cloned, their clones set enabled. To display them use addSelf = true. All cloned source meshes get the new parent with the rootName. Be aware that the original Cloner will be disposed, so Cloner methods will not work anymore. Use the root node and its individual child meshes for further processing.

      Parameters

      • OptionaladdSelf: boolean

        If true, adds the source mesh to the matrix. Default false.

      • OptionalrootName: string

        Allow to define the name of the root mesh which will be the parent of cloned source meshes and all thin instances. If empty, Cloner class name will be used for the name.

      Returns Mesh[]

    • Converts all Cloner meshes to thin instances from the original meshes, then deletes this Cloner and returns an array of Cloner meshes. Be aware that instances of all those original meshes become disabled as well, so if they are used in other Cloners one may want to use toThin() method instead. If you don't need animations and so on you may convert Cloner to thin instances. It greatly reduces the number of objects iterating in the render loop.

      Parameters

      • OptionaladdSelf: boolean

        If true, adds the source mesh to the matrix. Default false.

      Returns Mesh[]

      The array of original meshes: Mesh[]