Просмотр исходного кода

Merge pull request #18538 from donutcoffee/patch-1

LOD: Add ability to get current level
Mr.doob 5 лет назад
Родитель
Сommit
5b59c56f7f
3 измененных файлов с 18 добавлено и 0 удалено
  1. 7 0
      docs/api/en/objects/LOD.html
  2. 1 0
      src/objects/LOD.d.ts
  3. 10 0
      src/objects/LOD.js

+ 7 - 0
docs/api/en/objects/LOD.html

@@ -87,6 +87,13 @@ scene.add( lod );
 		</p>
 
 
+		<h3>[method:integer getCurrentLevel]()</h3>
+		<p>
+		Get the currently active LOD level. As index of the levels array.
+		</p>
+
+		
+
 		<h3>[method:Object3D getObjectForDistance]( [param:Float distance] )</h3>
 		<p>
 		Get a reference to the first [page:Object3D] (mesh) that is greater than [page:Float distance].

+ 1 - 0
src/objects/LOD.d.ts

@@ -14,6 +14,7 @@ export class LOD extends Object3D {
 	readonly isLOD: true;
 
 	addLevel( object: Object3D, distance?: number ): this;
+	getCurrentLevel(): number;
 	getObjectForDistance( distance: number ): Object3D | null;
 	raycast( raycaster: Raycaster, intersects: Intersection[] ): void;
 	update( camera: Camera ): void;

+ 10 - 0
src/objects/LOD.js

@@ -14,6 +14,8 @@ function LOD() {
 
 	Object3D.call( this );
 
+	this._currentLevel = 0;
+
 	this.type = 'LOD';
 
 	Object.defineProperties( this, {
@@ -79,6 +81,12 @@ LOD.prototype = Object.assign( Object.create( Object3D.prototype ), {
 
 	},
 
+	getCurrentLevel: function () {
+
+		return this._currentLevel;
+
+	},
+
 	getObjectForDistance: function ( distance ) {
 
 		var levels = this.levels;
@@ -147,6 +155,8 @@ LOD.prototype = Object.assign( Object.create( Object3D.prototype ), {
 
 			}
 
+			this._currentLevel = i - 1;
+
 			for ( ; i < l; i ++ ) {
 
 				levels[ i ].object.visible = false;