|
@@ -39,6 +39,7 @@ class Terrain extends Object3D {
|
|
// Utility
|
|
// Utility
|
|
var tmpSurfacesProps : Array<SurfaceProps> = [];
|
|
var tmpSurfacesProps : Array<SurfaceProps> = [];
|
|
var unpackWeight = new h3d.pass.ScreenFx(new UnpackWeight());
|
|
var unpackWeight = new h3d.pass.ScreenFx(new UnpackWeight());
|
|
|
|
+ var modified = false;
|
|
|
|
|
|
#if editor
|
|
#if editor
|
|
var packWeight = new h3d.pass.ScreenFx(new PackWeight());
|
|
var packWeight = new h3d.pass.ScreenFx(new PackWeight());
|
|
@@ -109,7 +110,10 @@ class Terrain extends Object3D {
|
|
#if editor
|
|
#if editor
|
|
obj.autoCreateTile = autoCreateTile;
|
|
obj.autoCreateTile = autoCreateTile;
|
|
obj.showChecker = terrain.showChecker;
|
|
obj.showChecker = terrain.showChecker;
|
|
- if( editor != null && terrain.surfaces.length > 0 ) editor.saveTextures();
|
|
|
|
|
|
+ if( modified ) {
|
|
|
|
+ modified = false;
|
|
|
|
+ if( editor != null && terrain.surfaces.length > 0 ) editor.saveTextures();
|
|
|
|
+ }
|
|
#end
|
|
#end
|
|
|
|
|
|
return obj;
|
|
return obj;
|
|
@@ -158,20 +162,24 @@ class Terrain extends Object3D {
|
|
}
|
|
}
|
|
case "w":
|
|
case "w":
|
|
if( weight ) {
|
|
if( weight ) {
|
|
|
|
+ tile.weightMapResource = res;
|
|
var tex = res.toTexture();
|
|
var tex = res.toTexture();
|
|
if( tile.surfaceWeights.length == 0 ) @:privateAccess tile.refreshSurfaceWeights();
|
|
if( tile.surfaceWeights.length == 0 ) @:privateAccess tile.refreshSurfaceWeights();
|
|
|
|
+ var engine = h3d.Engine.getCurrent();
|
|
for(i in 0 ... tile.surfaceWeights.length){
|
|
for(i in 0 ... tile.surfaceWeights.length){
|
|
- h3d.Engine.getCurrent().pushTarget(tile.surfaceWeights[i]);
|
|
|
|
|
|
+ engine.pushTarget(tile.surfaceWeights[i]);
|
|
unpackWeight.shader.indexMap = tile.surfaceIndexMap;
|
|
unpackWeight.shader.indexMap = tile.surfaceIndexMap;
|
|
unpackWeight.shader.packedWeightTexture = tex;
|
|
unpackWeight.shader.packedWeightTexture = tex;
|
|
unpackWeight.shader.index = i;
|
|
unpackWeight.shader.index = i;
|
|
unpackWeight.render();
|
|
unpackWeight.render();
|
|
|
|
+ engine.popTarget();
|
|
}
|
|
}
|
|
tile.generateWeightArray();
|
|
tile.generateWeightArray();
|
|
tex.dispose();
|
|
tex.dispose();
|
|
}
|
|
}
|
|
case"i":
|
|
case"i":
|
|
if( index ) {
|
|
if( index ) {
|
|
|
|
+ tile.indexMapResource = res;
|
|
var tex = res.toTexture();
|
|
var tex = res.toTexture();
|
|
if( tile.surfaceIndexMap == null ) @:privateAccess tile.refreshIndexMap();
|
|
if( tile.surfaceIndexMap == null ) @:privateAccess tile.refreshIndexMap();
|
|
h3d.pass.Copy.run(tex, tile.surfaceIndexMap);
|
|
h3d.pass.Copy.run(tex, tile.surfaceIndexMap);
|
|
@@ -517,9 +525,11 @@ class Terrain extends Object3D {
|
|
tile.blendEdges();
|
|
tile.blendEdges();
|
|
if( editor != null )
|
|
if( editor != null )
|
|
editor.refresh();
|
|
editor.refresh();
|
|
|
|
+ modified = true;
|
|
});
|
|
});
|
|
|
|
|
|
ctx.properties.add(props, this, function(pname) {
|
|
ctx.properties.add(props, this, function(pname) {
|
|
|
|
+ modified = true;
|
|
ctx.onChange(this, pname);
|
|
ctx.onChange(this, pname);
|
|
});
|
|
});
|
|
|
|
|