Gyroscope class
@author alteredq / http://alteredqualia.com/
class Gyroscope extends Object3D { Vector3 translationWorld, translationObject; Quaternion rotationWorld, rotationObject; Vector3 scaleWorld, scaleObject; Gyroscope() : translationWorld = new Vector3.zero(), translationObject = new Vector3.zero(), rotationWorld = new Quaternion.identity(), rotationObject = new Quaternion.identity(), scaleWorld = new Vector3.zero(), scaleObject = new Vector3.zero(), super(); updateMatrixWorld( {bool force: false} ) { if (matrixAutoUpdate) { updateMatrix(); } // update matrixWorld if ( matrixWorldNeedsUpdate || force ) { if ( parent != null ) { matrixWorld = parent.matrixWorld * matrix; decompose( matrixWorld, translationWorld, rotationWorld, scaleWorld ); decompose( matrix, translationObject, rotationObject, scaleObject ); compose( matrixWorld, translationWorld, rotationObject, scaleWorld ); } else { matrixWorld.setFrom( matrix ); } matrixWorldNeedsUpdate = false; force = true; } // update children var l = this.children.length; for ( var i = 0; i < l; i ++ ) { children[ i ].updateMatrixWorld( force ); } } }
Extends
Object3D > Gyroscope
Constructors
new Gyroscope() #
Creates a new Object instance.
Object instances have no meaningful state, and are only useful through their identity. An Object instance is equal to itself only.
docs inherited from Object
Gyroscope() : translationWorld = new Vector3.zero(), translationObject = new Vector3.zero(), rotationWorld = new Quaternion.identity(), rotationObject = new Quaternion.identity(), scaleWorld = new Vector3.zero(), scaleObject = new Vector3.zero(), super();
Properties
bool frustumCulled #
inherited from Object3D
bool visible = false, castShadow = false, receiveShadow = false, frustumCulled = false
bool isDynamic #
inherited from Object3D
bool get isDynamic => _dynamic;
set isDynamic(bool flag) => _dynamic = flag;
Matrix4 matrixRotationWorld #
inherited from Object3D
Matrix4 matrix, matrixWorld, matrixRotationWorld
bool matrixWorldNeedsUpdate #
inherited from Object3D
bool matrixAutoUpdate = false, matrixWorldNeedsUpdate = false
bool receiveShadow #
inherited from Object3D
bool visible = false, castShadow = false, receiveShadow = false
bool rotationAutoUpdate #
inherited from Object3D
bool _dynamic, doubleSided, flipSided, rotationAutoUpdate
Quaternion rotationObject #
Quaternion rotationWorld, rotationObject
Quaternion rotationWorld #
Quaternion rotationWorld
Operators
Methods
void add(Object3D object) #
inherited from Object3D
void add( Object3D object ) { if ( object == this ) { print( 'THREE.Object3D.add: An object can\'t be added as a child of itself.' ); return; } if ( object.parent != null ) { object.parent.remove( object ); } object.parent = this; children.add( object ); // add to scene Object3D scene = this; while ( scene.parent != null ) { scene = scene.parent; } if ( scene is Scene ) { scene.addObject( object ); } }
void applyMatrix(Matrix4 matrix) #
inherited from Object3D
void applyMatrix ( Matrix4 matrix ) { this.matrix = matrix * this.matrix; this.scale = getScaleFromMatrix( this.matrix ); Matrix4 mat = extractRotation(new Matrix4.identity(), this.matrix ); this.rotation = calcEulerFromRotationMatrix( mat, this.eulerOrder ); this.position = this.matrix.getTranslation(); }
Object3D getChildByName(String name, bool doRecurse) #
inherited from Object3D
Object3D getChildByName( String name, bool doRecurse ) { int c; int cl = children.length; Object3D child, recurseResult; children.forEach((child){ if ( child.name == name ) { return child; } if ( doRecurse ) { recurseResult = child.getChildByName( name, doRecurse ); if ( recurseResult != null ) { return recurseResult; } } }); return null; }
dynamic localToWorld(Vector3 vector) #
inherited from Object3D
localToWorld(Vector3 vector) => vector.applyProjection(matrixWorld);
void lookAt(Vector3 vector) #
inherited from Object3D
void lookAt( Vector3 vector ) { // TODO: Add hierarchy support. makeLookAt( matrix, vector, position, up ); if ( rotationAutoUpdate ) { if(useQuaternion) quaternion.setFromRotationMatrix(matrix); else rotation = calcEulerFromRotationMatrix( matrix, eulerOrder ); } }
void remove(Object3D object) #
inherited from Object3D
void remove( Object3D object ) { int index = children.indexOf( object ); if ( index != - 1 ){ object.parent = null; children.removeAt(index); // remove from scene Object3D scene = this; while ( scene.parent != null ) { scene = scene.parent; } if (scene is Scene ) { scene.removeObject( object ); } } }
void translate(num distance, Vector3 axis) #
inherited from Object3D
void translate( num distance, Vector3 axis ) { matrix.rotate3( axis ); axis.normalize(); position.add( axis.scale( distance ) ); }
void translateX(num distance) #
inherited from Object3D
void translateX( num distance ) => translate( distance, _vector.setValues( 1.0, 0.0, 0.0 ) );
void translateY(num distance) #
inherited from Object3D
void translateY( num distance ) => translate( distance, _vector.setValues( 0.0, 1.0, 0.0 ) );
void translateZ(num distance) #
inherited from Object3D
void translateZ( num distance ) => translate( distance, _vector.setValues( 0.0, 0.0, 1.0 ) );
void updateMatrix() #
inherited from Object3D
void updateMatrix() { if ( useQuaternion ) { setRotationFromQuaternion( matrix, quaternion ); } else { setRotationFromEuler( matrix, rotation, eulerOrder ); } matrix.setTranslation( position ); if ( scale.x != 1.0 || scale.y != 1.0 || scale.z != 1.0 ) { matrix.scale( scale ); boundRadiusScale = Math.max( scale.x, Math.max( scale.y, scale.z ) ); } matrixWorldNeedsUpdate = true; }
dynamic updateMatrixWorld({bool force: false}) #
updateMatrixWorld( {bool force: false} ) { if (matrixAutoUpdate) { updateMatrix(); } // update matrixWorld if ( matrixWorldNeedsUpdate || force ) { if ( parent != null ) { matrixWorld = parent.matrixWorld * matrix; decompose( matrixWorld, translationWorld, rotationWorld, scaleWorld ); decompose( matrix, translationObject, rotationObject, scaleObject ); compose( matrixWorld, translationWorld, rotationObject, scaleWorld ); } else { matrixWorld.setFrom( matrix ); } matrixWorldNeedsUpdate = false; force = true; } // update children var l = this.children.length; for ( var i = 0; i < l; i ++ ) { children[ i ].updateMatrixWorld( force ); } }