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

Emitter: fix rotation and alignment glitches in world space

trethaller пре 6 година
родитељ
комит
6d1a48d775
1 измењених фајлова са 4 додато и 3 уклоњено
  1. 4 3
      hide/prefab/fx/Emitter.hx

+ 4 - 3
hide/prefab/fx/Emitter.hx

@@ -147,9 +147,9 @@ private class ParticleInstance extends h3d.scene.Object {
 						case Local:mat.multiply3x4(mat, emitter.invTransform);
 						case World:
 					}
-					var q = new h3d.Quat();
-					q.initRotateMatrix(mat);
-					setRotationQuat(q);
+					getRotationQuat().initRotateMatrix(mat);
+					getRotationQuat().normalize();
+					posChanged = true;
 				}
 				case Axis: {
 					var absChildMat = new h3d.Matrix();
@@ -352,6 +352,7 @@ class EmitterObject extends h3d.scene.Object {
 					part.baseMat = particleTemplate.getTransform();
 					var worldQuat = new h3d.Quat();
 					worldQuat.initRotateMatrix(getAbsPos());
+					worldQuat.normalize();
 					tmpq.multiply(tmpq, worldQuat);
 					part.setRotationQuat(tmpq);
 					part.orientation = tmpq.clone();