Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development, and can be deployed anywhere. It is flexible, extensible and includes networking and XR - across platforms. Documentation at https://docs.needle.tools
Bot releases are hidden (Show)
Published by marwie 8 months ago
Published by marwie 8 months ago
Open in Quicklook
button was always creatednpm@three@160
Open Workspace
button now opens Readme in project directory by default (if it exists)Published by marwie 8 months ago
onDestroy
is now called before Object3D and resouces are disposed/destroyedPublished by marwie 9 months ago
isHand
propertycustomReticle
to allow how the AR session placement looksgetHandJointPose(jointName)
APINeedleXRSession.onXRSessionStart
and onXRSessionEnd
dontDestroy
flag to PlayerState)pointerup
if it doesnt happen over the passed in target elementpointermove
event every frame but only when above a set position/rotation thresholdNeedleXRSession.onXRStart
is now onXRSessionStart
Published by marwie 9 months ago
selectstart
events (e.g. visionOS)doubleSided
for skeletal meshesisDestroyed
checkonPointerEnter
and onPointerExit
is not called for all controllersPublished by marwie 9 months ago
sharedMeshes
property to easily access all mesh objects that belong to the rendererPublished by marwie 9 months ago
preload
propertyscale
property and updates underlying physics engine collider sizeinstantiate
now don't accept a null or missing object to instantiate anymoreapplyForce()
or applyImpulse()
preload
propertyPublished by marwie 9 months ago
Published by marwie 9 months ago
postprocessing
packageinput.addEventListener
for key events stopped workingpreview
build button for nextjs projectsPublished by marwie 9 months ago
postprocessing
package@needle-tools/engine
Published by marwie 9 months ago
linearVelocity
Published by marwie 9 months ago
NeedleXRController.index
(the index of the inputdevice)?stats
url parameter now also shows FPS in WebXR sessionthis.context.xr
now contains the whole type informationPublished by marwie 9 months ago
pressure
propertypointerCapture
now works with all buttonsonPointerExit
every time, it now only happens if the touch hits another object (or none)pointerId
now is a unique id generated from device-index + button-index, input events now also expose a deviceId
propertypointermove
event on objects that don't have a component that implements the onPointerMove
methodPublished by marwie 9 months ago
Published by marwie 9 months ago
setPointerCapture
and releasePointerCapture
that acts similarly to HTML pointer capture and can be used to receive onPointerMove events when the pointer has left the object until it is either released or onPointerUp
happens (this currently only works with the primary button)instantiate
callAuto Compress
for local development is enabled. With compression the required extensions that are only used for development are stripped and therefore Auto Compress
needs to be enabled while using Editor Sync.Published by marwie 9 months ago
Published by marwie 9 months ago
AssetRefernence.instantiate
does now clone instantiate options before awaiting asset loadingonPointerMove
event was not being called in XRSessionState.GetBool
on other threads when generating the tools projectPublished by marwie 9 months ago
onEnterXR
callback was possibly not being invoked on all scripts if a script was removed or deleted during onEnterXR (and the underlying array was modified) causing e.g. the CollaborativeSandbox AR placement to not workPublished by marwie 9 months ago
fadeTransition()
that can be used to cover teleportation. It returns a promise that is resolved when fade to black has completeduseQuicklookExport
is disabledPublished by marwie 9 months ago
origin
field to NEPointerEvent which references the object that raised the event (e.g. the XRController)delayForFrames(numOfFrames)
util method returning a promise that will resolve after the given amount of frames (equivalent to delay
which will take a time in milliseconds)