Selaa lähdekoodia

Merge remote-tracking branch 'ajorkowski/patch-1' into dev

Mr.doob 13 vuotta sitten
vanhempi
commit
8a443534fd
1 muutettua tiedostoa jossa 30 lisäystä ja 14 poistoa
  1. 30 14
      src/renderers/DOMRenderer.js

+ 30 - 14
src/renderers/DOMRenderer.js

@@ -6,8 +6,20 @@ THREE.DOMRenderer = function () {
 
 	var _renderData, _elements,
 	_projector = new THREE.Projector(),
-	_width, _height, _widthHalf, _heightHalf;
+	_width, _height, _widthHalf, _heightHalf, _transformProp;
 
+	var getSupportedProp = function (proparray) {
+		var root = document.documentElement
+		for ( var i = 0; i < proparray.length; i++ ) { 
+			if (typeof root.style[proparray[i]]=="string") { 
+				return proparray[i]
+			}
+		}
+		return null;
+	};
+	
+	_transformProp = getSupportedProp(['transform', 'MozTransform', 'WebkitTransform', 'msTransform', 'OTransform']);
+	
 	this.domElement = document.createElement( 'div' );
 
 	this.setSize = function ( width, height ) {
@@ -28,20 +40,24 @@ THREE.DOMRenderer = function () {
 
 			element = _elements[ e ];
 
-			if ( element instanceof THREE.RenderableParticle ) {
-
-				v1x = element.x * _widthHalf + _widthHalf; v1y = element.y * _heightHalf + _heightHalf;
-
-				material = element.material;
-
-				if ( material instanceof THREE.ParticleDOMMaterial ) {
-
-					dom = material.domElement;
-					dom.style.left = v1x + 'px';
-					dom.style.top = v1y + 'px';
-
+			if ( element instanceof THREE.RenderableParticle && element.material instanceof THREE.ParticleDOMMaterial ) {
+
+				dom = element.material.domElement;
+				
+				v1x = element.x * _widthHalf + _widthHalf - (dom.offsetWidth >> 1); 
+				v1y = element.y * _heightHalf + _heightHalf - (dom.offsetHeight >> 1);
+				
+				dom.style.left = v1x + 'px';
+				dom.style.top = v1y + 'px';
+				dom.style.zIndex = Math.abs(Math.floor((1 - element.z) * camera.far / camera.near))
+
+				if(_transformProp) {
+					scaleX = element.scale.x * _widthHalf;
+					scaleY = element.scale.y * _heightHalf;
+					scaleVal = "scale(" + scaleX + "," + scaleY + ")";
+					dom.style[_transformProp] = scaleVal;
 				}
-
+				
 			}
 
 		}