Преглед изворни кода

Audio: Override copy and clone methods to include missing properties (#29960)

* fix: override Audio's clone and copy methods to avoid missing listener

Co-Authored-By: Jian-Nam <jeeahn2929@gmail.com>

* fix: include filters property in copy method

---------

Co-authored-by: Jian-Nam <jeeahn2929@gmail.com>
Byongho Lee пре 1 година
родитељ
комит
de7c7c82a8
1 измењених фајлова са 38 додато и 0 уклоњено
  1. 38 0
      src/audio/Audio.js

+ 38 - 0
src/audio/Audio.js

@@ -396,6 +396,44 @@ class Audio extends Object3D {
 
 	}
 
+	copy( source, recursive ) {
+
+		super.copy( source, recursive );
+
+		this.autoplay = source.autoplay;
+
+		this.buffer = source.buffer;
+		this.detune = source.detune;
+		this.loop = source.loop;
+		this.loopStart = source.loopStart;
+		this.loopEnd = source.loopEnd;
+		this.offset = source.offset;
+		this.duration = source.duration;
+		this.playbackRate = source.playbackRate;
+		this.hasPlaybackControl = source.hasPlaybackControl;
+
+		this.filters = source.filters.slice();
+
+		if ( source.sourceType !== 'buffer' ) {
+
+			console.warn( 'THREE.Audio: Audio source type cannot be copied.' );
+
+			return this;
+
+		}
+
+		this.sourceType = source.sourceType;
+
+		return this;
+
+	}
+
+	clone( recursive ) {
+
+		return new this.constructor( this.listener ).copy( this, recursive );
+
+	}
+
 }
 
 export { Audio };

粤ICP备19079148号