Skip to content

Commit fe4f808

Browse files
authored
Merge pull request #4132 from DarkWeird/refactor-relevance
chore: Extract relevance code for ChunkProvider's to RelevanceSystem
2 parents 1e33e71 + 0b5beb8 commit fe4f808

File tree

8 files changed

+302
-316
lines changed

8 files changed

+302
-316
lines changed

engine-tests/src/test/java/org/terasology/world/propagation/BetweenChunkPropagationTest.java

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -238,26 +238,6 @@ public Collection<Chunk> getAllChunks() {
238238
return this.chunks.values();
239239
}
240240

241-
@Override
242-
public void addRelevanceEntity(EntityRef entity, Vector3i distance) {
243-
// do nothing
244-
}
245-
246-
@Override
247-
public void addRelevanceEntity(EntityRef entity, Vector3i distance, ChunkRegionListener listener) {
248-
// do nothing
249-
}
250-
251-
@Override
252-
public void updateRelevanceEntity(EntityRef entity, Vector3i distance) {
253-
// do nothing
254-
}
255-
256-
@Override
257-
public void removeRelevanceEntity(EntityRef entity) {
258-
// do nothing
259-
}
260-
261241
@Override
262242
public void completeUpdate() {
263243
// do nothing

engine/src/main/java/org/terasology/engine/modes/loadProcesses/InitialiseWorld.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,10 @@ public boolean step() {
139139
context.put(StorageManager.class, storageManager);
140140
LocalChunkProvider chunkProvider = new LocalChunkProvider(storageManager, entityManager, worldGenerator,
141141
blockManager, extraDataManager);
142-
context.get(ComponentSystemManager.class).register(new RelevanceSystem(chunkProvider), "engine:relevanceSystem");
142+
RelevanceSystem relevanceSystem = new RelevanceSystem(chunkProvider);
143+
context.put(RelevanceSystem.class, relevanceSystem);
144+
context.get(ComponentSystemManager.class).register(relevanceSystem, "engine:relevanceSystem");
145+
chunkProvider.setRelevanceSystem(relevanceSystem);
143146
Block unloadedBlock = blockManager.getBlock(BlockManager.UNLOADED_ID);
144147
WorldProviderCoreImpl worldProviderCore = new WorldProviderCoreImpl(worldInfo, chunkProvider, unloadedBlock, context);
145148
EntityAwareWorldProvider entityWorldProvider = new EntityAwareWorldProvider(worldProviderCore, context);

engine/src/main/java/org/terasology/logic/players/PlayerSystem.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import org.terasology.rendering.world.viewDistance.ViewDistance;
5151
import org.terasology.world.WorldProvider;
5252
import org.terasology.world.chunks.ChunkProvider;
53+
import org.terasology.world.chunks.localChunkProvider.RelevanceSystem;
5354
import org.terasology.world.generator.WorldGenerator;
5455

5556
import java.util.Iterator;
@@ -68,6 +69,8 @@ public class PlayerSystem extends BaseComponentSystem implements UpdateSubscribe
6869
@In
6970
private ChunkProvider chunkProvider;
7071
@In
72+
private RelevanceSystem relevanceSystem;
73+
@In
7174
private NetworkSystem networkSystem;
7275
private List<SpawningClientInfo> clientsPreparingToSpawn = Lists.newArrayList();
7376
private List<SpawningClientInfo> clientsPreparingToRespawn = Lists.newArrayList();
@@ -191,20 +194,20 @@ private void updateRelevanceEntity(EntityRef entity, Vector3ic chunkDistance) {
191194
//RelevanceRegionComponent relevanceRegion = new RelevanceRegionComponent();
192195
//relevanceRegion.distance = chunkDistance;
193196
//entity.saveComponent(relevanceRegion);
194-
chunkProvider.updateRelevanceEntity(entity, JomlUtil.from(chunkDistance));
197+
relevanceSystem.updateRelevanceEntityDistance(entity, JomlUtil.from(chunkDistance));
195198
}
196199

197200
private void removeRelevanceEntity(EntityRef entity) {
198201
//entity.removeComponent(RelevanceRegionComponent.class);
199-
chunkProvider.removeRelevanceEntity(entity);
202+
relevanceSystem.removeRelevanceEntity(entity);
200203
}
201204

202205

203206
private void addRelevanceEntity(EntityRef entity, Vector3ic chunkDistance, Client owner) {
204207
//RelevanceRegionComponent relevanceRegion = new RelevanceRegionComponent();
205208
//relevanceRegion.distance = chunkDistance;
206209
//entity.addComponent(relevanceRegion);
207-
chunkProvider.addRelevanceEntity(entity, JomlUtil.from(chunkDistance), owner);
210+
relevanceSystem.addRelevanceEntity(entity, JomlUtil.from(chunkDistance), owner);
208211
}
209212

210213
@ReceiveEvent(components = ClientComponent.class)

engine/src/main/java/org/terasology/rendering/world/viewDistance/ServerViewDistanceSystem.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import org.terasology.network.ClientComponent;
2626
import org.terasology.network.NetworkSystem;
2727
import org.terasology.registry.In;
28-
import org.terasology.world.chunks.ChunkProvider;
28+
import org.terasology.world.chunks.localChunkProvider.RelevanceSystem;
2929

3030
/**
3131
* Handles view distance changes on the server
@@ -37,14 +37,14 @@ public class ServerViewDistanceSystem extends BaseComponentSystem {
3737
private NetworkSystem networkSystem;
3838

3939
@In
40-
private ChunkProvider chunkProvider;
40+
private RelevanceSystem relevanceSystem;
4141

4242
@ReceiveEvent(components = ClientComponent.class)
4343
public void onChangeViewDistanceChanged(ViewDistanceChangedEvent request, EntityRef entity) {
4444
Client client = networkSystem.getOwner(entity);
4545
if (client != null) {
4646
client.setViewDistanceMode(request.getNewViewRange());
47-
chunkProvider.updateRelevanceEntity(entity, JomlUtil.from(client.getViewDistance().getChunkDistance()));
47+
relevanceSystem.updateRelevanceEntityDistance(entity, JomlUtil.from(client.getViewDistance().getChunkDistance()));
4848
}
4949
}
5050

engine/src/main/java/org/terasology/world/chunks/ChunkProvider.java

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -54,37 +54,6 @@ public interface ChunkProvider {
5454
*/
5555
void setWorldEntity(EntityRef entity);
5656

57-
/**
58-
* Requests that a region around the given entity be maintained in near cache
59-
*
60-
* @param entity
61-
* @param distance The region (in chunks) around the entity that should be near cached
62-
*/
63-
void addRelevanceEntity(EntityRef entity, Vector3i distance);
64-
65-
/**
66-
* Requests that a region around the given entity be maintained in near cache
67-
*
68-
* @param entity
69-
* @param distance The region (in chunks) around the entity that should be near cached
70-
* @param listener A listener to chunk region events
71-
*/
72-
void addRelevanceEntity(EntityRef entity, Vector3i distance, ChunkRegionListener listener);
73-
74-
/**
75-
* Retrieves the ChunkRelevanceRegion object for the given entity
76-
*
77-
* @param entity
78-
*/
79-
void updateRelevanceEntity(EntityRef entity, Vector3i distance);
80-
81-
/**
82-
* Removes an entity from producing a caching region
83-
*
84-
* @param entity
85-
*/
86-
void removeRelevanceEntity(EntityRef entity);
87-
8857
/**
8958
* Finish adding any pending chunks
9059
*/

0 commit comments

Comments
 (0)