Browse Source

MeshSpray : density offset

Tom Spira 6 years ago
parent
commit
d58339bfe0
1 changed files with 7 additions and 3 deletions
  1. 7 3
      hrt/prefab/l3d/MeshSpray.hx

+ 7 - 3
hrt/prefab/l3d/MeshSpray.hx

@@ -11,7 +11,8 @@ class MeshSpray extends Object3D {
 	var sceneEditor : hide.comp.SceneEditor;
 
 	var density : Int = 10;
-	var radius : Float = 5.0;
+	var densityOffset : Int = 0;
+	var radius : Float = 10.0;
 	var scale : Float = 1.0;
 	var scaleOffset : Float = 0.1;
 	var rotation : Float = 0.0;
@@ -152,6 +153,7 @@ class MeshSpray extends Object3D {
 		var optionsGroup = new hide.Element('<div class="group" name="Options"><dl></dl></div>');
 		optionsGroup.append(hide.comp.PropsEditor.makePropsList([
 				{ name: "density", t: PInt(1, 25), def: density },
+				{ name: "densityOffset", t: PInt(0, 10), def: densityOffset },
 				{ name: "radius", t: PFloat(0, 50), def: radius },
 				{ name: "scale", t: PFloat(0, 10), def: scale },
 				{ name: "scaleOffset", t: PFloat(0, 1), def: scaleOffset },
@@ -196,7 +198,9 @@ class MeshSpray extends Object3D {
 		vecRelat.transform3x4(transform);
 		var point2d = new h2d.col.Point(vecRelat.x, vecRelat.y);
 
-		var minDistanceBetweenMeshesSq = (radius * radius / density);
+		var computedDensity = density + Std.random(densityOffset+1);
+
+		var minDistanceBetweenMeshesSq = (radius * radius / computedDensity);
 
 		var currentPivots : Array<h2d.col.Point> = [];
 		inline function distance(x1 : Float, y1 : Float, x2 : Float, y2 : Float) return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
@@ -208,7 +212,7 @@ class MeshSpray extends Object3D {
 				currentPivots.push(new h2d.col.Point(model.x, model.y));
 			}
 		}
-		var nbMeshesToPlace = density - nbMeshesInZone;
+		var nbMeshesToPlace = computedDensity - nbMeshesInZone;
 		if (nbMeshesToPlace > 0) {
 			var models : Array<hrt.prefab.Prefab> = [];