/**
A **Group** is an {{#crossLink "Object"}}{{/crossLink}} that groups other Objects.
Group is subclassed by (at least) {{#crossLink "Model"}}{{/crossLink}}, which is the abstract base class for {{#crossLink "GLTFModel"}}{{/crossLink}}, {{#crossLink "STLModel"}}{{/crossLink}} etc.
See {{#crossLink "Object"}}{{/crossLink}} for overall usage info.
@class Group
@module xeogl
@submodule objects
@constructor
@param [owner] {Component} Owner component. When destroyed, the owner will destroy this component as well. Creates this component within the default {{#crossLink "Scene"}}{{/crossLink}} when omitted.
@param [cfg] {*} Configs
@param [cfg.id] {String} Optional ID, unique among all components in the parent scene, generated automatically when omitted.
@param [cfg.meta] {String:Object} Optional map of user-defined metadata.
@param [cfg.entityType] {String} Optional entity classification when using within a semantic data model. See the {{#crossLink "Object"}}{{/crossLink}} documentation for usage.
@param [cfg.parent] {Object} The parent.
@param [cfg.position=[0,0,0]] {Float32Array} Local 3D position.
@param [cfg.scale=[1,1,1]] {Float32Array} Local scale.
@param [cfg.rotation=[0,0,0]] {Float32Array} Local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.
@param [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1] {Float32Array} Local modelling transform matrix. Overrides the position, scale and rotation parameters.
@param [cfg.visible=true] {Boolean} Indicates if visible.
@param [cfg.culled=false] {Boolean} Indicates if culled from view.
@param [cfg.pickable=true] {Boolean} Indicates if pickable.
@param [cfg.clippable=true] {Boolean} Indicates if clippable.
@param [cfg.collidable=true] {Boolean} Indicates if included in boundary calculations.
@param [cfg.castShadow=true] {Boolean} Indicates if casting shadows.
@param [cfg.receiveShadow=true] {Boolean} Indicates if receiving shadows.
@param [cfg.outlined=false] {Boolean} Indicates if outline is rendered.
@param [cfg.ghosted=false] {Boolean} Indicates if rendered as ghosted.
@param [cfg.highlighted=false] {Boolean} Indicates if rendered as highlighted.
@param [cfg.selected=false] {Boolean} Indicates if rendered as selected.
@param [cfg.edges=false] {Boolean} Indicates if edges are emphasized.
@param [cfg.aabbVisible=false] {Boolean} Indicates if axis-aligned World-space bounding box is visible.
@param [cfg.obbVisible=false] {Boolean} Indicates if oriented World-space bounding box is visible.
@param [cfg.colorize=[1.0,1.0,1.0]] {Float32Array} RGB colorize color, multiplies by the rendered fragment colors.
@param [cfg.opacity=1.0] {Number} Opacity factor, multiplies by the rendered fragment alpha.
@param [cfg.children] {Array(Object)} Children to add. Children must be in the same {{#crossLink "Scene"}}{{/crossLink}} and will be removed from whatever parents they may already have.
@param [cfg.inheritStates=true] {Boolean} Indicates if children given to this constructor should inherit state from this parent as they are added. State includes {{#crossLink "Object/visible:property"}}{{/crossLink}}, {{#crossLink "Object/culled:property"}}{{/crossLink}}, {{#crossLink "Object/pickable:property"}}{{/crossLink}},
{{#crossLink "Object/clippable:property"}}{{/crossLink}}, {{#crossLink "Object/castShadow:property"}}{{/crossLink}}, {{#crossLink "Object/receiveShadow:property"}}{{/crossLink}},
{{#crossLink "Object/outlined:property"}}{{/crossLink}}, {{#crossLink "Object/ghosted:property"}}{{/crossLink}}, {{#crossLink "Object/highlighted:property"}}{{/crossLink}},
{{#crossLink "Object/selected:property"}}{{/crossLink}}, {{#crossLink "Object/colorize:property"}}{{/crossLink}} and {{#crossLink "Object/opacity:property"}}{{/crossLink}}.
@extends Object
*/
import {xeoglObject} from "./object.js";
import {componentClasses} from "./../componentClasses.js";
const type = "xeogl.Group";
class Group extends xeoglObject{
/**
JavaScript class name for this Component.
For example: "xeogl.AmbientLight", "xeogl.MetallicMaterial" etc.
@property type
@type String
@final
*/
get type() {
return type;
}
init(cfg) {
super.init(cfg);
}
}
componentClasses[type] = Group;
export {Group};