71 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/env python3
 | |
| 
 | |
| import bpy, socket, json, subprocess, os, platform, subprocess, select
 | |
| 
 | |
| def startServer():
 | |
| 
 | |
|     active = True
 | |
|     baking = False
 | |
| 
 | |
|     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
 | |
|     sock.bind(('localhost', 9898))  
 | |
|     sock.listen(1)
 | |
| 
 | |
|     print("Server started")
 | |
| 
 | |
|     while active:
 | |
|         connection,address = sock.accept()  
 | |
| 
 | |
|         data = connection.recv(1024)  
 | |
| 
 | |
|         if data:
 | |
| 
 | |
|             parsed_data = json.loads(data.decode())
 | |
| 
 | |
|             if parsed_data["call"] == 0: #Ping
 | |
| 
 | |
|                 print("Pinged by: " + str(connection.getsockname()))
 | |
|                 connection.sendall(("Ping callback").encode())
 | |
| 
 | |
|             elif parsed_data["call"] == 1: #Command
 | |
| 
 | |
|                 if parsed_data["command"] == 0: #Shutdown
 | |
| 
 | |
|                     print("Server shutdown")
 | |
|                     active = False
 | |
|                     
 | |
|                 if parsed_data["command"] == 1: #Baking
 | |
| 
 | |
|                     print("Baking...")
 | |
| 
 | |
|                     args = parsed_data["args"]
 | |
| 
 | |
|                     blenderpath = bpy.app.binary_path
 | |
| 
 | |
|                     if not baking:
 | |
| 
 | |
|                         baking = True
 | |
| 
 | |
|                         pipe = subprocess.Popen([blenderpath, "-b", str(args[0]), "--python-expr", 'import bpy; import thelightmapper; thelightmapper.addon.utility.build.prepare_build(0, True);'], shell=True, stdout=subprocess.PIPE)
 | |
| 
 | |
|                         stdout = pipe.communicate()[0]
 | |
| 
 | |
|                         print("Baking finished...")
 | |
| 
 | |
|                         active = False
 | |
| 
 | |
|                     else:
 | |
| 
 | |
|                         print("Request denied, server busy...")
 | |
| 
 | |
|                 print("Data received: " + data.decode())
 | |
| 
 | |
|         connection.send(('Callback from: ' + str(socket.gethostname())).encode())
 | |
| 
 | |
|         connection.close()
 | |
| 
 | |
|         print("Connection closed.")
 | |
| 
 | |
|     sock.close()
 | |
| 
 | |
|     print("Server closed.") |