@hology/core 0.0.27 → 0.0.30
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/effects/vfx/behaviours.d.ts +26 -0
- package/dist/effects/vfx/behaviours.js +5 -0
- package/dist/effects/vfx/index.d.ts +2 -0
- package/dist/effects/vfx/index.js +5 -0
- package/dist/effects/vfx/initializsers.d.ts +44 -0
- package/dist/effects/vfx/initializsers.js +5 -0
- package/dist/effects/vfx/rates.d.ts +6 -0
- package/dist/effects/vfx/rates.js +5 -0
- package/dist/effects/vfx/vfx-actor.d.ts +27 -0
- package/dist/effects/vfx/vfx-actor.js +5 -0
- package/dist/effects/vfx/vfx-asset.d.ts +99 -0
- package/dist/effects/vfx/vfx-asset.js +5 -0
- package/dist/effects/vfx/vfx-defs.d.ts +207 -0
- package/dist/effects/vfx/vfx-defs.js +5 -0
- package/dist/effects/vfx/vfx-materializer.d.ts +19 -0
- package/dist/effects/vfx/vfx-materializer.js +5 -0
- package/dist/effects/vfx/vfx-param.d.ts +13 -0
- package/dist/effects/vfx/vfx-param.js +5 -0
- package/dist/effects/vfx/zones.d.ts +74 -0
- package/dist/effects/vfx/zones.js +5 -0
- package/dist/gameplay/actors/builtin/components/character/character-movement.d.ts +5 -1
- package/dist/gameplay/actors/builtin/components/character/character-movement.js +1 -1
- package/dist/gameplay/actors/camera/third-party-camera-component.js +1 -1
- package/dist/gameplay/index.d.ts +1 -0
- package/dist/gameplay/index.js +1 -1
- package/dist/gameplay/initiate.d.ts +3 -0
- package/dist/gameplay/initiate.js +1 -1
- package/dist/gameplay/input/input-service.d.ts +4 -0
- package/dist/gameplay/input/input-service.js +1 -1
- package/dist/gameplay/polyfill.d.ts +1 -0
- package/dist/gameplay/polyfill.js +5 -0
- package/dist/gameplay/services/asset-loader.d.ts +9 -4
- package/dist/gameplay/services/asset-loader.js +1 -1
- package/dist/gameplay/services/render.d.ts +3 -2
- package/dist/rendering.d.ts +1 -0
- package/dist/rendering.js +1 -1
- package/dist/scene/materializer.d.ts +20 -3
- package/dist/scene/materializer.js +1 -1
- package/dist/scene/model.d.ts +8 -2
- package/dist/scene/model.js +1 -1
- package/dist/scene/objects/shapes.d.ts +4 -2
- package/dist/scene/scene-data-service.js +1 -1
- package/dist/scene/sky.d.ts +3 -0
- package/dist/scene/sky.js +1 -1
- package/dist/shader/parameter.d.ts +2 -1
- package/dist/shader-nodes/effects.d.ts +8 -0
- package/dist/shader-nodes/effects.js +5 -0
- package/dist/shader-nodes/glsl-node.d.ts +16 -0
- package/dist/shader-nodes/glsl-node.js +5 -0
- package/dist/shader-nodes/index.d.ts +4 -0
- package/dist/shader-nodes/index.js +1 -1
- package/dist/shader-nodes/math.d.ts +2 -0
- package/dist/shader-nodes/math.js +5 -0
- package/dist/shader-nodes/particle.d.ts +6 -0
- package/dist/shader-nodes/particle.js +5 -0
- package/dist/shader-nodes/shapes.d.ts +3 -0
- package/dist/shader-nodes/shapes.js +5 -0
- package/dist/shader-nodes/voronoi.d.ts +5 -0
- package/dist/shader-nodes/voronoi.js +5 -0
- package/dist/utils/math.js +1 -1
- package/package.json +3 -2
- package/tsconfig.tsbuildinfo +1 -1
@@ -1,4 +1,4 @@
|
|
1
|
-
import{BehaviorSubject as t}from"rxjs";import{Matrix4 as e,Vector3 as s,Quaternion as i,Euler as o}from"three";export class SceneDataService{constructor(){this.objects=[],this.callbacks=[],this.removeCallbacks=[],this.objectChange=new t([])}initiate(t,e=!1){var s;this.objects=t&&null!==(s=JSON.parse(t))&&void 0!==s?s:[];!this.objects.some((t=>"global_fog"===t.type))&&e&&this.objects.unshift({id:"auto-global-fog",name:"Global fog",type:"global_fog",position:[0,0,0],scale:[1,1,1],rotation:[0,0,0],collisionDetection:!1,fog:{type:"density",color:"#b8f8ff",density:.005,near:100,far:1e3}}),this.objectChange.next(this.objects)}removeOnUpdateCallback(t){this.callbacks.splice(this.callbacks.indexOf(t),1)}onUpdate(t){this.callbacks.push(t)}onRemove(t){this.removeCallbacks.push(t)}getObjects(){return this.objects}addObject(t){this.objects.push(t),this.callbacks.forEach((e=>e(t))),this.objectChange.next(this.objects)}updateObject(t){const e=this.findObjectById(t.id);e?(Object.assign(e,t),this.callbacks.forEach((e=>e(t)))):this.addObject(t),this.objectChange.next(this.objects)}findObjectById(t){const e=[...this.objects];for(;e.length>0;){const s=e.pop();if(s.id===t)return s;s.children&&e.push(...s.children)}}findAncestorsById(t){const e=this.findParentById(t);return null==e?[]:[e,...this.findAncestorsById(e.id)]}findParentById(t){return this._findParentById(t,this.objects)}_findParentById(t,e,s=null){return e.some((e=>e.id===t))?s:e.filter((t=>null!=t.children)).map((e=>this._findParentById(t,e.children,e))).find((t=>null!=t))}updateParent(t,n){var r,c;const l=this.findParentById(t.id);{const r=null!=n?this.getMatrixWorld(n).invert():(new e).identity();null!=l&&r.multiply(this.getMatrixWorld(l));const c=this.getLocalMatrix(t),a=r.multiply(c),h=new s,d=new i,b=new s;a.decompose(h,d,b),t.position=h.toArray(),t.rotation=(new o).setFromQuaternion(d).toArray(),t.scale=b.toArray()}this.removeRecursive(t.id,null!==(r=null==l?void 0:l.children)&&void 0!==r?r:this.objects),null!=n?(null!==(c=n.children)&&void 0!==c||(n.children=[]),n.children.push(t)):this.objects.push(t),this.objectChange.next(this.objects),this.callbacks.forEach((e=>e(t)))}getMatrixWorld(t){const e=this.findAncestorsById(t.id).reverse();e.push(t);const s=this.getLocalMatrix(e.shift());for(const t of e){const e=this.getLocalMatrix(t);s.multiply(e)}return s}getLocalMatrix(t){const n=new e,r=(new s).fromArray(t.position),c=(new i).setFromEuler((new o).fromArray(t.rotation)),l=(new s).fromArray(t.scale);return n.compose(r,c,l),n}removeObject(t){this.removeRecursive(t.id,this.objects),this.removeCallbacks.forEach((e=>e(t))),this.objectChange.next(this.objects)}removeRecursive(t,e){var s;const i=e.findIndex((e=>e.id===t));if(i>-1)e.splice(i,1);else for(const i of e)this.removeRecursive(t,null!==(s=i.children)&&void 0!==s?s:[])}save(){}serialize(){return JSON.stringify(this.objects)}}
|
1
|
+
import{BehaviorSubject as t}from"rxjs";import{Matrix4 as e,Vector3 as s,Quaternion as i,Euler as o}from"three";export class SceneDataService{constructor(){this.objects=[],this.callbacks=[],this.removeCallbacks=[],this.objectChange=new t([])}initiate(t,e=!1){var s;this.objects=t&&null!==(s=JSON.parse(t))&&void 0!==s?s:[];!this.objects.some((t=>"global_fog"===t.type))&&e&&this.objects.unshift({id:"auto-global-fog",name:"Global fog",type:"global_fog",position:[0,0,0],scale:[1,1,1],rotation:[0,0,0],collisionDetection:!1,fog:{type:"density",color:"#b8f8ff",density:.005,near:100,far:1e3}});this.objects.some((t=>"sky"===t.type))||this.objects.unshift({id:"auto-sky",name:"Sky",type:"sky",position:[0,0,0],scale:[1,1,1],rotation:[0,0,0],collisionDetection:!1,sky:{materialId:null}}),this.objectChange.next(this.objects)}removeOnUpdateCallback(t){this.callbacks.splice(this.callbacks.indexOf(t),1)}onUpdate(t){this.callbacks.push(t)}onRemove(t){this.removeCallbacks.push(t)}getObjects(){return this.objects}addObject(t){this.objects.push(t),this.callbacks.forEach((e=>e(t))),this.objectChange.next(this.objects)}updateObject(t){const e=this.findObjectById(t.id);e?(Object.assign(e,t),this.callbacks.forEach((e=>e(t)))):this.addObject(t),this.objectChange.next(this.objects)}findObjectById(t){const e=[...this.objects];for(;e.length>0;){const s=e.pop();if(s.id===t)return s;s.children&&e.push(...s.children)}}findAncestorsById(t){const e=this.findParentById(t);return null==e?[]:[e,...this.findAncestorsById(e.id)]}findParentById(t){return this._findParentById(t,this.objects)}_findParentById(t,e,s=null){return e.some((e=>e.id===t))?s:e.filter((t=>null!=t.children)).map((e=>this._findParentById(t,e.children,e))).find((t=>null!=t))}updateParent(t,n){var r,c;const l=this.findParentById(t.id);{const r=null!=n?this.getMatrixWorld(n).invert():(new e).identity();null!=l&&r.multiply(this.getMatrixWorld(l));const c=this.getLocalMatrix(t),a=r.multiply(c),h=new s,d=new i,b=new s;a.decompose(h,d,b),t.position=h.toArray(),t.rotation=(new o).setFromQuaternion(d).toArray(),t.scale=b.toArray()}this.removeRecursive(t.id,null!==(r=null==l?void 0:l.children)&&void 0!==r?r:this.objects),null!=n?(null!==(c=n.children)&&void 0!==c||(n.children=[]),n.children.push(t)):this.objects.push(t),this.objectChange.next(this.objects),this.callbacks.forEach((e=>e(t)))}getMatrixWorld(t){const e=this.findAncestorsById(t.id).reverse();e.push(t);const s=this.getLocalMatrix(e.shift());for(const t of e){const e=this.getLocalMatrix(t);s.multiply(e)}return s}getLocalMatrix(t){const n=new e,r=(new s).fromArray(t.position),c=(new i).setFromEuler((new o).fromArray(t.rotation)),l=(new s).fromArray(t.scale);return n.compose(r,c,l),n}removeObject(t){this.removeRecursive(t.id,this.objects),this.removeCallbacks.forEach((e=>e(t))),this.objectChange.next(this.objects)}removeRecursive(t,e){var s;const i=e.findIndex((e=>e.id===t));if(i>-1)e.splice(i,1);else for(const i of e)this.removeRecursive(t,null!==(s=i.children)&&void 0!==s?s:[])}save(){}serialize(){return JSON.stringify(this.objects)}}
|
2
2
|
/*
|
3
3
|
* Copyright (©) 2023. All rights reserved.
|
4
4
|
* See the LICENSE.md file for details.
|
package/dist/scene/sky.d.ts
CHANGED
@@ -1,3 +1,6 @@
|
|
1
1
|
import * as THREE from "three";
|
2
|
+
import { NodeShaderMaterial } from 'three-shader-graph';
|
2
3
|
export declare function basicSceneSetup(scene: THREE.Scene): void;
|
3
4
|
export declare const ambientLightName = "default_ambient";
|
5
|
+
export declare const defaultSkyMaterial: NodeShaderMaterial;
|
6
|
+
export declare function createSky(): THREE.Mesh<THREE.SphereGeometry, NodeShaderMaterial>;
|
package/dist/scene/sky.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import*as e from"three";import{AmbientLight as a,FogExp2 as
|
1
|
+
import*as e from"three";import{AmbientLight as a,FogExp2 as t}from"three";import{attributes as r,NodeShaderMaterial as o,uniforms as i,vec4 as n,varyingVec3 as s,float as h,normalize as c,rgb as d,mix as m,max as w,pow as p}from"three-shader-graph";export function basicSceneSetup(r){!function(t){new a(16777215,.5);var r=new e.HemisphereLight(16777215,273,.5);r.name=ambientLightName,r.position.set(0,100,0),t.add(r);new e.HemisphereLightHelper(r,10);var o=new e.DirectionalLight(16777215,.7);o.position.set(-30,50,30),o.castShadow=!0,o.shadow.mapSize.width=2048,o.shadow.mapSize.height=2048;var i=250;o.shadow.normalBias=.3,o.shadow.camera.left=-i,o.shadow.camera.right=i,o.shadow.camera.top=i,o.shadow.camera.bottom=-i,o.shadow.camera.far=500,o.shadow.bias=-5e-4;new e.DirectionalLightHelper(o,10);var n=new e.PointLight(16777215,1,50);n.castShadow=!0,n.position.set(0,40,0),n.shadow.camera.near=1,n.shadow.camera.far=60,n.shadow.bias=-.005}(r),function(e){e.fog=new t(l,f)}(r)}export const ambientLightName="default_ambient";const l=157554,f=.005;export const defaultSkyMaterial=function(){const a=h(5),t=h(.6),l=new e.Color(16777215).convertSRGBToLinear(),f=new e.Color(13431551).convertSRGBToLinear(),S=s(i.modelMatrix.multiplyVec(n(r.position,1)).xyz()),g=c(S.addScalar(a)).y(),u=w(p(w(g,h(0)),h(t)),h(0)),L=n(m(d(f),d(l),u),h(1)),b=new o({color:L.rgba()});return b.side=e.BackSide,b.depthTest=!1,b}();export function createSky(){var a=new e.SphereGeometry(300,10,15),t=new e.Mesh(a,defaultSkyMaterial);return t.renderOrder=-999,t.raycast=()=>{},t}
|
2
2
|
/*
|
3
3
|
* Copyright (©) 2023. All rights reserved.
|
4
4
|
* See the LICENSE.md file for details.
|
@@ -3,7 +3,8 @@ import { Type } from '../utils/type';
|
|
3
3
|
import { BaseActor } from '../gameplay/actors/actor';
|
4
4
|
import { Color, Euler, Material, Object3D, Texture, Vector2, Vector3, Vector4 } from 'three';
|
5
5
|
import { BooleanNode, FloatNode, RgbNode, Sampler2DNode, Vec2Node, Vec3Node, Vec4Node } from '../shader-nodes';
|
6
|
-
|
6
|
+
import { VisualEffect } from '../effects/vfx/vfx-param';
|
7
|
+
export type ParameterType = Type<FloatNode | Number | Texture | Sampler2DNode | Boolean | BooleanNode | Vector2 | Vec2Node | Vector3 | Vec3Node | Vector4 | Vec4Node | Color | RgbNode | String | BaseActor | Euler | Object3D | Material | VisualEffect>;
|
7
8
|
export type ParameterOption<T> = {
|
8
9
|
name: string;
|
9
10
|
value: T;
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { FloatNode } from "three-shader-graph";
|
2
|
+
export declare function fresnelEffect(power?: number | FloatNode): FloatNode;
|
3
|
+
/**
|
4
|
+
* Gives a factor for how shallow the depth is where 1 is the most shallow.
|
5
|
+
* This can be useful to for example create a highlight where an object intersects
|
6
|
+
* with another or to increase the transparency of water where it meets a shore.
|
7
|
+
*/
|
8
|
+
export declare function edgeDepthEffect(power?: number | FloatNode): FloatNode;
|
@@ -0,0 +1,5 @@
|
|
1
|
+
import{Vec3ExpressionNode as t,attributes as r,dot as e,float as o,normalize as n,pow as c,saturate as i,uniforms as s,varyingAttributes as a,varyingVec3 as f,vec4 as p}from"three-shader-graph";import{fragmentLinearEyeDepth as u,linearEyeDepth as m}from"./depth";const d=s.modelMatrix.multiplyVec(p(r.position,1));export function fresnelEffect(s=1){const a=r.normal,f=new t("cameraPosition"),p=n(f.subtract(d.xyz())),u=o(1);return c(i(u.subtract(e(a,p))),o(s))}const h=o(1).subtract(m.subtract(u).divide(m));export function edgeDepthEffect(t=1){return c(h,o(t))}
|
2
|
+
/*
|
3
|
+
* Copyright (©) 2023. All rights reserved.
|
4
|
+
* See the LICENSE.md file for details.
|
5
|
+
*/
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { FloatNode, BooleanNode, IntNode, Vec2Node, Vec3Node, Vec4Node, Mat2Node, Mat3Node, Mat4Node, RgbNode, RgbaNode, Sampler2DNode } from "shader-nodes";
|
2
|
+
type AbstractType<T> = abstract new (...args: unknown[]) => T;
|
3
|
+
type ShaderNode = FloatNode | BooleanNode | IntNode | Vec2Node | Vec3Node | Vec4Node | Mat2Node | Mat3Node | Mat4Node | RgbNode | RgbaNode | Sampler2DNode;
|
4
|
+
/**
|
5
|
+
* Create reusable functions out of GLSL code.
|
6
|
+
* Just specify the return type, an object with the arguments and the glsl function body
|
7
|
+
* as a string.
|
8
|
+
*
|
9
|
+
* function example(uv: Vec2Node) {
|
10
|
+
* return glslFunction(Vec2Node, {uv}, `
|
11
|
+
* return uv * 1.;
|
12
|
+
* `)
|
13
|
+
* }
|
14
|
+
*/
|
15
|
+
export declare function glslFunction<TReturn extends ShaderNode>(returnType: AbstractType<TReturn>, args: Record<string, ShaderNode>, body: string): TReturn;
|
16
|
+
export {};
|
@@ -0,0 +1,5 @@
|
|
1
|
+
export function glslFunction(t,e,n){const o=t.typeName;return new class extends t{compile(t){const c=`customFunction_${t.variable()}`,s=Object.entries(e).map((([t,e])=>`${e.constructor.typeName} ${t}`)).join(", "),r=Object.values(e).map((e=>t.get(e))).join(", ");return{pars:`${o} ${c}(${s}) {\n ${n}\n }`,out:`${c}(${r})`}}}}
|
2
|
+
/*
|
3
|
+
* Copyright (©) 2023. All rights reserved.
|
4
|
+
* See the LICENSE.md file for details.
|
5
|
+
*/
|
@@ -3,3 +3,7 @@ export { linearEyeDepth, fragmentLinearEyeDepth, depthSampler } from './depth';
|
|
3
3
|
export { timeUniforms } from './time';
|
4
4
|
export * from './layers';
|
5
5
|
export * from './landscape';
|
6
|
+
export * from './shapes';
|
7
|
+
export * from './voronoi';
|
8
|
+
export * from './effects';
|
9
|
+
export * from './math';
|
@@ -1,4 +1,4 @@
|
|
1
|
-
export*from"three-shader-graph";export{linearEyeDepth,fragmentLinearEyeDepth,depthSampler}from"./depth";export{timeUniforms}from"./time";export*from"./layers";export*from"./landscape";
|
1
|
+
export*from"three-shader-graph";export{linearEyeDepth,fragmentLinearEyeDepth,depthSampler}from"./depth";export{timeUniforms}from"./time";export*from"./layers";export*from"./landscape";export*from"./shapes";export*from"./voronoi";export*from"./effects";export*from"./math";
|
2
2
|
/*
|
3
3
|
* Copyright (©) 2023. All rights reserved.
|
4
4
|
* See the LICENSE.md file for details.
|
@@ -0,0 +1,5 @@
|
|
1
|
+
import{FloatNode as t,IntNode as r,Vec2Node as e,Vec3Node as n,Vec4Node as s,float as a,int as c,vec2 as u,vec3 as o,vec4 as i}from"three-shader-graph";export function oneMinus(f){switch(!0){case f instanceof t:return a(1).subtract(f);case f instanceof r:return c(1).subtract(f);case f instanceof e:return u(1,1).subtract(f);case f instanceof n:return o(1,1,1).subtract(f);case f instanceof s:return i(1,1,1,1).subtract(f)}throw"Unsupported type "+f}
|
2
|
+
/*
|
3
|
+
* Copyright (©) 2023. All rights reserved.
|
4
|
+
* See the LICENSE.md file for details.
|
5
|
+
*/
|
@@ -0,0 +1,6 @@
|
|
1
|
+
export declare const particleEnergyUniformName = "hology_particle_energy";
|
2
|
+
export declare const particleVelcoityUniformName = "hology_particle_velocity";
|
3
|
+
export declare const particleUniforms: {
|
4
|
+
energy: import("three-shader-graph").UniformFloatNode;
|
5
|
+
velocity: import("three-shader-graph").UniformVec3Node;
|
6
|
+
};
|
@@ -0,0 +1,5 @@
|
|
1
|
+
import{uniformFloat as e,uniformVec3 as o}from"three-shader-graph";export const particleEnergyUniformName="hology_particle_energy";export const particleVelcoityUniformName="hology_particle_velocity";export const particleUniforms={energy:e("hology_particle_energy"),velocity:o("hology_particle_velocity")};
|
2
|
+
/*
|
3
|
+
* Copyright (©) 2023. All rights reserved.
|
4
|
+
* See the LICENSE.md file for details.
|
5
|
+
*/
|
@@ -0,0 +1,3 @@
|
|
1
|
+
import { FloatNode, Vec2Node } from "three-shader-graph";
|
2
|
+
export declare function rectangleFloat(uv: Vec2Node, width: FloatNode, height: FloatNode): FloatNode;
|
3
|
+
export declare function roundedRectangleFloat(uv: Vec2Node, width: FloatNode, height: FloatNode, radius: FloatNode): FloatNode;
|
@@ -0,0 +1,5 @@
|
|
1
|
+
import{float as t,length as a,min as r,max as e,saturate as c,dFdx as d,dFdy as l,abs as u,ComponentsVec2Node as n,vec2 as i}from"three-shader-graph";export function rectangleFloat(t,a,e){const o=u(t.multiplyScalar(2).subtractScalar(1)).subtract(new n(a,e)),s=i(1,1).subtract(o.divide(u(d(p=o)).add(u(l(p)))));var p;return c(r(s.x(),s.y()))}export function roundedRectangleFloat(o,s,p,b){const m=e(r(r(u(b.multiply(2)),u(s)),u(p)),t(1e-5)),v=u(o.multiplyScalar(2).subtractScalar(1)).subtract(new n(s,p)).addScalar(m),S=a(e(i(0,0),v)).divide(m);return c(t(1).subtract(S).divide(u(d(y=S)).add(u(l(y)))));var y}
|
2
|
+
/*
|
3
|
+
* Copyright (©) 2023. All rights reserved.
|
4
|
+
* See the LICENSE.md file for details.
|
5
|
+
*/
|
@@ -0,0 +1,5 @@
|
|
1
|
+
import{select as t,length as a,ComponentsVec2Node as r,ConstantMat2Node as l,fract as d,sin as n,cos as e,vec2 as o,vec3 as u,floor as c}from"three-shader-graph";export function voronoi(i,p,m){const y=i.multiplyScalar(m),s=c(y),x=d(y),f=[-1,0,1],h=f.flatMap((t=>f.map((a=>[t,a])))).reduce(((c,[i,m])=>{const y=o(i,m),f=function(t,a){const o=new l(15.27,47.63,99.41,89.98);return t=d(n(t.multiplyMat(o)).multiplyScalar(46839.32)),new r(n(t.y().add(a)).multiply(.5).add(.5),e(t.x().add(a)).multiply(.5).add(.5))}(y.add(s),p),h=a(y.add(f).subtract(x));return t(h.lt(c.x()),u(h,f.x(),f.y()),c)}),u(8,0,0));return{noise:h.x(),cells:h.y()}}
|
2
|
+
/*
|
3
|
+
* Copyright (©) 2023. All rights reserved.
|
4
|
+
* See the LICENSE.md file for details.
|
5
|
+
*/
|
package/dist/utils/math.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import*as t from"three";import{Vector3 as
|
1
|
+
import*as t from"three";import{Vector3 as e}from"three";export function clamp(t,e,n){return Math.max(Math.min(n,t),e)}export function byChance(t,e){Math.random()<t&&e()}export function mean(t){let e=0,n=t.length;for(;--n>=0;)e+=t[n];return t.length>0?e/t.length:0}export function meanVectors3(t){const e=n.set(0,0,0);for(const n of t)e.add(n);return e.divideScalar(t.length),e}export function meanBottomVectors3(t){const e=n.set(0,0,0);let o=null;for(const n of t)e.add(n),(null==o||n.y<o)&&(o=n.y);return e.divideScalar(t.length),e.y=o,e}export function meanVectors3Mapped(t,n){const o=new e,r=new e;for(const e of t)r.add(n(e,o));return r.divideScalar(t.length),r}const n=new e;export function meanVectors3withWeight(t,e,o){let r=0;for(const t of e)r+=t;n.set(0,0,0);let a=0;for(const o of t){const t=e[a]/r;n.x+=o.x*t,n.y+=o.y*t,n.z+=o.z*t,a++}return o.copy(n),o}export function randomString(t=9){return Math.random().toString(36).substr(2,t)}export function toDegrees(t){return t*(180/Math.PI)}var o=new t.Sphere;export function boundingRadius(...e){o.makeEmpty();for(var n=0;n<e.length;n++)e[n].traverse((e=>{e instanceof t.Mesh&&(e.geometry.computeBoundingSphere(),o.union(e.geometry.boundingSphere))}));return o.radius}
|
2
2
|
/*
|
3
3
|
* Copyright (©) 2023. All rights reserved.
|
4
4
|
* See the LICENSE.md file for details.
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@hology/core",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.30",
|
4
4
|
"description": "",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"scripts": {
|
@@ -84,6 +84,7 @@
|
|
84
84
|
"dependencies": {
|
85
85
|
"@dimforge/rapier3d-compat": "^0.11.2",
|
86
86
|
"@plumier/reflect": "^1.1.0",
|
87
|
+
"@types/three-nebula": "^10.0.3",
|
87
88
|
"cannon-es": "^0.20.0",
|
88
89
|
"cannon-es-debugger": "^1.0.0",
|
89
90
|
"rxjs": "7.4.0",
|
@@ -91,7 +92,7 @@
|
|
91
92
|
"three": "^0.139.0",
|
92
93
|
"three-csm": "^3.2.0",
|
93
94
|
"three-mesh-bvh": "^0.4.0",
|
94
|
-
"three-nebula": "10.0.3",
|
95
|
+
"three-nebula": "^10.0.3",
|
95
96
|
"three-shader-graph": "^0.1.24",
|
96
97
|
"three-stdlib": "~2.17.3",
|
97
98
|
"ts-key-enum": "^2.0.12",
|