Browse Source

Merge pull request #18508 from juliendargelos/css2drenderer-callbacks

Call onBeforeRender and onAfterRender callbacks in CSS2DRenderer
Mr.doob 5 years ago
parent
commit
aa587aacbc

+ 8 - 2
examples/js/renderers/CSS2DRenderer.js

@@ -32,6 +32,8 @@ THREE.CSS2DObject.prototype.constructor = THREE.CSS2DObject;
 
 THREE.CSS2DRenderer = function () {
 
+	var _this = this;
+
 	var _width, _height;
 	var _widthHalf, _heightHalf;
 
@@ -70,10 +72,12 @@ THREE.CSS2DRenderer = function () {
 
 	};
 
-	var renderObject = function ( object, camera ) {
+	var renderObject = function ( object, scene, camera ) {
 
 		if ( object instanceof THREE.CSS2DObject ) {
 
+			object.onBeforeRender( _this, scene, camera );
+
 			vector.setFromMatrixPosition( object.matrixWorld );
 			vector.applyMatrix4( viewProjectionMatrix );
 
@@ -99,6 +103,8 @@ THREE.CSS2DRenderer = function () {
 
 			}
 
+			object.onAfterRender( _this, scene, camera );
+
 		}
 
 		for ( var i = 0, l = object.children.length; i < l; i ++ ) {
@@ -168,7 +174,7 @@ THREE.CSS2DRenderer = function () {
 		viewMatrix.copy( camera.matrixWorldInverse );
 		viewProjectionMatrix.multiplyMatrices( camera.projectionMatrix, viewMatrix );
 
-		renderObject( scene, camera );
+		renderObject( scene, scene, camera );
 		zOrder( scene );
 
 	};

+ 3 - 0
examples/jsm/renderers/CSS2DRenderer.d.ts

@@ -9,6 +9,9 @@ export class CSS2DObject extends Object3D {
 	constructor( element: HTMLElement );
 	element: HTMLElement;
 
+	onBeforeRender: (renderer: CSS2DRenderer, scene: Scene, camera: Camera) => void;
+ 	onAfterRender: (renderer: CSS2DRenderer, scene: Scene, camera: Camera) => void;
+
 }
 
 export class CSS2DRenderer {