1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- var BABYLON;
- (function (BABYLON) {
- var Bone = (function () {
- function Bone(name, skeleton, parentBone, matrix) {
- this.name = name;
- this.children = new Array();
- this.animations = new Array();
- this._worldTransform = new BABYLON.Matrix();
- this._absoluteTransform = new BABYLON.Matrix();
- this._invertedAbsoluteTransform = new BABYLON.Matrix();
- this._skeleton = skeleton;
- this._matrix = matrix;
- this._baseMatrix = matrix;
- skeleton.bones.push(this);
- if (parentBone) {
- this._parent = parentBone;
- parentBone.children.push(this);
- }
- else {
- this._parent = null;
- }
- this._updateDifferenceMatrix();
- }
- // Members
- Bone.prototype.getParent = function () {
- return this._parent;
- };
- Bone.prototype.getLocalMatrix = function () {
- return this._matrix;
- };
- Bone.prototype.getBaseMatrix = function () {
- return this._baseMatrix;
- };
- Bone.prototype.getWorldMatrix = function () {
- return this._worldTransform;
- };
- Bone.prototype.getInvertedAbsoluteTransform = function () {
- return this._invertedAbsoluteTransform;
- };
- Bone.prototype.getAbsoluteMatrix = function () {
- var matrix = this._matrix.clone();
- var parent = this._parent;
- while (parent) {
- matrix = matrix.multiply(parent.getLocalMatrix());
- parent = parent.getParent();
- }
- return matrix;
- };
- // Methods
- Bone.prototype.updateMatrix = function (matrix) {
- this._matrix = matrix;
- this._skeleton._markAsDirty();
- this._updateDifferenceMatrix();
- };
- Bone.prototype._updateDifferenceMatrix = function () {
- if (this._parent) {
- this._matrix.multiplyToRef(this._parent._absoluteTransform, this._absoluteTransform);
- }
- else {
- this._absoluteTransform.copyFrom(this._matrix);
- }
- this._absoluteTransform.invertToRef(this._invertedAbsoluteTransform);
- for (var index = 0; index < this.children.length; index++) {
- this.children[index]._updateDifferenceMatrix();
- }
- };
- Bone.prototype.markAsDirty = function () {
- this._skeleton._markAsDirty();
- };
- return Bone;
- })();
- BABYLON.Bone = Bone;
- })(BABYLON || (BABYLON = {}));
- //# sourceMappingURL=babylon.bone.js.map
|