Skip to content

Commit 300ad0d

Browse files
committed
Merge branch 'Development' into node-groups
2 parents 08bcaf7 + ae62e67 commit 300ad0d

File tree

8 files changed

+39
-119
lines changed

8 files changed

+39
-119
lines changed

BlenderMalt/MaltMaterial.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import os
22
import bpy
3-
from BlenderMalt.MaltUtils import malt_path_getter, malt_path_setter
3+
from BlenderMalt.MaltUtils import malt_path_set_transform, malt_path_get_transform
44
from . MaltProperties import MaltPropertyGroup
55

66
_MATERIALS = {}
@@ -28,7 +28,7 @@ def poll_tree(self, object):
2828
options={'LIBRARY_EDITABLE'}, override={'LIBRARY_OVERRIDABLE'})
2929

3030
shader_source : bpy.props.StringProperty(name="Shader Source", subtype='FILE_PATH', update=update_source,
31-
set=malt_path_setter('shader_source'), get=malt_path_getter('shader_source'),
31+
set_transform=malt_path_set_transform, get_transform=malt_path_get_transform,
3232
options={'LIBRARY_EDITABLE'}, override={'LIBRARY_OVERRIDABLE'})
3333

3434
shader_nodes : bpy.props.PointerProperty(name="Node Tree", type=bpy.types.NodeTree, update=update_nodes, poll=poll_tree,

BlenderMalt/MaltNodes/MaltNodeTree.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import bpy
44
from BlenderMalt.MaltProperties import MaltPropertyGroup
55
from BlenderMalt import MaltPipeline
6-
from BlenderMalt.MaltUtils import malt_path_setter, malt_path_getter
6+
from BlenderMalt.MaltUtils import malt_path_set_transform, malt_path_get_transform
77

88
from BlenderMalt.MaltNodes.MaltNode import MaltNode
99

@@ -73,7 +73,7 @@ def update_graph_type(self, context):
7373
library_source : bpy.props.StringProperty(name="Local Library", subtype='FILE_PATH',
7474
options={'LIBRARY_EDITABLE'},
7575
override={'LIBRARY_OVERRIDABLE'},
76-
set=malt_path_setter('library_source'), get=malt_path_getter('library_source'))
76+
set_transform=malt_path_set_transform, get_transform=malt_path_get_transform)
7777

7878
disable_updates : bpy.props.BoolProperty(name="Disable Updates", default=False,
7979
options={'LIBRARY_EDITABLE'}, override={'LIBRARY_OVERRIDABLE'})

BlenderMalt/MaltNodes/MaltNodeUITools.py

Lines changed: 0 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -418,100 +418,6 @@ def get_absolute_node_position(node: bpy.types.Node):
418418
return node.location
419419
return get_absolute_node_position(node.parent) + node.location
420420

