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

[fx] Emitter now uses hashmap to index params

Clement Espeute пре 1 година
родитељ
комит
6fbe25bffc
1 измењених фајлова са 11 додато и 7 уклоњено
  1. 11 7
      hrt/prefab/fx/Emitter.hx

+ 11 - 7
hrt/prefab/fx/Emitter.hx

@@ -1219,7 +1219,7 @@ class EmitterObject extends h3d.scene.Object {
 					if( subEmitterTemplates != null ) {
 
 						for (subEmitterTemplate in subEmitterTemplates) {
-							var subEmitterInstance : Emitter = @:privateAccess subEmitterTemplate.make(this);
+							var subEmitterInstance : Emitter = @:privateAccess subEmitterTemplate.make(new ContextShared());
 						    var emitter : EmitterObject = cast subEmitterInstance.local3d;
 							var pos = p.absPos.getPosition();
 							emitter.setPosition(pos.x, pos.y, pos.z);
@@ -1419,14 +1419,18 @@ class Emitter extends Object3D {
 		{ name: "instOffset",     			t: PVec(3, -10, 10),  def: [0.,0.,0.], disp: "Offset", groupName: "Particle Transform"},
 	];
 
-	public static var PARAMS : Array<ParamDef> = {
-		var a = emitterParams.copy();
+
+	public static var PARAMS : Map<String, ParamDef> = {
+		var map = new Map();
+		for(e in emitterParams) {
+			map.set(e.name, e);
+		}
 		for(i in instanceParams) {
 			i.instance = true;
 			i.animate = true;
-			a.push(i);
+			map.set(i.name, i);
 		}
-		a;
+		map;
 	};
 
 	override function save() {
@@ -1494,7 +1498,7 @@ class Emitter extends Object3D {
 	}
 
 	function getParamVal(name: String, rand: Bool=false) : Dynamic {
-		var param = PARAMS.find(p -> p.name == name);
+		var param = PARAMS.get(name);
 		if(param == null)
 			return Reflect.field(props, name);
 		var isVector = switch(param.t) {
@@ -1622,7 +1626,7 @@ class Emitter extends Object3D {
 
 			var baseProp: Dynamic = Reflect.field(props, name);
 			var randProp: Dynamic = Reflect.field(props, randProp(name));
-			var param = PARAMS.find(p -> p.name == name);
+			var param = PARAMS.get(name);
 			switch(param.t) {
 				case PVec(_):
 					inline function makeComp(idx, suffix) {