mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-12-08 13:44:56 +00:00
Windows fixes for refactor
This commit is contained in:
@@ -322,6 +322,7 @@ def render_lightmaps(context):
|
||||
pixel_size = int(area_data.lightmap_resolution)
|
||||
|
||||
# Mmm Cycles
|
||||
context.scene.render.engine = 'CYCLES'
|
||||
context.scene.render.bake.margin = pixel_size // 256
|
||||
|
||||
# Iterate materials and setup cycles
|
||||
@@ -330,6 +331,11 @@ def render_lightmaps(context):
|
||||
# Set bake target node active
|
||||
if 'CYCLES_OUT' in mat.node_tree.nodes:
|
||||
mat.node_tree.nodes.active = mat.node_tree.nodes['CYCLES_OUT']
|
||||
elif mat.hecl_lightmap and not mat.library:
|
||||
image_out_node = mat.node_tree.nodes.new('ShaderNodeTexImage')
|
||||
mat.node_tree.nodes.active = image_out_node
|
||||
image_out_node.name = 'CYCLES_OUT'
|
||||
image_out_node.image = make_or_load_cycles_image(mat, area_data)
|
||||
else:
|
||||
image_out_node = mat.node_tree.nodes.new('ShaderNodeTexImage')
|
||||
mat.node_tree.nodes.active = image_out_node
|
||||
@@ -344,11 +350,11 @@ def render_lightmaps(context):
|
||||
for obj in context.scene.objects:
|
||||
if obj.type == 'MESH':
|
||||
|
||||
if not len(obj.data.uv_textures):
|
||||
if not len(obj.data.uv_layers):
|
||||
continue
|
||||
|
||||
# Make correct UV layer active
|
||||
obj.data.uv_textures.active_index = 0
|
||||
obj.data.uv_layers.active_index = 0
|
||||
|
||||
# Make lightmaps
|
||||
bpy.ops.object.bake('INVOKE_DEFAULT', type='DIFFUSE', pass_filter={'DIRECT', 'INDIRECT'})
|
||||
|
||||
@@ -2,10 +2,15 @@ import bpy, sys, os, re, struct, traceback
|
||||
|
||||
ARGS_PATTERN = re.compile(r'''(?:"([^"]+)"|'([^']+)'|(\S+))''')
|
||||
|
||||
# Background mode seems to require quit() in some 2.80 builds
|
||||
def _quitblender():
|
||||
bpy.ops.wm.quit_blender()
|
||||
quit()
|
||||
|
||||
# Extract pipe file descriptors from arguments
|
||||
print('HECL Blender Launch', sys.argv)
|
||||
if '--' not in sys.argv:
|
||||
bpy.ops.wm.quit_blender()
|
||||
_quitblender()
|
||||
args = sys.argv[sys.argv.index('--')+1:]
|
||||
readfd = int(args[0])
|
||||
writefd = int(args[1])
|
||||
@@ -29,7 +34,7 @@ def readpipestr():
|
||||
read_bytes = os.read(readfd, 4)
|
||||
if len(read_bytes) != 4:
|
||||
print('HECL connection lost or desynchronized')
|
||||
bpy.ops.wm.quit_blender()
|
||||
_quitblender()
|
||||
read_len = struct.unpack('I', read_bytes)[0]
|
||||
return os.read(readfd, read_len)
|
||||
|
||||
@@ -44,7 +49,7 @@ def writepipebuf(linebytes):
|
||||
|
||||
def quitblender():
|
||||
writepipestr(b'QUITTING')
|
||||
bpy.ops.wm.quit_blender()
|
||||
_quitblender()
|
||||
|
||||
class PathHasher:
|
||||
def hashpath32(self, path):
|
||||
@@ -62,6 +67,11 @@ class PathHasher:
|
||||
return int(read_str[0:16], 16)
|
||||
return 0
|
||||
|
||||
# Ensure Blender 2.8 is being used
|
||||
if bpy.app.version < (2, 80, 0):
|
||||
writepipestr(b'NOT280')
|
||||
_quitblender()
|
||||
|
||||
# If there's a third argument, use it as the .zip path containing the addon
|
||||
did_install = False
|
||||
if len(args) >= 4 and args[3] != 'SKIPINSTALL':
|
||||
@@ -80,12 +90,12 @@ try:
|
||||
import hecl
|
||||
except:
|
||||
writepipestr(b'NOADDON')
|
||||
bpy.ops.wm.quit_blender()
|
||||
_quitblender()
|
||||
|
||||
# Quit if just installed
|
||||
if did_install:
|
||||
writepipestr(b'ADDONINSTALLED')
|
||||
bpy.ops.wm.quit_blender()
|
||||
_quitblender()
|
||||
|
||||
# Intro handshake
|
||||
writepipestr(b'READY')
|
||||
@@ -108,7 +118,7 @@ def read_cmdargs():
|
||||
cmdline = readpipestr()
|
||||
if cmdline == b'':
|
||||
print('HECL connection lost')
|
||||
bpy.ops.wm.quit_blender()
|
||||
_quitblender()
|
||||
cmdargs = []
|
||||
for match in ARGS_PATTERN.finditer(cmdline.decode()):
|
||||
cmdargs.append(match.group(match.lastindex))
|
||||
|
||||
Reference in New Issue
Block a user