@gnsx/three 0.185.13 → 0.185.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +682 -0
- package/build/three.core.js +669 -1
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +1 -1
- package/build/three.module.min.js +1 -1
- package/build/three.webgpu.js +8 -8
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +8 -8
- package/build/three.webgpu.nodes.min.js +1 -1
- package/package.json +1 -1
- package/src/Three.Core.js +17 -0
- package/src/core/NodePath.js +208 -0
- package/src/core/Object3D.js +191 -0
- package/src/core/nodeId.js +168 -0
- package/src/loaders/ObjectLoader.js +4 -0
- package/src/math/XorShift32.js +119 -0
- package/src/renderers/common/Renderer.js +7 -7
package/build/three.core.js
CHANGED
|
@@ -11743,6 +11743,488 @@ class Layers {
|
|
|
11743
11743
|
|
|
11744
11744
|
}
|
|
11745
11745
|
|
|
11746
|
+
// WITH_GENESYS
|
|
11747
|
+
/**
|
|
11748
|
+
* Shared deterministic PRNG helpers (FNV-1a seed hash + xorshift32).
|
|
11749
|
+
* Used by sibling-local nodeId allocation and other deterministic streams.
|
|
11750
|
+
*/
|
|
11751
|
+
|
|
11752
|
+
/**
|
|
11753
|
+
* Lightweight FNV-1a hash for converting strings into a deterministic 32-bit seed.
|
|
11754
|
+
* @param {string} input
|
|
11755
|
+
* @return {number}
|
|
11756
|
+
*/
|
|
11757
|
+
function hashStringToUint32( input ) {
|
|
11758
|
+
|
|
11759
|
+
let hash = 0x811c9dc5;
|
|
11760
|
+
|
|
11761
|
+
for ( let i = 0; i < input.length; i ++ ) {
|
|
11762
|
+
|
|
11763
|
+
hash ^= input.charCodeAt( i );
|
|
11764
|
+
hash = Math.imul( hash, 0x01000193 );
|
|
11765
|
+
|
|
11766
|
+
}
|
|
11767
|
+
|
|
11768
|
+
return ( hash >>> 0 ) || 0x9e3779b9;
|
|
11769
|
+
|
|
11770
|
+
}
|
|
11771
|
+
|
|
11772
|
+
/**
|
|
11773
|
+
* Xorshift32 step; deterministic and fast for ID generation. Never returns 0.
|
|
11774
|
+
* @param {number} state
|
|
11775
|
+
* @return {number}
|
|
11776
|
+
*/
|
|
11777
|
+
function xorshift32( state ) {
|
|
11778
|
+
|
|
11779
|
+
let next = state | 0;
|
|
11780
|
+
next ^= next << 13;
|
|
11781
|
+
next ^= next >>> 17;
|
|
11782
|
+
next ^= next << 5;
|
|
11783
|
+
return ( next >>> 0 ) || 0x9e3779b9;
|
|
11784
|
+
|
|
11785
|
+
}
|
|
11786
|
+
|
|
11787
|
+
/**
|
|
11788
|
+
* Random non-zero uint32 seed for non-deterministic streams.
|
|
11789
|
+
* @return {number}
|
|
11790
|
+
*/
|
|
11791
|
+
function randomSeedUint32() {
|
|
11792
|
+
|
|
11793
|
+
return ( ( Math.random() * 0x100000000 ) >>> 0 ) || 0x9e3779b9;
|
|
11794
|
+
|
|
11795
|
+
}
|
|
11796
|
+
|
|
11797
|
+
/**
|
|
11798
|
+
* Deterministic xorshift32 stream. Internal state is never 0.
|
|
11799
|
+
*/
|
|
11800
|
+
class XorShift32 {
|
|
11801
|
+
|
|
11802
|
+
/**
|
|
11803
|
+
* @param {number|string} [seed]
|
|
11804
|
+
*/
|
|
11805
|
+
constructor( seed = randomSeedUint32() ) {
|
|
11806
|
+
|
|
11807
|
+
this._state = typeof seed === 'string'
|
|
11808
|
+
? hashStringToUint32( seed )
|
|
11809
|
+
: ( ( seed >>> 0 ) || 0x9e3779b9 );
|
|
11810
|
+
|
|
11811
|
+
}
|
|
11812
|
+
|
|
11813
|
+
/**
|
|
11814
|
+
* Advance and return the next non-zero uint32.
|
|
11815
|
+
* @return {number}
|
|
11816
|
+
*/
|
|
11817
|
+
nextUint32() {
|
|
11818
|
+
|
|
11819
|
+
this._state = xorshift32( this._state );
|
|
11820
|
+
return this._state;
|
|
11821
|
+
|
|
11822
|
+
}
|
|
11823
|
+
|
|
11824
|
+
/**
|
|
11825
|
+
* Advance and return the low 16 bits (0 is allowed).
|
|
11826
|
+
* @return {number}
|
|
11827
|
+
*/
|
|
11828
|
+
nextUint16() {
|
|
11829
|
+
|
|
11830
|
+
return this.nextUint32() & 0xffff;
|
|
11831
|
+
|
|
11832
|
+
}
|
|
11833
|
+
|
|
11834
|
+
/**
|
|
11835
|
+
* @return {number}
|
|
11836
|
+
*/
|
|
11837
|
+
getState() {
|
|
11838
|
+
|
|
11839
|
+
return this._state >>> 0;
|
|
11840
|
+
|
|
11841
|
+
}
|
|
11842
|
+
|
|
11843
|
+
/**
|
|
11844
|
+
* @param {number} state
|
|
11845
|
+
*/
|
|
11846
|
+
setState( state ) {
|
|
11847
|
+
|
|
11848
|
+
this._state = ( state >>> 0 ) || 0x9e3779b9;
|
|
11849
|
+
|
|
11850
|
+
}
|
|
11851
|
+
|
|
11852
|
+
/**
|
|
11853
|
+
* @return {XorShift32}
|
|
11854
|
+
*/
|
|
11855
|
+
clone() {
|
|
11856
|
+
|
|
11857
|
+
return new XorShift32( this._state );
|
|
11858
|
+
|
|
11859
|
+
}
|
|
11860
|
+
|
|
11861
|
+
}
|
|
11862
|
+
// !WITH_GENESYS
|
|
11863
|
+
|
|
11864
|
+
// WITH_GENESYS
|
|
11865
|
+
/**
|
|
11866
|
+
* Sibling-local 16-bit node identities.
|
|
11867
|
+
*
|
|
11868
|
+
* `null` / `undefined` mean unset. `0` is a valid NodeId.
|
|
11869
|
+
*/
|
|
11870
|
+
|
|
11871
|
+
|
|
11872
|
+
/**
|
|
11873
|
+
* True when `id` is a finite integer in the uint16 range (including 0).
|
|
11874
|
+
* @param {unknown} id
|
|
11875
|
+
* @return {boolean}
|
|
11876
|
+
*/
|
|
11877
|
+
function isValidNodeId( id ) {
|
|
11878
|
+
|
|
11879
|
+
return typeof id === 'number' && Number.isInteger( id ) && id >= 0 && id <= 0xffff;
|
|
11880
|
+
|
|
11881
|
+
}
|
|
11882
|
+
|
|
11883
|
+
/**
|
|
11884
|
+
* Canonical display form: 4 lowercase hex characters.
|
|
11885
|
+
* @param {number} id
|
|
11886
|
+
* @return {string}
|
|
11887
|
+
*/
|
|
11888
|
+
function nodeIdToString( id ) {
|
|
11889
|
+
|
|
11890
|
+
return ( id & 0xffff ).toString( 16 ).padStart( 4, '0' );
|
|
11891
|
+
|
|
11892
|
+
}
|
|
11893
|
+
|
|
11894
|
+
/**
|
|
11895
|
+
* Parses a hex node-id segment (1–4 hex digits).
|
|
11896
|
+
* @param {string} value
|
|
11897
|
+
* @return {?number}
|
|
11898
|
+
*/
|
|
11899
|
+
function nodeIdFromString( value ) {
|
|
11900
|
+
|
|
11901
|
+
const trimmed = value.trim();
|
|
11902
|
+
if ( ! /^[0-9a-fA-F]{1,4}$/.test( trimmed ) ) {
|
|
11903
|
+
|
|
11904
|
+
return null;
|
|
11905
|
+
|
|
11906
|
+
}
|
|
11907
|
+
|
|
11908
|
+
return Number.parseInt( trimmed, 16 ) & 0xffff;
|
|
11909
|
+
|
|
11910
|
+
}
|
|
11911
|
+
|
|
11912
|
+
const defaultNodeIdRng = new XorShift32();
|
|
11913
|
+
|
|
11914
|
+
/**
|
|
11915
|
+
* Seeds the process-wide NodeId RNG for deterministic construction.
|
|
11916
|
+
* Pass `undefined` / omit to restore a non-deterministic stream.
|
|
11917
|
+
* @param {string} [seed]
|
|
11918
|
+
*/
|
|
11919
|
+
function configureNodeIdSeed( seed ) {
|
|
11920
|
+
|
|
11921
|
+
if ( seed == null ) {
|
|
11922
|
+
|
|
11923
|
+
defaultNodeIdRng.setState( randomSeedUint32() );
|
|
11924
|
+
return;
|
|
11925
|
+
|
|
11926
|
+
}
|
|
11927
|
+
|
|
11928
|
+
defaultNodeIdRng.setState( hashStringToUint32( seed ) );
|
|
11929
|
+
|
|
11930
|
+
}
|
|
11931
|
+
|
|
11932
|
+
/**
|
|
11933
|
+
* Generates a random NodeId from the process-wide default RNG.
|
|
11934
|
+
* @param {XorShift32} [rng]
|
|
11935
|
+
* @return {number}
|
|
11936
|
+
*/
|
|
11937
|
+
function generateNodeId( rng = defaultNodeIdRng ) {
|
|
11938
|
+
|
|
11939
|
+
return rng.nextUint16();
|
|
11940
|
+
|
|
11941
|
+
}
|
|
11942
|
+
|
|
11943
|
+
/**
|
|
11944
|
+
* Allocates a NodeId not present in `existing`.
|
|
11945
|
+
* @param {Iterable<number>|ReadonlySet<number>} existing
|
|
11946
|
+
* @param {XorShift32} [rng]
|
|
11947
|
+
* @return {number}
|
|
11948
|
+
*/
|
|
11949
|
+
function allocateNodeId( existing, rng = defaultNodeIdRng ) {
|
|
11950
|
+
|
|
11951
|
+
const taken = existing instanceof Set ? existing : new Set( existing );
|
|
11952
|
+
if ( taken.size >= 0x10000 ) {
|
|
11953
|
+
|
|
11954
|
+
throw new Error( '[nodeId] Cannot allocate NodeId: all 65536 sibling ids are in use' );
|
|
11955
|
+
|
|
11956
|
+
}
|
|
11957
|
+
|
|
11958
|
+
let id = rng.nextUint16();
|
|
11959
|
+
while ( taken.has( id ) ) {
|
|
11960
|
+
|
|
11961
|
+
id = rng.nextUint16();
|
|
11962
|
+
|
|
11963
|
+
}
|
|
11964
|
+
|
|
11965
|
+
return id;
|
|
11966
|
+
|
|
11967
|
+
}
|
|
11968
|
+
|
|
11969
|
+
/**
|
|
11970
|
+
* Deterministic NodeId from a stable key (first-try candidate for remints).
|
|
11971
|
+
* @param {string} key
|
|
11972
|
+
* @return {number}
|
|
11973
|
+
*/
|
|
11974
|
+
function nodeIdFromKey( key ) {
|
|
11975
|
+
|
|
11976
|
+
return new XorShift32( key ).nextUint16();
|
|
11977
|
+
|
|
11978
|
+
}
|
|
11979
|
+
|
|
11980
|
+
/**
|
|
11981
|
+
* Collects nodeId values from a sibling set.
|
|
11982
|
+
* @param {Iterable<{nodeId?: ?number}>} nodes
|
|
11983
|
+
* @param {Object} [except]
|
|
11984
|
+
* @return {Set<number>}
|
|
11985
|
+
*/
|
|
11986
|
+
function collectSiblingNodeIds( nodes, except ) {
|
|
11987
|
+
|
|
11988
|
+
const taken = new Set();
|
|
11989
|
+
for ( const node of nodes ) {
|
|
11990
|
+
|
|
11991
|
+
if ( node !== except && isValidNodeId( node.nodeId ) ) {
|
|
11992
|
+
|
|
11993
|
+
taken.add( node.nodeId );
|
|
11994
|
+
|
|
11995
|
+
}
|
|
11996
|
+
|
|
11997
|
+
}
|
|
11998
|
+
|
|
11999
|
+
return taken;
|
|
12000
|
+
|
|
12001
|
+
}
|
|
12002
|
+
|
|
12003
|
+
/**
|
|
12004
|
+
* Ensures `object.nodeId` is unique among `parent.children`.
|
|
12005
|
+
* @param {import('./Object3D.js').Object3D} object
|
|
12006
|
+
* @param {import('./Object3D.js').Object3D} parent
|
|
12007
|
+
*/
|
|
12008
|
+
function ensureUniqueNodeIdAmongParentChildren( object, parent ) {
|
|
12009
|
+
|
|
12010
|
+
const taken = collectSiblingNodeIds( parent.children, object );
|
|
12011
|
+
if ( ! isValidNodeId( object.nodeId ) || taken.has( object.nodeId ) ) {
|
|
12012
|
+
|
|
12013
|
+
object.nodeId = allocateNodeId( taken );
|
|
12014
|
+
|
|
12015
|
+
}
|
|
12016
|
+
|
|
12017
|
+
}
|
|
12018
|
+
// !WITH_GENESYS
|
|
12019
|
+
|
|
12020
|
+
// WITH_GENESYS
|
|
12021
|
+
/**
|
|
12022
|
+
* Path of sibling-local nodeIds identifying a node in the scene tree.
|
|
12023
|
+
* String form: `"a1b2/c3d4"` (4-hex segments separated by `/`).
|
|
12024
|
+
*/
|
|
12025
|
+
|
|
12026
|
+
|
|
12027
|
+
class NodePath {
|
|
12028
|
+
|
|
12029
|
+
/**
|
|
12030
|
+
* @param {readonly number[]} [ids]
|
|
12031
|
+
*/
|
|
12032
|
+
constructor( ids = [] ) {
|
|
12033
|
+
|
|
12034
|
+
const normalized = [];
|
|
12035
|
+
for ( const id of ids ) {
|
|
12036
|
+
|
|
12037
|
+
if ( ! isValidNodeId( id ) ) {
|
|
12038
|
+
|
|
12039
|
+
throw new Error( `[NodePath] Invalid NodeId segment: ${ String( id ) }` );
|
|
12040
|
+
|
|
12041
|
+
}
|
|
12042
|
+
|
|
12043
|
+
normalized.push( id & 0xffff );
|
|
12044
|
+
|
|
12045
|
+
}
|
|
12046
|
+
|
|
12047
|
+
this.ids = normalized;
|
|
12048
|
+
|
|
12049
|
+
}
|
|
12050
|
+
|
|
12051
|
+
/**
|
|
12052
|
+
* @param {...number} ids
|
|
12053
|
+
* @return {NodePath}
|
|
12054
|
+
*/
|
|
12055
|
+
static fromIds( ...ids ) {
|
|
12056
|
+
|
|
12057
|
+
return new NodePath( ids );
|
|
12058
|
+
|
|
12059
|
+
}
|
|
12060
|
+
|
|
12061
|
+
/**
|
|
12062
|
+
* Parses `"a1b2/c3d4"`. Empty / whitespace-only string yields {@link NodePath.empty}.
|
|
12063
|
+
* @param {string} path
|
|
12064
|
+
* @return {NodePath}
|
|
12065
|
+
*/
|
|
12066
|
+
static fromString( path ) {
|
|
12067
|
+
|
|
12068
|
+
const trimmed = path.trim();
|
|
12069
|
+
if ( trimmed.length === 0 ) {
|
|
12070
|
+
|
|
12071
|
+
return NodePath.empty;
|
|
12072
|
+
|
|
12073
|
+
}
|
|
12074
|
+
|
|
12075
|
+
const parts = trimmed.split( '/' );
|
|
12076
|
+
const ids = [];
|
|
12077
|
+
for ( const part of parts ) {
|
|
12078
|
+
|
|
12079
|
+
if ( part.length === 0 ) {
|
|
12080
|
+
|
|
12081
|
+
throw new Error( `[NodePath] Empty segment in path "${ path }"` );
|
|
12082
|
+
|
|
12083
|
+
}
|
|
12084
|
+
|
|
12085
|
+
const id = nodeIdFromString( part );
|
|
12086
|
+
if ( id === null ) {
|
|
12087
|
+
|
|
12088
|
+
throw new Error( `[NodePath] Invalid segment "${ part }" in path "${ path }"` );
|
|
12089
|
+
|
|
12090
|
+
}
|
|
12091
|
+
|
|
12092
|
+
ids.push( id );
|
|
12093
|
+
|
|
12094
|
+
}
|
|
12095
|
+
|
|
12096
|
+
return new NodePath( ids );
|
|
12097
|
+
|
|
12098
|
+
}
|
|
12099
|
+
|
|
12100
|
+
/**
|
|
12101
|
+
* @param {NodePath|string} path
|
|
12102
|
+
* @return {NodePath}
|
|
12103
|
+
*/
|
|
12104
|
+
static coerce( path ) {
|
|
12105
|
+
|
|
12106
|
+
return typeof path === 'string' ? NodePath.fromString( path ) : path;
|
|
12107
|
+
|
|
12108
|
+
}
|
|
12109
|
+
|
|
12110
|
+
/** @return {number} */
|
|
12111
|
+
get length() {
|
|
12112
|
+
|
|
12113
|
+
return this.ids.length;
|
|
12114
|
+
|
|
12115
|
+
}
|
|
12116
|
+
|
|
12117
|
+
/** @return {boolean} */
|
|
12118
|
+
get isEmpty() {
|
|
12119
|
+
|
|
12120
|
+
return this.ids.length === 0;
|
|
12121
|
+
|
|
12122
|
+
}
|
|
12123
|
+
|
|
12124
|
+
/** @return {string} */
|
|
12125
|
+
toString() {
|
|
12126
|
+
|
|
12127
|
+
return this.ids.map( nodeIdToString ).join( '/' );
|
|
12128
|
+
|
|
12129
|
+
}
|
|
12130
|
+
|
|
12131
|
+
/**
|
|
12132
|
+
* @param {NodePath} other
|
|
12133
|
+
* @return {boolean}
|
|
12134
|
+
*/
|
|
12135
|
+
equals( other ) {
|
|
12136
|
+
|
|
12137
|
+
if ( this.ids.length !== other.ids.length ) {
|
|
12138
|
+
|
|
12139
|
+
return false;
|
|
12140
|
+
|
|
12141
|
+
}
|
|
12142
|
+
|
|
12143
|
+
for ( let i = 0; i < this.ids.length; i ++ ) {
|
|
12144
|
+
|
|
12145
|
+
if ( this.ids[ i ] !== other.ids[ i ] ) {
|
|
12146
|
+
|
|
12147
|
+
return false;
|
|
12148
|
+
|
|
12149
|
+
}
|
|
12150
|
+
|
|
12151
|
+
}
|
|
12152
|
+
|
|
12153
|
+
return true;
|
|
12154
|
+
|
|
12155
|
+
}
|
|
12156
|
+
|
|
12157
|
+
/**
|
|
12158
|
+
* @param {NodePath} prefix
|
|
12159
|
+
* @return {boolean}
|
|
12160
|
+
*/
|
|
12161
|
+
startsWith( prefix ) {
|
|
12162
|
+
|
|
12163
|
+
if ( prefix.ids.length > this.ids.length ) {
|
|
12164
|
+
|
|
12165
|
+
return false;
|
|
12166
|
+
|
|
12167
|
+
}
|
|
12168
|
+
|
|
12169
|
+
for ( let i = 0; i < prefix.ids.length; i ++ ) {
|
|
12170
|
+
|
|
12171
|
+
if ( this.ids[ i ] !== prefix.ids[ i ] ) {
|
|
12172
|
+
|
|
12173
|
+
return false;
|
|
12174
|
+
|
|
12175
|
+
}
|
|
12176
|
+
|
|
12177
|
+
}
|
|
12178
|
+
|
|
12179
|
+
return true;
|
|
12180
|
+
|
|
12181
|
+
}
|
|
12182
|
+
|
|
12183
|
+
/**
|
|
12184
|
+
* @param {number} start
|
|
12185
|
+
* @param {number} [end]
|
|
12186
|
+
* @return {NodePath}
|
|
12187
|
+
*/
|
|
12188
|
+
slice( start, end ) {
|
|
12189
|
+
|
|
12190
|
+
return new NodePath( this.ids.slice( start, end ) );
|
|
12191
|
+
|
|
12192
|
+
}
|
|
12193
|
+
|
|
12194
|
+
/**
|
|
12195
|
+
* @param {NodePath} relative
|
|
12196
|
+
* @return {NodePath}
|
|
12197
|
+
*/
|
|
12198
|
+
concat( relative ) {
|
|
12199
|
+
|
|
12200
|
+
return new NodePath( [ ...this.ids, ...relative.ids ] );
|
|
12201
|
+
|
|
12202
|
+
}
|
|
12203
|
+
|
|
12204
|
+
/**
|
|
12205
|
+
* If this path starts with `ancestor`, returns the remainder; otherwise `null`.
|
|
12206
|
+
* @param {NodePath} ancestor
|
|
12207
|
+
* @return {?NodePath}
|
|
12208
|
+
*/
|
|
12209
|
+
relativeFrom( ancestor ) {
|
|
12210
|
+
|
|
12211
|
+
if ( ! this.startsWith( ancestor ) ) {
|
|
12212
|
+
|
|
12213
|
+
return null;
|
|
12214
|
+
|
|
12215
|
+
}
|
|
12216
|
+
|
|
12217
|
+
return this.slice( ancestor.length );
|
|
12218
|
+
|
|
12219
|
+
}
|
|
12220
|
+
|
|
12221
|
+
}
|
|
12222
|
+
|
|
12223
|
+
NodePath.empty = new NodePath( [] );
|
|
12224
|
+
// !WITH_GENESYS
|
|
12225
|
+
|
|
12226
|
+
// !WITH_GENESYS
|
|
12227
|
+
|
|
11746
12228
|
let _object3DId = 0;
|
|
11747
12229
|
|
|
11748
12230
|
const _v1$6 = /*@__PURE__*/ new Vector3();
|
|
@@ -11831,6 +12313,16 @@ class Object3D extends EventDispatcher {
|
|
|
11831
12313
|
*/
|
|
11832
12314
|
this.uuid = generateUUID();
|
|
11833
12315
|
|
|
12316
|
+
// WITH_GENESYS
|
|
12317
|
+
/**
|
|
12318
|
+
* Sibling-local 16-bit identity for scene-graph addressing ({@link NodePath}).
|
|
12319
|
+
* `0` is valid. Reminted on parent attach when colliding with a sibling.
|
|
12320
|
+
*
|
|
12321
|
+
* @type {number}
|
|
12322
|
+
*/
|
|
12323
|
+
this.nodeId = generateNodeId();
|
|
12324
|
+
// !WITH_GENESYS
|
|
12325
|
+
|
|
11834
12326
|
/**
|
|
11835
12327
|
* The name of the 3D object.
|
|
11836
12328
|
*
|
|
@@ -12513,6 +13005,9 @@ class Object3D extends EventDispatcher {
|
|
|
12513
13005
|
if ( object && object.isObject3D ) {
|
|
12514
13006
|
|
|
12515
13007
|
object.removeFromParent();
|
|
13008
|
+
// WITH_GENESYS
|
|
13009
|
+
ensureUniqueNodeIdAmongParentChildren( object, this );
|
|
13010
|
+
// !WITH_GENESYS
|
|
12516
13011
|
object.parent = this;
|
|
12517
13012
|
this.children.push( object );
|
|
12518
13013
|
|
|
@@ -12638,6 +13133,9 @@ class Object3D extends EventDispatcher {
|
|
|
12638
13133
|
object.applyMatrix4( _m1$1 );
|
|
12639
13134
|
|
|
12640
13135
|
object.removeFromParent();
|
|
13136
|
+
// WITH_GENESYS
|
|
13137
|
+
ensureUniqueNodeIdAmongParentChildren( object, this );
|
|
13138
|
+
// !WITH_GENESYS
|
|
12641
13139
|
object.parent = this;
|
|
12642
13140
|
this.children.push( object );
|
|
12643
13141
|
|
|
@@ -12653,6 +13151,166 @@ class Object3D extends EventDispatcher {
|
|
|
12653
13151
|
|
|
12654
13152
|
}
|
|
12655
13153
|
|
|
13154
|
+
// WITH_GENESYS
|
|
13155
|
+
/**
|
|
13156
|
+
* Assigns a {@link nodeId} when unset or outside the uint16 range.
|
|
13157
|
+
* @return {number}
|
|
13158
|
+
*/
|
|
13159
|
+
ensureNodeId() {
|
|
13160
|
+
|
|
13161
|
+
if ( ! isValidNodeId( this.nodeId ) ) {
|
|
13162
|
+
|
|
13163
|
+
this.nodeId = generateNodeId();
|
|
13164
|
+
|
|
13165
|
+
}
|
|
13166
|
+
|
|
13167
|
+
return this.nodeId;
|
|
13168
|
+
|
|
13169
|
+
}
|
|
13170
|
+
|
|
13171
|
+
/**
|
|
13172
|
+
* Replaces {@link nodeId} with a newly generated value (e.g. prefab instance roots).
|
|
13173
|
+
* @param {Iterable<number>} [existingSiblingIds]
|
|
13174
|
+
* @return {number}
|
|
13175
|
+
*/
|
|
13176
|
+
remintNodeId( existingSiblingIds ) {
|
|
13177
|
+
|
|
13178
|
+
this.nodeId = existingSiblingIds !== undefined
|
|
13179
|
+
? allocateNodeId( existingSiblingIds )
|
|
13180
|
+
: generateNodeId();
|
|
13181
|
+
return this.nodeId;
|
|
13182
|
+
|
|
13183
|
+
}
|
|
13184
|
+
|
|
13185
|
+
/**
|
|
13186
|
+
* Direct child with the given {@link nodeId}, or `null`.
|
|
13187
|
+
* @param {number} id
|
|
13188
|
+
* @return {?Object3D}
|
|
13189
|
+
*/
|
|
13190
|
+
findChildByNodeId( id ) {
|
|
13191
|
+
|
|
13192
|
+
for ( let i = 0; i < this.children.length; i ++ ) {
|
|
13193
|
+
|
|
13194
|
+
const child = this.children[ i ];
|
|
13195
|
+
if ( child.nodeId === id ) {
|
|
13196
|
+
|
|
13197
|
+
return child;
|
|
13198
|
+
|
|
13199
|
+
}
|
|
13200
|
+
|
|
13201
|
+
}
|
|
13202
|
+
|
|
13203
|
+
return null;
|
|
13204
|
+
|
|
13205
|
+
}
|
|
13206
|
+
|
|
13207
|
+
/**
|
|
13208
|
+
* Resolves a path relative to this node. An empty path returns `this`.
|
|
13209
|
+
* @param {NodePath|string} path
|
|
13210
|
+
* @return {?Object3D}
|
|
13211
|
+
*/
|
|
13212
|
+
resolvePath( path ) {
|
|
13213
|
+
|
|
13214
|
+
const nodePath = NodePath.coerce( path );
|
|
13215
|
+
if ( nodePath.isEmpty ) {
|
|
13216
|
+
|
|
13217
|
+
return this;
|
|
13218
|
+
|
|
13219
|
+
}
|
|
13220
|
+
|
|
13221
|
+
let current = this;
|
|
13222
|
+
for ( let i = 0; i < nodePath.ids.length; i ++ ) {
|
|
13223
|
+
|
|
13224
|
+
const next = current.findChildByNodeId( nodePath.ids[ i ] );
|
|
13225
|
+
if ( ! next ) {
|
|
13226
|
+
|
|
13227
|
+
return null;
|
|
13228
|
+
|
|
13229
|
+
}
|
|
13230
|
+
|
|
13231
|
+
current = next;
|
|
13232
|
+
|
|
13233
|
+
}
|
|
13234
|
+
|
|
13235
|
+
return current;
|
|
13236
|
+
|
|
13237
|
+
}
|
|
13238
|
+
|
|
13239
|
+
/**
|
|
13240
|
+
* Builds a {@link NodePath} for this node.
|
|
13241
|
+
* - Without `root`: absolute path from the topmost non-Scene ancestor down to this node.
|
|
13242
|
+
* - With `root`: path relative to `root` (empty when `this === root`); `null` when not under `root`.
|
|
13243
|
+
* @param {Object3D} [root]
|
|
13244
|
+
* @return {?NodePath}
|
|
13245
|
+
*/
|
|
13246
|
+
getNodePath( root ) {
|
|
13247
|
+
|
|
13248
|
+
if ( root !== undefined ) {
|
|
13249
|
+
|
|
13250
|
+
if ( this === root ) {
|
|
13251
|
+
|
|
13252
|
+
return NodePath.empty;
|
|
13253
|
+
|
|
13254
|
+
}
|
|
13255
|
+
|
|
13256
|
+
const absolute = this.getNodePath();
|
|
13257
|
+
const rootAbsolute = root.getNodePath();
|
|
13258
|
+
if ( ! absolute || ! rootAbsolute ) {
|
|
13259
|
+
|
|
13260
|
+
return null;
|
|
13261
|
+
|
|
13262
|
+
}
|
|
13263
|
+
|
|
13264
|
+
return absolute.relativeFrom( rootAbsolute );
|
|
13265
|
+
|
|
13266
|
+
}
|
|
13267
|
+
|
|
13268
|
+
const ids = [];
|
|
13269
|
+
let current = this;
|
|
13270
|
+
while ( current ) {
|
|
13271
|
+
|
|
13272
|
+
ids.push( current.ensureNodeId() );
|
|
13273
|
+
const parent = current.parent;
|
|
13274
|
+
// Scene / World containers are not part of authored NodePaths.
|
|
13275
|
+
if ( parent === null || parent.isScene === true ) {
|
|
13276
|
+
|
|
13277
|
+
break;
|
|
13278
|
+
|
|
13279
|
+
}
|
|
13280
|
+
|
|
13281
|
+
current = parent;
|
|
13282
|
+
|
|
13283
|
+
}
|
|
13284
|
+
|
|
13285
|
+
ids.reverse();
|
|
13286
|
+
return new NodePath( ids );
|
|
13287
|
+
|
|
13288
|
+
}
|
|
13289
|
+
|
|
13290
|
+
/**
|
|
13291
|
+
* Ensures every Object3D in this subtree has a valid {@link nodeId}, unique among its siblings.
|
|
13292
|
+
*/
|
|
13293
|
+
ensureNodeIdsInSubtree() {
|
|
13294
|
+
|
|
13295
|
+
this.ensureNodeId();
|
|
13296
|
+
const taken = new Set();
|
|
13297
|
+
for ( let i = 0; i < this.children.length; i ++ ) {
|
|
13298
|
+
|
|
13299
|
+
const child = this.children[ i ];
|
|
13300
|
+
if ( ! isValidNodeId( child.nodeId ) || taken.has( child.nodeId ) ) {
|
|
13301
|
+
|
|
13302
|
+
child.nodeId = allocateNodeId( taken );
|
|
13303
|
+
|
|
13304
|
+
}
|
|
13305
|
+
|
|
13306
|
+
taken.add( child.nodeId );
|
|
13307
|
+
child.ensureNodeIdsInSubtree();
|
|
13308
|
+
|
|
13309
|
+
}
|
|
13310
|
+
|
|
13311
|
+
}
|
|
13312
|
+
// !WITH_GENESYS
|
|
13313
|
+
|
|
12656
13314
|
/**
|
|
12657
13315
|
* Searches through the 3D object and its children, starting with the 3D object
|
|
12658
13316
|
* itself, and returns the first with a matching ID.
|
|
@@ -13055,6 +13713,10 @@ class Object3D extends EventDispatcher {
|
|
|
13055
13713
|
object.uuid = this.uuid;
|
|
13056
13714
|
object.type = this.type;
|
|
13057
13715
|
|
|
13716
|
+
// WITH_GENESYS
|
|
13717
|
+
object.nodeId = this.nodeId;
|
|
13718
|
+
// !WITH_GENESYS
|
|
13719
|
+
|
|
13058
13720
|
if ( this.name !== '' ) object.name = this.name;
|
|
13059
13721
|
if ( this.castShadow === true ) object.castShadow = true;
|
|
13060
13722
|
if ( this.receiveShadow === true ) object.receiveShadow = true;
|
|
@@ -13365,6 +14027,8 @@ class Object3D extends EventDispatcher {
|
|
|
13365
14027
|
this.visible = source.visible;
|
|
13366
14028
|
// WITH_GENESYS
|
|
13367
14029
|
this.selfHidden = source.selfHidden;
|
|
14030
|
+
// Keep nodeId; reminted on attach if it collides with a sibling.
|
|
14031
|
+
this.nodeId = source.nodeId;
|
|
13368
14032
|
// !WITH_GENESYS
|
|
13369
14033
|
|
|
13370
14034
|
this.castShadow = source.castShadow;
|
|
@@ -49601,6 +50265,10 @@ class ObjectLoader extends Loader {
|
|
|
49601
50265
|
|
|
49602
50266
|
object.uuid = data.uuid;
|
|
49603
50267
|
|
|
50268
|
+
// WITH_GENESYS
|
|
50269
|
+
if ( data.nodeId !== undefined ) object.nodeId = data.nodeId;
|
|
50270
|
+
// !WITH_GENESYS
|
|
50271
|
+
|
|
49604
50272
|
if ( data.name !== undefined ) object.name = data.name;
|
|
49605
50273
|
|
|
49606
50274
|
if ( data.matrix !== undefined ) {
|
|
@@ -61731,4 +62399,4 @@ if ( typeof window !== 'undefined' ) {
|
|
|
61731
62399
|
|
|
61732
62400
|
}
|
|
61733
62401
|
|
|
61734
|
-
export { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AgXToneMapping, AlphaFormat, AlwaysCompare, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, AttachedBindMode, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BackSide, BasicDepthPacking, BasicShadowMap, BatchedMesh, BezierInterpolant, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, Compatibility, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, ConstantAlphaFactor, ConstantColorFactor, Controls, CubeCamera, CubeDepthTexture, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DetachedBindMode, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualCompare, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExternalTexture, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, FloatType, Fog, FogExp2, FramebufferTexture, FrontSide, Frustum, FrustumArray, GLBufferAttribute, GLSL1, GLSL3, GreaterCompare, GreaterDepth, GreaterEqualCompare, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HTMLTexture, HalfFloatType, HemisphereLight, HemisphereLightHelper, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateBezier, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InterpolationSamplingMode, InterpolationSamplingType, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry, Layers, LessCompare, LessDepth, LessEqualCompare, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, LinearTransfer, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, MOUSE, Material, MaterialBlending, MaterialLoader, MathUtils, Matrix2, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeutralToneMapping, NeverCompare, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoNormalPacking, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NormalGAPacking, NormalRGPacking, NotEqualCompare, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry, OneFactor, OneMinusConstantAlphaFactor, OneMinusConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, Path, PerspectiveCamera, Plane, PlaneGeometry, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry, PositionalAudio, ProfilerService, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, R11_EAC_Format, RAD2DEG, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, REVISION, RG11_EAC_Format, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDepthPacking, RGBFormat, RGBIntegerFormat, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGDepthPacking, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RenderTarget, RenderTarget3D, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, ReversedDepthFuncs, RingGeometry, SIGNED_R11_EAC_Format, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_Format, SIGNED_RG11_EAC_Format, SRGBColorSpace, SRGBTransfer, Scene, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry, Texture, TextureLoader, TextureUtils, Timer, TimestampQuery, TorusGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry, UVMapping, Uint16BufferAttribute, Uint32BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, UniformsUtils, UnsignedByteType, UnsignedInt101111Type, UnsignedInt248Type, UnsignedInt5999Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, VideoFrameTexture, VideoTexture, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCoordinateSystem, WebGLRenderTarget, WebGPUCoordinateSystem, WebXRController, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, cloneUniforms, createCanvasElement, createElementNS, error, getByteLength, getConsoleFunction, getUnlitUniformColorSpace, isTypedArray, log, mergeUniforms, probeAsync, profile, profileClass, setConsoleFunction, warn, warnOnce, yieldToMain };
|
|
62402
|
+
export { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AgXToneMapping, AlphaFormat, AlwaysCompare, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, AttachedBindMode, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BackSide, BasicDepthPacking, BasicShadowMap, BatchedMesh, BezierInterpolant, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, Compatibility, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, ConstantAlphaFactor, ConstantColorFactor, Controls, CubeCamera, CubeDepthTexture, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DetachedBindMode, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualCompare, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExternalTexture, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, FloatType, Fog, FogExp2, FramebufferTexture, FrontSide, Frustum, FrustumArray, GLBufferAttribute, GLSL1, GLSL3, GreaterCompare, GreaterDepth, GreaterEqualCompare, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HTMLTexture, HalfFloatType, HemisphereLight, HemisphereLightHelper, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateBezier, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InterpolationSamplingMode, InterpolationSamplingType, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry, Layers, LessCompare, LessDepth, LessEqualCompare, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, LinearTransfer, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, MOUSE, Material, MaterialBlending, MaterialLoader, MathUtils, Matrix2, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeutralToneMapping, NeverCompare, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoNormalPacking, NoToneMapping, NodePath, NormalAnimationBlendMode, NormalBlending, NormalGAPacking, NormalRGPacking, NotEqualCompare, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry, OneFactor, OneMinusConstantAlphaFactor, OneMinusConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, Path, PerspectiveCamera, Plane, PlaneGeometry, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry, PositionalAudio, ProfilerService, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, R11_EAC_Format, RAD2DEG, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, REVISION, RG11_EAC_Format, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDepthPacking, RGBFormat, RGBIntegerFormat, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGDepthPacking, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RenderTarget, RenderTarget3D, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, ReversedDepthFuncs, RingGeometry, SIGNED_R11_EAC_Format, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_Format, SIGNED_RG11_EAC_Format, SRGBColorSpace, SRGBTransfer, Scene, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry, Texture, TextureLoader, TextureUtils, Timer, TimestampQuery, TorusGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry, UVMapping, Uint16BufferAttribute, Uint32BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, UniformsUtils, UnsignedByteType, UnsignedInt101111Type, UnsignedInt248Type, UnsignedInt5999Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, VideoFrameTexture, VideoTexture, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCoordinateSystem, WebGLRenderTarget, WebGPUCoordinateSystem, WebXRController, WireframeGeometry, WrapAroundEnding, XorShift32, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, allocateNodeId, cloneUniforms, collectSiblingNodeIds, configureNodeIdSeed, createCanvasElement, createElementNS, ensureUniqueNodeIdAmongParentChildren, error, generateNodeId, getByteLength, getConsoleFunction, getUnlitUniformColorSpace, hashStringToUint32, isTypedArray, isValidNodeId, log, mergeUniforms, nodeIdFromKey, nodeIdFromString, nodeIdToString, probeAsync, profile, profileClass, randomSeedUint32, setConsoleFunction, warn, warnOnce, xorshift32, yieldToMain };
|