LOD emitter service
	
		
			
	
		
	
	
		
	
		
			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
							
								
									5be0a197c3
								
							
						
					
					
						commit
						6e0acf8b05
					
				| @ -1954,6 +1954,7 @@ Block chunks properly stride | ||||
| Work on rotating structures | ||||
| Towns spawn a population of characters when they are max-res'd | ||||
| Hitbox synchronization work | ||||
| LOD emitter service | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -176,6 +176,7 @@ public class ServerEntityUtils { | ||||
|         if(ServerCharacterData.hasServerCharacterDataTree(entity)){ | ||||
|             Globals.serverState.characterService.removeEntity(ServerCharacterData.getServerCharacterData(entity).getCharacterData()); | ||||
|         } | ||||
|         Globals.serverState.lodEmitterService.deregisterLODEmitter(entity); | ||||
| 
 | ||||
|         // | ||||
|         //Stop inventory watching | ||||
|  | ||||
| @ -11,6 +11,7 @@ import electrosphere.server.datacell.RealmManager; | ||||
| import electrosphere.server.db.DatabaseController; | ||||
| import electrosphere.server.saves.Save; | ||||
| import electrosphere.server.service.CharacterService; | ||||
| import electrosphere.server.service.LODEmitterService; | ||||
| import electrosphere.server.service.StructureScanningService; | ||||
| import electrosphere.server.simulation.MicroSimulation; | ||||
| 
 | ||||
| @ -59,6 +60,11 @@ public class ServerState { | ||||
|      */ | ||||
|     public final StructureScanningService structureScanningService; | ||||
| 
 | ||||
|     /** | ||||
|      * The lod emitter service | ||||
|      */ | ||||
|     public final LODEmitterService lodEmitterService; | ||||
| 
 | ||||
|     /** | ||||
|      * behavior tree tracking service | ||||
|      */ | ||||
| @ -85,6 +91,7 @@ public class ServerState { | ||||
|     public ServerState(){ | ||||
|         this.characterService = (CharacterService)Globals.engineState.serviceManager.registerService(new CharacterService()); | ||||
|         this.structureScanningService = (StructureScanningService)Globals.engineState.serviceManager.registerService(new StructureScanningService()); | ||||
|         this.lodEmitterService = (LODEmitterService)Globals.engineState.serviceManager.registerService(new LODEmitterService()); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -100,6 +100,7 @@ public class PlayerCharacterCreation { | ||||
|     static void addPlayerServerBTrees(Entity entity, ServerConnectionHandler serverConnectionHandler){ | ||||
|         ServerPlayerViewDirTree.attachServerPlayerViewDirTree(entity); | ||||
|         ServerCharacterData.attachServerCharacterData(entity, Globals.serverState.characterService.getCharacter(serverConnectionHandler.getCharacterId())); | ||||
|         Globals.serverState.lodEmitterService.registerLODEmitter(entity); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  | ||||
| @ -0,0 +1,66 @@ | ||||
| package electrosphere.server.service; | ||||
| 
 | ||||
| import java.util.Collections; | ||||
| import java.util.LinkedList; | ||||
| import java.util.List; | ||||
| import java.util.concurrent.locks.ReentrantLock; | ||||
| 
 | ||||
| import electrosphere.engine.signal.Signal.SignalType; | ||||
| import electrosphere.engine.signal.SignalServiceImpl; | ||||
| import electrosphere.entity.Entity; | ||||
| 
 | ||||
| /** | ||||
|  * Manages lod emitters | ||||
|  */ | ||||
| public class LODEmitterService extends SignalServiceImpl { | ||||
| 
 | ||||
|     /** | ||||
|      * The set of LOD emitters | ||||
|      */ | ||||
|     private List<Entity> emitters = new LinkedList<Entity>(); | ||||
| 
 | ||||
|     /** | ||||
|      * Lock for thread-safeing the service | ||||
|      */ | ||||
|     private ReentrantLock lock = new ReentrantLock(); | ||||
| 
 | ||||
|     /** | ||||
|      * Creates the LOD emitter service | ||||
|      */ | ||||
|     public LODEmitterService() { | ||||
|         super("LODEmitterService", new SignalType[]{ | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Gets the list of LOD emitters | ||||
|      * @return The list of LOD emitters | ||||
|      */ | ||||
|     public List<Entity> getEmitters(){ | ||||
|         lock.lock(); | ||||
|         List<Entity> rVal = Collections.unmodifiableList(this.emitters); | ||||
|         lock.unlock(); | ||||
|         return rVal; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Registers a LOD emitter | ||||
|      * @param entity The entity | ||||
|      */ | ||||
|     public void registerLODEmitter(Entity entity){ | ||||
|         lock.lock(); | ||||
|         this.emitters.add(entity); | ||||
|         lock.unlock(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Deregisters a LOD emitter | ||||
|      * @param entity The entity | ||||
|      */ | ||||
|     public void deregisterLODEmitter(Entity entity){ | ||||
|         lock.lock(); | ||||
|         this.emitters.remove(entity); | ||||
|         lock.unlock(); | ||||
|     } | ||||
|      | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user