В выходные было мало времени для кодинга, поэтому успел сделать не много (я моделил лого =) ). Переделал код из предыдущего поста.
Во-первых, проверил, что переданные параметры являются объектом:
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; }
…