forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			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.") |