421-
# Blender 3.4 changed the way add_search works and broke NodeItems searches
422-
# See https://developer.blender.org/T103108
423-
# This is a copy of the 3.3 NODE_OT_add_search operator so we can get the functionality back
424-
from bl_operators.node import *
425-
class NODE_OT_malt_add_search(NodeAddOperator, Operator):
426-
'''Add a node to the active tree'''
427-
bl_idname = "node.malt_add_search"
428-
bl_label = "Search and Add Node"
429-
bl_options = {'REGISTER', 'UNDO'}
430-
bl_property = "node_item"
431-
432-
@classmethod
433-
def poll(cls, context):
434-
return is_malt_tree_context(context)
435-
436-
_enum_item_hack = []
437-
438-
# Create an enum list from node items
439-
def node_enum_items(self, context):
440-
import nodeitems_utils
441-
442-
enum_items = NODE_OT_malt_add_search._enum_item_hack
443-
enum_items.clear()
444-
445-
for index, item in enumerate(nodeitems_utils.node_items_iter(context)):
446-
if isinstance(item, nodeitems_utils.NodeItem):
447-
enum_items.append(
448-
(str(index),
449-
item.label,
450-
"",
451-
index,
452-
))
453-
return enum_items
454-
455-
# Look up the item based on index
456-
def find_node_item(self, context):
457-
import nodeitems_utils
458-
459-
node_item = int(self.node_item)
460-
for index, item in enumerate(nodeitems_utils.node_items_iter(context)):
461-
if index == node_item:
462-
return item
463-
return None
464-
465-
node_item: bpy.props.EnumProperty(
466-
name="Node Type",
467-
description="Node type",
468-
items=node_enum_items,
469-
)
470-
471-
def execute(self, context):
472-
item = self.find_node_item(context)
473-
474-
# no need to keep
475-
self._enum_item_hack.clear()
476-
477-
if item:
478-
# apply settings from the node item
479-
for setting in item.settings.items():
480-
ops = self.settings.add()
481-
ops.name = setting[0]
482-
ops.value = setting[1]
483-
484-
self.create_node(context, item.nodetype)
485-
486-
if self.use_transform:
487-
bpy.ops.node.translate_attach_remove_on_cancel(
488-
'INVOKE_DEFAULT')
489-
490-
return {'FINISHED'}
491-
else:
492-
return {'CANCELLED'}
493-
494-
def invoke(self, context, event):
495-
self.store_mouse_cursor(context, event)
496-
# Delayed execution in the search popup
497-
context.window_manager.invoke_search_popup(self)
498-
return {'CANCELLED'}
499-
500-
def draw_malt_add_search_menu(menu, context):
501-
if context.area.ui_type != 'MaltTree':
502-
return
503-
layout = menu.layout
504-
if is_malt_tree_context(context) == False:
505-
layout.label(text="No node tree selected", icon='ERROR')
506-
elif context.space_data.edit_tree.graph_type == '':
507-
layout.label(text="No node tree type selected", icon='ERROR')
508-
else:
509-
row = layout.row()
510-
row.operator_context = "INVOKE_DEFAULT"
511-
operator = row.operator("node.malt_add_search", text="Search... (Malt)", icon='VIEW_ZOOM')
512-
operator.use_transform = True
513-
514-
515421
classes = [
516422
NodeTreePreview,
517423
OT_MaltEditNodeTree,
@@ -521,7 +427,6 @@ def draw_malt_add_search_menu(menu, context):
521427
OT_MaltAddNodeGroup,
522428
OT_MaltNodesToGroup,
523429
NODE_OT_add_malt_subcategory_node,
524-
NODE_OT_malt_add_search,
525430
]
526431

527432
class MaltNodeDrawCallbacks:
@@ -630,12 +535,8 @@ def register():
630535
NodeTree.tree_preview = PointerProperty(type=NodeTreePreview, name='Node Tree Preview',
631536
options={'LIBRARY_EDITABLE'}, override={'LIBRARY_OVERRIDABLE'})
632537

633-
bpy.types.NODE_MT_add.prepend(draw_malt_add_search_menu)
634-
635538

636539
def unregister():
637-
bpy.types.NODE_MT_add.remove(draw_malt_add_search_menu)
638-
639540
del NodeTree.tree_preview
640541

641542
for km, kmi in keymaps:

BlenderMalt/MaltPipeline.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import os, platform, time
22
import bpy
3-
from BlenderMalt.MaltUtils import malt_path_getter, malt_path_setter
3+
from BlenderMalt.MaltUtils import malt_path_set_transform, malt_path_get_transform
44
from . import MaltMaterial, MaltMeshes, MaltTextures
55

66
_BRIDGE = None
@@ -106,11 +106,11 @@ def update_pipeline_settings(self, context):
106106
self.update_pipeline(context)
107107

108108
pipeline : bpy.props.StringProperty(name="Malt Pipeline", subtype='FILE_PATH', update=update_pipeline_settings,
109-
set=malt_path_setter('pipeline'), get=malt_path_getter('pipeline'),
109+
set_transform=malt_path_set_transform, get_transform=malt_path_get_transform,
110110
options={'LIBRARY_EDITABLE'}, override={'LIBRARY_OVERRIDABLE'})
111111

112112
plugins_dir : bpy.props.StringProperty(name="Local Plugins", subtype='DIR_PATH', update=update_pipeline_settings,
113-
set=malt_path_setter('plugins_dir'), get=malt_path_getter('plugins_dir'),
113+
set_transform=malt_path_set_transform, get_transform=malt_path_get_transform,
114114
options={'LIBRARY_EDITABLE'}, override={'LIBRARY_OVERRIDABLE'})
115115

