В выходные было мало времени для кодинга, поэтому успел сделать не много (я моделил лого =) ). Переделал код из предыдущего поста.
Во-первых, проверил, что переданные параметры являются объектом:
if ( !(params instanceof Object) ) {
console.error( 'params must be an object. Now params are ' + typeof params );
return;
}
Вместо того, чтобы руками забивать параметры для каждого стандартного объекта, я создаю его геометрию, беру список параметров, создаю новый объект с этими параметрами
geometry = new THREE.BoxGeometry(); Object.assign( data, geometry.parameters ); geometry.dispose();
Для каждого ключа в этом объекте проверяю его наличие в переданном объекте с параметрами, если он есть, присваиваю значение, если нет — выкидываю предупреждение, значение остается undefined. Данная проверка для разработчика, а не для пользователя.
for (const key in data) {
if ( params.hasOwnProperty(key) ) {
data[ key ] = params[ key ];
}
else {
console.warn( 'Parameter "' + key + '" is missing ' );
}
}
В TA_UI добавил проверку, что объект пришел с параметрами
createParametersMenu( entity ) {
if ( !entity.geometry.parameters) {
console.warn( "No Params" );
return;
}
…
