edit block performance fix
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good
This commit is contained in:
parent
1ded83c968
commit
a81e9e203d
BIN
assets/Data/fab/disjointedroom1.block
Normal file
BIN
assets/Data/fab/disjointedroom1.block
Normal file
Binary file not shown.
@ -1583,6 +1583,8 @@ Grid alignment actually aligns entity to grid
|
|||||||
Fix door tree physics
|
Fix door tree physics
|
||||||
BlockFab metadata
|
BlockFab metadata
|
||||||
Structure editing tab in editor view
|
Structure editing tab in editor view
|
||||||
|
Reduce physics generation calls on GriddedDataCellManager
|
||||||
|
Fab selection doesn't overflow anymore
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -132,6 +132,7 @@ public class FabSelectionPanel {
|
|||||||
newButton.setMarginTop(MARGIN_EACH_SIDE);
|
newButton.setMarginTop(MARGIN_EACH_SIDE);
|
||||||
//label
|
//label
|
||||||
Label fabLabel = Label.createLabel(fabFile.getName());
|
Label fabLabel = Label.createLabel(fabFile.getName());
|
||||||
|
fabLabel.setMaxWidth(FAB_BUTTON_WIDTH);
|
||||||
//icon/model
|
//icon/model
|
||||||
ImagePanel texturePanel = ImagePanel.createImagePanel(AssetDataStrings.TEXTURE_DEFAULT);
|
ImagePanel texturePanel = ImagePanel.createImagePanel(AssetDataStrings.TEXTURE_DEFAULT);
|
||||||
texturePanel.setWidth(FAB_BUTTON_TEXTURE_DIM);
|
texturePanel.setWidth(FAB_BUTTON_TEXTURE_DIM);
|
||||||
|
|||||||
@ -152,6 +152,11 @@ public class GriddedDataCellManager implements DataCellManager, VoxelCellManager
|
|||||||
*/
|
*/
|
||||||
int numCleaned = 0;
|
int numCleaned = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Queue of cells that need to have their physics regenerated (ie on block edits)
|
||||||
|
*/
|
||||||
|
Map<Long,Vector3i> physicsQueue = new HashMap<Long,Vector3i>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
* @param parent The gridded data cell manager's parent realm
|
* @param parent The gridded data cell manager's parent realm
|
||||||
@ -658,6 +663,20 @@ public class GriddedDataCellManager implements DataCellManager, VoxelCellManager
|
|||||||
public void simulate(){
|
public void simulate(){
|
||||||
Globals.profiler.beginCpuSample("GriddedDataCellManager.simulate");
|
Globals.profiler.beginCpuSample("GriddedDataCellManager.simulate");
|
||||||
loadedCellsLock.lock();
|
loadedCellsLock.lock();
|
||||||
|
|
||||||
|
|
||||||
|
//regenerate physics where relevant
|
||||||
|
terrainEditLock.acquireUninterruptibly();
|
||||||
|
if(physicsQueue.size() > 0){
|
||||||
|
for(Vector3i pos : physicsQueue.values()){
|
||||||
|
this.createTerrainPhysicsEntities(pos);
|
||||||
|
}
|
||||||
|
physicsQueue.clear();
|
||||||
|
}
|
||||||
|
terrainEditLock.release();
|
||||||
|
|
||||||
|
|
||||||
|
//micro simulation
|
||||||
boolean runMicroSim = Globals.microSimulation != null && Globals.microSimulation.isReady();
|
boolean runMicroSim = Globals.microSimulation != null && Globals.microSimulation.isReady();
|
||||||
for(ServerDataCell cell : this.groundDataCells.values()){
|
for(ServerDataCell cell : this.groundDataCells.values()){
|
||||||
if(runMicroSim && this.shouldSimulate(cell)){
|
if(runMicroSim && this.shouldSimulate(cell)){
|
||||||
@ -1041,7 +1060,10 @@ public class GriddedDataCellManager implements DataCellManager, VoxelCellManager
|
|||||||
ServerDataCell cell = groundDataCells.get(this.getServerDataCellKey(worldPosition));
|
ServerDataCell cell = groundDataCells.get(this.getServerDataCellKey(worldPosition));
|
||||||
if(cell != null){
|
if(cell != null){
|
||||||
//update physics
|
//update physics
|
||||||
this.createTerrainPhysicsEntities(worldPosition);
|
long key = this.getServerDataCellKey(worldPosition);
|
||||||
|
if(!this.physicsQueue.containsKey(key)){
|
||||||
|
this.physicsQueue.put(key,worldPosition);
|
||||||
|
}
|
||||||
|
|
||||||
//broadcast update
|
//broadcast update
|
||||||
cell.broadcastNetworkMessage(TerrainMessage.constructUpdateBlockMessage(
|
cell.broadcastNetworkMessage(TerrainMessage.constructUpdateBlockMessage(
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user