浏览代码

Call onBeforeRender and onAfterRender callbacks in CSS2DRenderer

Julien Dargelos 5 年之前
父节点
当前提交
f381a8a622
共有 2 个文件被更改,包括 12 次插入3 次删除
  1. 3 0
      examples/jsm/renderers/CSS2DRenderer.d.ts
  2. 9 3
      examples/jsm/renderers/CSS2DRenderer.js

+ 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 {

+ 9 - 3
examples/jsm/renderers/CSS2DRenderer.js

@@ -38,6 +38,8 @@ CSS2DObject.prototype.constructor = CSS2DObject;
 
 var CSS2DRenderer = function () {
 
+	var _this = this;
+
 	var _width, _height;
 	var _widthHalf, _heightHalf;
 
@@ -76,10 +78,12 @@ var CSS2DRenderer = function () {
 
 	};
 
-	var renderObject = function ( object, camera ) {
+	var renderObject = function ( object, scene, camera ) {
 
 		if ( object instanceof CSS2DObject ) {
 
+			object.onBeforeRender( _this, scene, camera );
+
 			vector.setFromMatrixPosition( object.matrixWorld );
 			vector.applyMatrix4( viewProjectionMatrix );
 
@@ -105,11 +109,13 @@ var CSS2DRenderer = function () {
 
 			}
 
+			object.onAfterRender( _this, scene, camera );
+
 		}
 
 		for ( var i = 0, l = object.children.length; i < l; i ++ ) {
 
-			renderObject( object.children[ i ], camera );
+			renderObject( object.children[ i ], scene, camera );
 
 		}
 
@@ -174,7 +180,7 @@ var CSS2DRenderer = function () {
 		viewMatrix.copy( camera.matrixWorldInverse );
 		viewProjectionMatrix.multiplyMatrices( camera.projectionMatrix, viewMatrix );
 
-		renderObject( scene, camera );
+		renderObject( scene, scene, camera );
 		zOrder( scene );
 
 	};