forward neighbor edge msk
This commit is contained in:
@@ -760,7 +760,7 @@ public class AsyncNodeManager {
|
||||
return this.workCounter.get()!=0 || RESULT_HANDLE.get(this) != null;
|
||||
}
|
||||
|
||||
public void worldEvent(WorldSection section, int flags) {
|
||||
public void worldEvent(WorldSection section, int flags, int neighborMask) {
|
||||
//If there is any change, we need to clear the geometry cache before emitting update
|
||||
this.geometryCache.clear(section.key);
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ public class WorldEngine {
|
||||
public static final int UPDATE_TYPE_DONT_SAVE = 4;
|
||||
public static final int DEFAULT_UPDATE_FLAGS = UPDATE_TYPE_BLOCK_BIT | UPDATE_TYPE_CHILD_EXISTENCE_BIT;
|
||||
|
||||
public interface ISectionChangeCallback {void accept(WorldSection section, int updateFlags);}
|
||||
public interface ISectionChangeCallback {void accept(WorldSection section, int updateFlags, int neighborMsk);}
|
||||
public interface ISectionSaveCallback {void save(WorldEngine engine, WorldSection section);}
|
||||
|
||||
private final TrackedObject thisTracker = TrackedObject.createTrackedObject(this);
|
||||
@@ -113,16 +113,16 @@ public class WorldEngine {
|
||||
|
||||
//Marks a section as dirty, enqueuing it for saving and or render data rebuilding
|
||||
public void markDirty(WorldSection section) {
|
||||
this.markDirty(section, DEFAULT_UPDATE_FLAGS);
|
||||
this.markDirty(section, DEFAULT_UPDATE_FLAGS, 0);
|
||||
}
|
||||
|
||||
public void markDirty(WorldSection section, int changeState) {
|
||||
public void markDirty(WorldSection section, int changeState, int neighborMsk) {
|
||||
if (!this.isLive) throw new IllegalStateException("World is not live");
|
||||
if (section.tracker != this.sectionTracker) {
|
||||
throw new IllegalStateException("Section is not from here");
|
||||
}
|
||||
if (this.dirtyCallback != null) {
|
||||
this.dirtyCallback.accept(section, changeState);
|
||||
this.dirtyCallback.accept(section, changeState, neighborMsk);
|
||||
}
|
||||
if ((!section.inSaveQueue)&&(changeState&UPDATE_TYPE_DONT_SAVE)==0) {
|
||||
section.markDirty();
|
||||
|
||||
@@ -113,7 +113,7 @@ public class WorldUpdater {
|
||||
neighbors |= ((section.z^(section.z+1))>>(lvl+1))==0?0:1<<5;//+z
|
||||
}
|
||||
|
||||
into.markDirty(worldSection, (didStateChange?UPDATE_TYPE_BLOCK_BIT:0)|(emptinessStateChange!=0?UPDATE_TYPE_CHILD_EXISTENCE_BIT:0));
|
||||
into.markDirty(worldSection, (didStateChange?UPDATE_TYPE_BLOCK_BIT:0)|(emptinessStateChange!=0?UPDATE_TYPE_CHILD_EXISTENCE_BIT:0), neighbors);
|
||||
}
|
||||
|
||||
//Need to release the section after using it
|
||||
|
||||
Reference in New Issue
Block a user