diff --git a/colorbleed/launcher_actions.py b/colorbleed/launcher_actions.py index edd8404bcf..7d72cb2b38 100644 --- a/colorbleed/launcher_actions.py +++ b/colorbleed/launcher_actions.py @@ -38,8 +38,49 @@ class FusionRenderNode(api.Action): return lib.launch(executable=executable, args=[], environment=env) +class VrayRenderSlave(api.Action): + + name = "vrayrenderslave" + label = "V-Ray Slave" + icon = "object-group" + order = 996 + + def is_compatible(self, session): + """Return whether the action is compatible with the session""" + if "AVALON_PROJECT" in session: + return False + return True + + def process(self, session, **kwargs): + """Implement the behavior for when the action is triggered + + Args: + session (dict): environment dictionary + + Returns: + Popen instance of newly spawned process + + """ + + # Update environment with session + env = os.environ.copy() + env.update(session) + + # Get executable by name + app = lib.get_application(self.name) + env.update(app["environment"]) + executable = lib.which(app["executable"]) + + # Run as server + arguments = ["-server", "-portNumber=20207"] + + return lib.launch(executable=executable, + args=arguments, + environment=env) + + def register_launcher_actions(): """Register specific actions which should be accessible in the launcher""" - # Register fusion actions pipeline.register_plugin(api.Action, FusionRenderNode) + pipeline.register_plugin(api.Action, VrayRenderSlave)