UNPKG

@needle-tools/engine

Version:

Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development with great integrations into editors like Unity or Blender - and can be deployed onto any device! It is flexible, extensible and networking and XR are built-in.

29 lines (25 loc) 1.14 kB
import { Object3D } from "three"; const $objectAnimationKey = Symbol("objectIsAnimatedData"); /** Internal method - This marks an object as being animated. Make sure to always call isAnimated=false if you stop animating the object * @param obj The object to mark * @param isAnimated Whether the object is animated or not */ export function setObjectAnimated(obj: Object3D, animatedBy: object, isAnimated: boolean) { if (!obj) return; if (obj[$objectAnimationKey] === undefined) { if (!isAnimated) return; obj[$objectAnimationKey] = new Set<object>(); } const set = obj[$objectAnimationKey] as Set<object>; if (isAnimated) { set.add(animatedBy); } else if (set.has(animatedBy)) set.delete(animatedBy); } /** Get is the object is currently animated. Currently used by the Animator to check if a timeline animationtrack is actively animating an object */ export function getObjectAnimated(obj: Object3D): boolean { if (!obj) return false; const set = obj[$objectAnimationKey] as Set<object>; return set !== undefined && set.size > 0; }