瀏覽代碼

LODs : lodConfig is now set with defaultConfig preventing allocs

lviguier 1 年之前
父節點
當前提交
0568eec23e
共有 2 個文件被更改,包括 15 次插入2 次删除
  1. 1 1
      h3d/prim/HMDModel.hx
  2. 14 1
      h3d/prim/ModelDatabase.hx

+ 1 - 1
h3d/prim/HMDModel.hx

@@ -303,7 +303,7 @@ class HMDModel extends MeshPrimitive {
 		if ( lodCount == 1 )
 			return 0;
 
-		var lodConfig = getLodConfig();
+		lodConfig = getLodConfig();
 		if ( lodConfig != null && lodConfig.length >= lodCount - 1) {
 			var lodLevel : Int = 0;
 			var maxIter = ( ( lodConfig.length > lodCount - 1 ) ? lodCount - 1: lodConfig.length );

+ 14 - 1
h3d/prim/ModelDatabase.hx

@@ -65,7 +65,20 @@ class ModelDatabase {
 			Reflect.setField(root, "lodConfig", lodConfigObj);
 		}
 
-		if (@:privateAccess hmd.lodConfig != null)
+		var isDefaultConfig = true;
+		var defaultConfig = getDefaultLodConfig(@:privateAccess hmd.lib.resource.entry.directory);
+
+		if (defaultConfig.length != @:privateAccess hmd.lodConfig.length)
+			isDefaultConfig = false;
+
+		for (idx in 0...@:privateAccess hmd.lodConfig.length) {
+			if (defaultConfig[idx] != @:privateAccess hmd.lodConfig[idx]) {
+				isDefaultConfig = false;
+				break;
+			}
+		}
+
+		if (!isDefaultConfig)
 			Reflect.setField(lodConfigObj, name, @:privateAccess hmd.lodConfig);
 		else
 			Reflect.deleteField(lodConfigObj, name);