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