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.")
							 |