UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

66 lines (65 loc) 2.54 kB
"use strict"; 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); }