@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
36 lines (32 loc) • 1.31 kB
text/typescript
import {Object3D} from 'three';
import {ObjectNamedFunction3} from './_Base';
import {_dummyReadAttributeRefVal} from '../../core/reactivity/ObjectAttributeReactivity';
import {getOrCreateObjectAttributeRef} from '../../core/reactivity/ObjectAttributeReactivityCreateRef';
import {_matchArrayLength, _matchArrayLengthWithType} from './_ArrayUtils';
import {ParamConvertibleJsType} from '../nodes/utils/io/connections/Js';
import {Ref} from '@vue/reactivity';
import {AttribValue} from '../../types/GlobalTypes';
import {getObjectChildrenCountRef} from '../../core/reactivity/ObjectHierarchyReactivity';
import {dummyReadRefVal} from './_Param';
export class getChildrenAttributesRef extends ObjectNamedFunction3<[string, string, Array<Ref<AttribValue>>]> {
static override type() {
return 'getChildrenAttributesRef';
}
func(
object3D: Object3D,
attribName: string,
type: ParamConvertibleJsType,
values: Ref<AttribValue>[]
): Ref<AttribValue>[] {
dummyReadRefVal(getObjectChildrenCountRef(object3D).value);
_matchArrayLengthWithType(object3D.children, values, type);
let i = 0;
const children = object3D.children;
for (let child of children) {
const _refs = getOrCreateObjectAttributeRef(child, attribName, type);
values[i] = _refs.current;
i++;
}
return values;
}
}