116116
viewport_bit_depth : bpy.props.EnumProperty(items=[('8', '8', ''),('16', '16', ''),('32', '32', '')],

BlenderMalt/MaltUtils.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,11 @@ def invoke(self, context, event):
2525
return {'RUNNING_MODAL'}
2626

2727
# Always store paths in UNIX format so saved files work across OSs
28-
def malt_path_setter(property_name):
29-
def setter(self, value):
30-
self[property_name] = value.replace('\\','/')
31-
return setter
32-
33-
def malt_path_getter(property_name):
34-
def getter(self):
35-
return self.get(property_name,'').replace('\\','/')
36-
return getter
28+
def malt_path_set_transform(self, new_value, curr_value, is_set):
29+
return new_value.replace('\\','/')
30+
31+
def malt_path_get_transform(self, curr_value, is_set):
32+
return curr_value.replace('\\','/')
3733

3834
# Operator buttons are generated every time the UI is redrawn.
3935
# The UI is redrawn for every frame the cursor hovers over it

BlenderMalt/__init__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
__MALT_DEPENDENCIES_PATH = path.join(__MALT_PATH,'Malt','.Dependencies-{}'.format(_PY_VERSION))
2222
if __MALT_DEPENDENCIES_PATH not in sys.path: sys.path.append(__MALT_DEPENDENCIES_PATH)
2323

24-
from BlenderMalt.MaltUtils import malt_path_getter, malt_path_setter
24+
from BlenderMalt.MaltUtils import malt_path_set_transform, malt_path_get_transform
2525

2626
class Preferences(bpy.types.AddonPreferences):
2727
# this must match the addon name
@@ -31,13 +31,13 @@ class Preferences(bpy.types.AddonPreferences):
3131
description="Setups a VSCode project on your .blend file folder")
3232

3333
renderdoc_path : bpy.props.StringProperty(name="RenderDoc Path", subtype='FILE_PATH',
34-
set=malt_path_setter('renderdoc_path'), get=malt_path_getter('renderdoc_path'))
34+
set_transform=malt_path_set_transform, get_transform=malt_path_get_transform)
3535

3636
plugins_dir : bpy.props.StringProperty(name="Global Plugins", subtype='DIR_PATH',
37-
set=malt_path_setter('plugins_dir'), get=malt_path_getter('plugins_dir'))
37+
set_transform=malt_path_set_transform, get_transform=malt_path_get_transform)
3838

3939
docs_path : bpy.props.StringProperty(name="Docs Path", subtype='DIR_PATH',
40-
set=malt_path_setter('docs_path'), get=malt_path_getter('docs_path'))
40+
set_transform=malt_path_set_transform, get_transform=malt_path_get_transform)
4141

4242
render_fps_cap : bpy.props.IntProperty(name="Max Viewport Render Framerate", default=30)
4343

Malt/GL/Shader.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,17 @@ def shader_preprocessor(shader_source, include_directories=[], definitions=[]):
169169
dependencies_path = os.path.join(os.path.dirname(__file__), '..', f'.Dependencies-{py_version}')
170170
mcpp = os.path.join(dependencies_path, f'mcpp-{platform.system()}')
171171

172+
if platform.system() == "Linux":
173+
# NixOS and Guix System will cannot run the included mcpp binary
174+
result = subprocess.run(f'"{mcpp}"', shell=True, stdin=subprocess.DEVNULL, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
175+
if result.returncode != 0:
176+
# Search for system mcpp
177+
for directory in os.get_exec_path():
178+
path = os.path.join(directory, "mcpp")
179+
if os.path.isfile(path) and os.access(path, os.X_OK):
180+
mcpp = path
181+
182+
172183
command = f'"{mcpp}"'
173184
command += ' -C' #keep comments
174185
for directory in include_directories:

Malt/PipelineParameters.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,18 @@ def __init__(self, options, default_option, filter=None, doc=None):
124124

125125
def from_index(self, index):
126126
return self.enum_options[index]
127+
128+
class FloatParameter(Parameter):
129+
def __init__(self, default_value, min=None, max=None, size=1, filter=None, doc=None):
130+
self.min = min
131+
self.max = max
132+
super().__init__(default_value, Type.FLOAT, size, filter, None, doc)
133+
134+
class IntParameter(Parameter):
135+
def __init__(self, default_value, min=None, max=None, size=1, filter=None, doc=None):
136+
self.min = min
137+
self.max = max
138+
super().__init__(default_value, Type.INT, size, filter, None, doc)
127139

128140
def gl_type_to_malt_type(gl_type):
129141
from Malt.GL import GL

0 commit comments

Comments
 (0)