@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
66 lines (65 loc) • 2.54 kB
JavaScript
;
import { incrementRefSafely, ref } from "../../core/reactivity/CoreReactivity";
export var GetObjectPropertyJsNodeInputName = /* @__PURE__ */ ((GetObjectPropertyJsNodeInputName2) => {
GetObjectPropertyJsNodeInputName2["position"] = "position";
GetObjectPropertyJsNodeInputName2["rotation"] = "rotation";
GetObjectPropertyJsNodeInputName2["quaternion"] = "quaternion";
GetObjectPropertyJsNodeInputName2["scale"] = "scale";
GetObjectPropertyJsNodeInputName2["matrix"] = "matrix";
GetObjectPropertyJsNodeInputName2["visible"] = "visible";
GetObjectPropertyJsNodeInputName2["castShadow"] = "castShadow";
GetObjectPropertyJsNodeInputName2["receiveShadow"] = "receiveShadow";
GetObjectPropertyJsNodeInputName2["frustumCulled"] = "frustumCulled";
GetObjectPropertyJsNodeInputName2["up"] = "up";
GetObjectPropertyJsNodeInputName2["matrixAutoUpdate"] = "matrixAutoUpdate";
GetObjectPropertyJsNodeInputName2["material"] = "material";
return GetObjectPropertyJsNodeInputName2;
})(GetObjectPropertyJsNodeInputName || {});
export const OBJECT_VECTOR3_PROPERTIES = [
"position" /* position */,
"scale" /* scale */,
"up" /* up */
];
export const OBJECT_BOOLEAN_PROPERTIES = [
"visible" /* visible */,
"castShadow" /* castShadow */,
"receiveShadow" /* receiveShadow */,
"frustumCulled" /* frustumCulled */,
"matrixAutoUpdate" /* matrixAutoUpdate */
];
export const OBJECT_TRANSFORM_PROPERTIES = [
"position" /* position */,
"quaternion" /* quaternion */,
"scale" /* scale */,
"matrix" /* matrix */
];
const refByObjectUuidByPropertyName = /* @__PURE__ */ new Map();
export function getObjectPropertyRef(object3D, propertyName) {
let mapForObject = refByObjectUuidByPropertyName.get(object3D.uuid);
if (!mapForObject) {
mapForObject = /* @__PURE__ */ new Map();
refByObjectUuidByPropertyName.set(object3D.uuid, mapForObject);
}
let refForProperty = mapForObject.get(propertyName);
if (!refForProperty) {
refForProperty = ref(0);
mapForObject.set(propertyName, refForProperty);
}
return refForProperty;
}
export function touchObjectProperties(object3D, propertyNames) {
const map = refByObjectUuidByPropertyName.get(object3D.uuid);
if (!map) {
return;
}
for (const propertyName of propertyNames) {
const _ref = map.get(propertyName);
if (_ref) {
incrementRefSafely(_ref);
}
}
}
export function touchObjectProperty(object3D, propertyName) {
const _ref = getObjectPropertyRef(object3D, propertyName);
incrementRefSafely(_ref);
}