quaternion updates
parent
9625c5a3b3
commit
49c35fb35c
|
@ -84,7 +84,7 @@ GameLib.Utils.LoadIdsFromArrayToIdObject = function(array, idToObject) {
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (typeof object === 'string') {
|
} else if (typeof object === 'string') {
|
||||||
console.warn('Linked object found:' + object);
|
// console.warn('Linked object found:' + object);
|
||||||
} else {
|
} else {
|
||||||
console.warn('Unhandled type of object: ', object);
|
console.warn('Unhandled type of object: ', object);
|
||||||
}
|
}
|
||||||
|
@ -115,7 +115,7 @@ GameLib.Utils.LoadIdsFromObjectToIdObject = function(object, idToObject) {
|
||||||
console.warn('Object with no ID passed: ' + object)
|
console.warn('Object with no ID passed: ' + object)
|
||||||
}
|
}
|
||||||
} else if (typeof object === 'string') {
|
} else if (typeof object === 'string') {
|
||||||
console.warn('Linked object found:' + object);
|
// console.warn('Linked object found:' + object);
|
||||||
} else {
|
} else {
|
||||||
console.warn('Unhandled type of object: ', object);
|
console.warn('Unhandled type of object: ', object);
|
||||||
}
|
}
|
||||||
|
@ -178,6 +178,35 @@ GameLib.Utils.IdOrNull = function (object) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Limit a property to values between -pi and +pi
|
||||||
|
* @param property
|
||||||
|
* @param objectProperty
|
||||||
|
* @returns {{configurable?: boolean, enumerable?: boolean, value?, writable?: boolean, get?: Function, set?: Function}}
|
||||||
|
* @constructor
|
||||||
|
*/
|
||||||
|
GameLib.Utils.LimitToPI = function(property, objectProperty) {
|
||||||
|
|
||||||
|
var store = objectProperty;
|
||||||
|
|
||||||
|
return {
|
||||||
|
get : function() {
|
||||||
|
return store;
|
||||||
|
},
|
||||||
|
set : function(value) {
|
||||||
|
while (value > Math.PI) {
|
||||||
|
value -= (Math.PI * 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
while (value < -(Math.PI)) {
|
||||||
|
value += (Math.PI * 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
store = value;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an array of IDs representing the objects
|
* Returns an array of IDs representing the objects
|
||||||
* @param array
|
* @param array
|
||||||
|
|
|
@ -125,44 +125,22 @@ GameLib.D3.Mesh = function (
|
||||||
this
|
this
|
||||||
);
|
);
|
||||||
|
|
||||||
var limitToPI = function(property, objectProperty) {
|
|
||||||
|
|
||||||
var store = objectProperty;
|
|
||||||
|
|
||||||
return {
|
|
||||||
get : function() {
|
|
||||||
return store;
|
|
||||||
},
|
|
||||||
set : function(value) {
|
|
||||||
while (value > Math.PI) {
|
|
||||||
value -= (Math.PI * 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
while (value < -(Math.PI)) {
|
|
||||||
value += (Math.PI * 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
store = value;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
Object.defineProperty(
|
Object.defineProperty(
|
||||||
this.localRotation,
|
this.localRotation,
|
||||||
'x',
|
'x',
|
||||||
limitToPI('x', this.localRotation.x)
|
GameLib.Utils.LimitToPI('x', this.localRotation.x)
|
||||||
);
|
);
|
||||||
|
|
||||||
Object.defineProperty(
|
Object.defineProperty(
|
||||||
this.localRotation,
|
this.localRotation,
|
||||||
'y',
|
'y',
|
||||||
limitToPI('y', this.localRotation.y)
|
GameLib.Utils.LimitToPI('y', this.localRotation.y)
|
||||||
);
|
);
|
||||||
|
|
||||||
Object.defineProperty(
|
Object.defineProperty(
|
||||||
this.localRotation,
|
this.localRotation,
|
||||||
'z',
|
'z',
|
||||||
limitToPI('z', this.localRotation.z)
|
GameLib.Utils.LimitToPI('z', this.localRotation.z)
|
||||||
);
|
);
|
||||||
|
|
||||||
this.localScale = new GameLib.Vector3(
|
this.localScale = new GameLib.Vector3(
|
||||||
|
|
|
@ -61,29 +61,29 @@ GameLib.EntityManager.prototype.registerComponent = function(data) {
|
||||||
|
|
||||||
GameLib.EntityManager.prototype.removeComponent = function(data) {
|
GameLib.EntityManager.prototype.removeComponent = function(data) {
|
||||||
|
|
||||||
if (data.component instanceof GameLib.Entity) {
|
// if (data.component instanceof GameLib.Entity) {
|
||||||
|
//
|
||||||
/**
|
// /**
|
||||||
* if this is an entity - remove all its children components first
|
// * if this is an entity - remove all its children components first
|
||||||
*/
|
// */
|
||||||
data.component.components.map(
|
// data.component.components.map(
|
||||||
function(component) {
|
// function(component) {
|
||||||
var index = this.register.indexOf(component);
|
// var index = this.register.indexOf(component);
|
||||||
|
//
|
||||||
if (index !== -1) {
|
// if (index !== -1) {
|
||||||
|
//
|
||||||
this.register.splice(index, 1);
|
// this.register.splice(index, 1);
|
||||||
|
//
|
||||||
GameLib.Event.Emit(
|
// GameLib.Event.Emit(
|
||||||
GameLib.Event.REGISTER_UPDATE,
|
// GameLib.Event.REGISTER_UPDATE,
|
||||||
{
|
// {
|
||||||
register : this.register
|
// register : this.register
|
||||||
}
|
// }
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
}.bind(this)
|
// }.bind(this)
|
||||||
)
|
// )
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (data.component.parentEntity instanceof GameLib.Entity) {
|
if (data.component.parentEntity instanceof GameLib.Entity) {
|
||||||
data.component.parentEntity.removeComponent(data.component);
|
data.component.parentEntity.removeComponent(data.component);
|
||||||
|
|
|
@ -56,6 +56,12 @@ GameLib.Quaternion = function (
|
||||||
this.grain
|
this.grain
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Object.defineProperty(
|
||||||
|
this,
|
||||||
|
'angle',
|
||||||
|
GameLib.Utils.LimitToPI('angle', this.angle)
|
||||||
|
);
|
||||||
|
|
||||||
if (GameLib.Utils.UndefinedOrNull(grain)) {
|
if (GameLib.Utils.UndefinedOrNull(grain)) {
|
||||||
grain = 0.001;
|
grain = 0.001;
|
||||||
}
|
}
|
||||||
|
|
|
@ -194,12 +194,20 @@ GameLib.System.GUI.prototype.onChange = function(property, subProperty, affected
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
GameLib.System.GUI.prototype.controller = function(folder, object, property, subProperty, step, listen, affected) {
|
GameLib.System.GUI.prototype.controller = function(folder, object, property, subProperty, step, listen, affected, min, max) {
|
||||||
|
|
||||||
var min = -100;
|
if (GameLib.Utils.UndefinedOrNull(min)) {
|
||||||
var max = 100;
|
min = -100;
|
||||||
|
}
|
||||||
|
|
||||||
if (property === 'localRotation') {
|
if (GameLib.Utils.UndefinedOrNull(max)) {
|
||||||
|
max = 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (
|
||||||
|
property === 'localRotation'
|
||||||
|
) {
|
||||||
min = -Math.PI;
|
min = -Math.PI;
|
||||||
max = Math.PI;
|
max = Math.PI;
|
||||||
}
|
}
|
||||||
|
@ -260,7 +268,7 @@ GameLib.System.GUI.prototype.buildQuaternionControl = function(folder, component
|
||||||
this.controller(folder, object, property, 'y', step, listen, affected);
|
this.controller(folder, object, property, 'y', step, listen, affected);
|
||||||
this.controller(folder, object, property, 'z', step, listen, affected);
|
this.controller(folder, object, property, 'z', step, listen, affected);
|
||||||
this.controller(folder, object, property, 'w', step, listen, affected);
|
this.controller(folder, object, property, 'w', step, listen, affected);
|
||||||
this.controller(folder, object, property, 'angle', step, listen, affected);
|
this.controller(folder, object, property, 'angle', 0.001, listen, affected, -Math.PI, Math.PI);
|
||||||
|
|
||||||
folder.add(
|
folder.add(
|
||||||
object[property]['axis'],
|
object[property]['axis'],
|
||||||
|
@ -268,7 +276,7 @@ GameLib.System.GUI.prototype.buildQuaternionControl = function(folder, component
|
||||||
-1,
|
-1,
|
||||||
1,
|
1,
|
||||||
0.01
|
0.01
|
||||||
).onChange(
|
).name('quaternion.axis.x').onChange(
|
||||||
function(value) {
|
function(value) {
|
||||||
affected.map(function(component){
|
affected.map(function(component){
|
||||||
component[property]['axis'].x = Number(value);
|
component[property]['axis'].x = Number(value);
|
||||||
|
@ -283,7 +291,7 @@ GameLib.System.GUI.prototype.buildQuaternionControl = function(folder, component
|
||||||
-1,
|
-1,
|
||||||
1,
|
1,
|
||||||
0.01
|
0.01
|
||||||
).onChange(
|
).name('quaternion.axis.y').onChange(
|
||||||
function(value) {
|
function(value) {
|
||||||
affected.map(function(component){
|
affected.map(function(component){
|
||||||
component[property]['axis'].y = Number(value);
|
component[property]['axis'].y = Number(value);
|
||||||
|
@ -298,7 +306,7 @@ GameLib.System.GUI.prototype.buildQuaternionControl = function(folder, component
|
||||||
-1,
|
-1,
|
||||||
1,
|
1,
|
||||||
0.01
|
0.01
|
||||||
).onChange(
|
).name('quaternion.axis.z').onChange(
|
||||||
function(value) {
|
function(value) {
|
||||||
affected.map(function(component){
|
affected.map(function(component){
|
||||||
component[property]['axis'].z = Number(value);
|
component[property]['axis'].z = Number(value);
|
||||||
|
|
Loading…
Reference in New Issue