@croquet/worldcore-three
Advanced tools
Comparing version 1.0.8 to 1.1.0
@@ -7,2 +7,6 @@ # Changelog | ||
## [1.1.0] - 2022-1-28 | ||
### Added | ||
- ThreeCamera.pointerRaycast() | ||
## [1.0.7] - 2021-12-10 | ||
@@ -25,2 +29,3 @@ ### Added | ||
## Pending | ||
### Added | ||
{ | ||
"name": "@croquet/worldcore-three", | ||
"version": "1.0.8", | ||
"version": "1.1.0", | ||
"description": "Three.js Component for Croquet Worldcore", | ||
@@ -26,6 +26,6 @@ "keywords": [ | ||
"dependencies": { | ||
"@croquet/worldcore-kernel": "^1.0.8", | ||
"@croquet/worldcore-kernel": "^1.1.0", | ||
"three": "^0.134.0" | ||
}, | ||
"gitHead": "18c44d4566337bd00a61ecce1754fc14769bd5eb" | ||
"gitHead": "eebe26e12d15088ba6f5a0208134f7056e2f21a4" | ||
} |
@@ -7,3 +7,3 @@ import * as THREE from 'three'; | ||
//------------------------------------------------------------------------------------------ | ||
//-- ThreeVisible Mixin -------------------------------------------------------------------- | ||
//-- ThreeVisible ------------------------------------------------------------------------- | ||
//------------------------------------------------------------------------------------------ | ||
@@ -33,2 +33,3 @@ | ||
const render = this.service("ThreeRenderManager"); | ||
renderObject.wcPawn = this; | ||
this.renderObject = renderObject; | ||
@@ -39,2 +40,3 @@ this.renderObject.matrixAutoUpdate = false; | ||
if (render && render.scene) render.scene.add(this.renderObject); | ||
if (this.onSetRenderObject) this.onSetRenderObject(renderObject); | ||
} | ||
@@ -44,4 +46,6 @@ | ||
//------------------------------------------------------------------------------------------ | ||
//-- ThreeCamera Mixin --------------------------------------------------------------------- | ||
//-- ThreeCamera -------------------------------------------------------------------------- | ||
//------------------------------------------------------------------------------------------ | ||
@@ -70,2 +74,18 @@ | ||
pointerRaycast(xy) { | ||
const render = this.service("ThreeRenderManager"); | ||
if (!this.raycaster) this.raycaster = new THREE.Raycaster(); | ||
this.raycaster.setFromCamera({x: xy[0], y: xy[1]}, render.camera); | ||
const h = this.raycaster.intersectObjects(render.layers.pointer); | ||
if (h.length === 0) return {}; | ||
const hit = h[0]; | ||
return { | ||
pawn: hit.object.wcPawn, | ||
xyz: hit.point.toArray(), | ||
xyzLocal: hit.object.worldToLocal(hit.point).toArray(), | ||
uv: hit.uv.toArray(), | ||
normal: hit.face.normal.toArray() | ||
}; | ||
} | ||
}; | ||
@@ -85,2 +105,3 @@ | ||
this.camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 10000); | ||
this.layers = {}; | ||
@@ -87,0 +108,0 @@ if (!options.canvas) { |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
7944
113