diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 0a3917d1..230b2732 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1965,6 +1965,7 @@ Performance improvements - Accumulator draw calls do not use bones - LOD skipping in realm simulation - Shadow map pipeline only considers entities that are nearby + - Character services references set of already-loaded characters when simulating macro data diff --git a/src/main/java/electrosphere/server/service/CharacterService.java b/src/main/java/electrosphere/server/service/CharacterService.java index 7f6ae36b..373b49a8 100644 --- a/src/main/java/electrosphere/server/service/CharacterService.java +++ b/src/main/java/electrosphere/server/service/CharacterService.java @@ -195,6 +195,17 @@ public class CharacterService extends SignalServiceImpl { return rVal; } + /** + * Gets the list of loaded characters + * @return The list of loaded characters + */ + public List getLoadedCharacters(){ + lock.lock(); + List rVal = new LinkedList(this.loadedCharacterMap.values()); + lock.unlock(); + return rVal; + } + /** * Gets the characters at a given world position * @param worldPos The world position diff --git a/src/main/java/electrosphere/server/simulation/MacroSimulation.java b/src/main/java/electrosphere/server/simulation/MacroSimulation.java index d24928c5..699cfe19 100644 --- a/src/main/java/electrosphere/server/simulation/MacroSimulation.java +++ b/src/main/java/electrosphere/server/simulation/MacroSimulation.java @@ -29,9 +29,9 @@ public class MacroSimulation { // //simulate characters Globals.profiler.beginCpuSample("MacroSimulation.simulate - characters"); - List characters = Globals.serverState.characterService.getAllCharacters(); + List characters = Globals.serverState.characterService.getLoadedCharacters(); if(characters != null && characters.size() > 0){ - for(Character character : Globals.serverState.characterService.getAllCharacters()){ + for(Character character : characters){ if(character.getPlayerId() != CharacterService.NO_PLAYER){ continue; }