diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2020/MayaUE4RBFPlugin2020.mll b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2020/MayaUE4RBFPlugin2020.mll new file mode 100644 index 0000000..ca55c34 Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2020/MayaUE4RBFPlugin2020.mll differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2020/MayaUE4RBFUI.py b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2020/MayaUE4RBFUI.py new file mode 100644 index 0000000..59c3122 --- /dev/null +++ b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2020/MayaUE4RBFUI.py @@ -0,0 +1,201 @@ +import sys +import inspect + +import maya +import maya.OpenMaya as OpenMaya +import maya.OpenMayaMPx as OpenMayaMPx +import maya.cmds as cmds +from pymel.core.windows import Callback, CallbackWithArgs + +StreamTypesPerSubjectType = { + "Prop": ["Root Only", "Full Hierarchy"], + "Character": ["Root Only", "Full Hierarchy"], + "Camera": ["Root Only", "Full Hierarchy", "Camera"], + "Light": ["Root Only", "Full Hierarchy", "Light"], + } + +def OnRemoveSubject(SubjectPath): + cmds.LiveLinkRemoveSubject(SubjectPath) + RefreshSubjects() + +def CreateSubjectTable(): + cmds.rowColumnLayout("SubjectLayout", numberOfColumns=5, columnWidth=[(1, 20), (2,80), (3, 100), (4, 180), (5, 120)], columnOffset=[(1, 'right', 5), (2, 'right', 10), (4, 'left', 10)], parent="SubjectWrapperLayout") + cmds.text(label="") + cmds.text(label="Subject Type", font="boldLabelFont", align="left") + cmds.text(label="Subject Name", font="boldLabelFont", align="left") + cmds.text(label="DAG Path", font="boldLabelFont", align="left") + cmds.text(label="Stream Type", font="boldLabelFont", align="left") + cmds.rowColumnLayout("SubjectLayout", edit=True, rowOffset=(1, "bottom", 10)) + +#Populate subjects list from c++ +def PopulateSubjects(): + SubjectNames = cmds.LiveLinkSubjectNames() + SubjectPaths = cmds.LiveLinkSubjectPaths() + SubjectTypes = cmds.LiveLinkSubjectTypes() + SubjectRoles = cmds.LiveLinkSubjectRoles() + if SubjectPaths is not None: + RowCounter = 0 + for (SubjectName, SubjectPath, SubjectType, SubjectRole) in zip(SubjectNames, SubjectPaths, SubjectTypes, SubjectRoles): + cmds.button(label="-", height=21, command=Callback(OnRemoveSubject, SubjectPath), parent="SubjectLayout") + cmds.text(label=SubjectType, height=21, align="left", parent="SubjectLayout") + cmds.textField(text=SubjectName, height=21, changeCommand=CallbackWithArgs(cmds.LiveLinkChangeSubjectName, SubjectPath), parent="SubjectLayout") + cmds.text(label=SubjectPath, align="left", height=21, parent="SubjectLayout") + + LayoutName = "ColumnLayoutRow_" + str(RowCounter) # adding a trailing index makes the name unique which is required by the api + + cmds.columnLayout(LayoutName, parent="SubjectLayout") + cmds.optionMenu("SubjectTypeMenu", parent=LayoutName, height=21, changeCommand=CallbackWithArgs(cmds.LiveLinkChangeSubjectStreamType, SubjectPath)) + + for StreamType in StreamTypesPerSubjectType[SubjectType]: + cmds.menuItem(label=StreamType) + + StreamTypeIndex = StreamTypesPerSubjectType[SubjectType].index(SubjectRole) + 1 # menu items are 1-indexed + cmds.optionMenu("SubjectTypeMenu", edit=True, select=StreamTypeIndex) + + RowCounter += 1 + +def ClearSubjects(): + if (cmds.window(MayaLiveLinkUI.WindowName , exists=True)): + cmds.deleteUI("SubjectLayout") + +#Refresh subjects list +def RefreshSubjects(): + if (cmds.window(MayaLiveLinkUI.WindowName , exists=True)): + cmds.deleteUI("SubjectLayout") + CreateSubjectTable() + PopulateSubjects() + +#Connection UI Colours +ConnectionActiveColour = [0.71, 0.9, 0.1] +ConnectionInactiveColour = [1.0, 0.4, 0.4] +ConnectionColourMap = { + True : ConnectionActiveColour, + False: ConnectionInactiveColour +} + +#Base class for command (common creator method + allows for automatic register/unregister) +class LiveLinkCommand(OpenMayaMPx.MPxCommand): + def __init__(self): + OpenMayaMPx.MPxCommand.__init__(self) + + @classmethod + def Creator(Cls): + return OpenMayaMPx.asMPxPtr( Cls() ) + +# Is supplied object a live link command +def IsLiveLinkCommand(InCls): + return inspect.isclass(InCls) and issubclass(InCls, LiveLinkCommand) and InCls != LiveLinkCommand + +# Given a list of strings of names return all the live link commands listed +def GetLiveLinkCommandsFromModule(ModuleItems): + EvalItems = (eval(Item) for Item in ModuleItems) + return [Command for Command in EvalItems if IsLiveLinkCommand(Command) ] + +# Command to create the Live Link UI +class MayaLiveLinkUI(LiveLinkCommand): + WindowName = "MayaLiveLinkUI" + Title = "Maya Live Link UI" + WindowSize = (500, 300) + + def __init__(self): + LiveLinkCommand.__init__(self) + + # Invoked when the command is run. + def doIt(self,argList): + if (cmds.window(self.WindowName , exists=True)): + cmds.deleteUI(self.WindowName) + window = cmds.window( self.WindowName, title=self.Title, widthHeight=(self.WindowSize[0], self.WindowSize[1]) ) + + #Get current connection status + ConnectionText, ConnectedState = cmds.LiveLinkConnectionStatus() + + cmds.columnLayout( "mainColumn", adjustableColumn=True ) + cmds.rowLayout("HeaderRow", numberOfColumns=3, adjustableColumn=1, parent = "mainColumn") + cmds.text(label="Unreal Engine Live Link", align="left") + cmds.text(label="Connection:") + cmds.text("ConnectionStatusUI", label=ConnectionText, align="center", backgroundColor=ConnectionColourMap[ConnectedState], width=150) + + cmds.separator(h=20, style="none", parent="mainColumn") + cmds.columnLayout("SubjectWrapperLayout", parent="mainColumn") # just used as a container that will survive refreshing, so the following controls stay in their correct place + + CreateSubjectTable() + PopulateSubjects() + + cmds.separator(h=20, style="none", parent="mainColumn") + cmds.button( label='Add Selection', parent = "mainColumn", command=self.AddSelection) + + cmds.showWindow( self.WindowName ) + + def AddSelection(self, *args): + cmds.LiveLinkAddSelection() + RefreshSubjects() + +# Command to Refresh the subject UI +class MayaLiveLinkRefreshUI(LiveLinkCommand): + def __init__(self): + LiveLinkCommand.__init__(self) + + # Invoked when the command is run. + def doIt(self,argList): + RefreshSubjects() + +class MayaLiveLinkClearUI(LiveLinkCommand): + def __init__(self): + LiveLinkCommand.__init__(self) + + def doIt(self, argList): + ClearSubjects() + CreateSubjectTable() + +# Command to Refresh the connection UI +class MayaLiveLinkRefreshConnectionUI(LiveLinkCommand): + def __init__(self): + LiveLinkCommand.__init__(self) + + # Invoked when the command is run. + def doIt(self,argList): + if (cmds.window(MayaLiveLinkUI.WindowName , exists=True)): + #Get current connection status + ConnectionText, ConnectedState = cmds.LiveLinkConnectionStatus() + cmds.text("ConnectionStatusUI", edit=True, label=ConnectionText, backgroundColor=ConnectionColourMap[ConnectedState]) + +class MayaLiveLinkGetActiveCamera(LiveLinkCommand): + def __init__(self): + LiveLinkCommand.__init__(self) + + # Invoked when the command is run. + def doIt(self,argList): + self.clearResult() + try: + c = cmds.getPanel(wf=1) + cam = cmds.modelPanel(c, q=True, camera=True) + except: + pass + else: + self.setResult(cam) + +#Grab commands declared +Commands = GetLiveLinkCommandsFromModule(dir()) + +#Initialize the script plug-in +def initializePlugin(mobject): + mplugin = OpenMayaMPx.MFnPlugin(mobject) + + print("LiveLink:" + for Command in Commands: + try: + print("\tRegistering Command '%s'"%Command.__name__ + mplugin.registerCommand( Command.__name__, Command.Creator ) + except: + sys.stderr.write( "Failed to register command: %s\n" % Command.__name__ ) + raise + +# Uninitialize the script plug-in +def uninitializePlugin(mobject): + mplugin = OpenMayaMPx.MFnPlugin(mobject) + + for Command in Commands: + try: + mplugin.deregisterCommand( Command.__name__ ) + except: + sys.stderr.write( "Failed to unregister command: %s\n" % Command.__name__ ) \ No newline at end of file diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2020/MayaUERBFPlugin.mll b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2020/MayaUERBFPlugin.mll new file mode 100644 index 0000000..ce59621 Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2020/MayaUERBFPlugin.mll differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2020/libembeddedRL4.so b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2020/libembeddedRL4.so new file mode 100644 index 0000000..214097f Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2020/libembeddedRL4.so differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2020/libembeddedRL4.so.8 b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2020/libembeddedRL4.so.8 new file mode 100644 index 0000000..b2af02a Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2020/libembeddedRL4.so.8 differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2020/libembeddedRL4.so.8.0.8 b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2020/libembeddedRL4.so.8.0.8 new file mode 100644 index 0000000..b2af02a Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2020/libembeddedRL4.so.8.0.8 differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2022/MayaUE4RBFPlugin2022.mll b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2022/MayaUE4RBFPlugin2022.mll new file mode 100644 index 0000000..f628806 Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2022/MayaUE4RBFPlugin2022.mll differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2022/MayaUE4RBFUI.py b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2022/MayaUE4RBFUI.py new file mode 100644 index 0000000..106d46b --- /dev/null +++ b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2022/MayaUE4RBFUI.py @@ -0,0 +1,203 @@ +from __future__ import print_function + +import sys +import inspect + +import maya +import maya.OpenMaya as OpenMaya +import maya.OpenMayaMPx as OpenMayaMPx +import maya.cmds as cmds +from pymel.core.windows import Callback, CallbackWithArgs + +StreamTypesPerSubjectType = { + "Prop": ["Root Only", "Full Hierarchy"], + "Character": ["Root Only", "Full Hierarchy"], + "Camera": ["Root Only", "Full Hierarchy", "Camera"], + "Light": ["Root Only", "Full Hierarchy", "Light"], + } + +def OnRemoveSubject(SubjectPath): + cmds.LiveLinkRemoveSubject(SubjectPath) + RefreshSubjects() + +def CreateSubjectTable(): + cmds.rowColumnLayout("SubjectLayout", numberOfColumns=5, columnWidth=[(1, 20), (2,80), (3, 100), (4, 180), (5, 120)], columnOffset=[(1, 'right', 5), (2, 'right', 10), (4, 'left', 10)], parent="SubjectWrapperLayout") + cmds.text(label="") + cmds.text(label="Subject Type", font="boldLabelFont", align="left") + cmds.text(label="Subject Name", font="boldLabelFont", align="left") + cmds.text(label="DAG Path", font="boldLabelFont", align="left") + cmds.text(label="Stream Type", font="boldLabelFont", align="left") + cmds.rowColumnLayout("SubjectLayout", edit=True, rowOffset=(1, "bottom", 10)) + +#Populate subjects list from c++ +def PopulateSubjects(): + SubjectNames = cmds.LiveLinkSubjectNames() + SubjectPaths = cmds.LiveLinkSubjectPaths() + SubjectTypes = cmds.LiveLinkSubjectTypes() + SubjectRoles = cmds.LiveLinkSubjectRoles() + if SubjectPaths is not None: + RowCounter = 0 + for (SubjectName, SubjectPath, SubjectType, SubjectRole) in zip(SubjectNames, SubjectPaths, SubjectTypes, SubjectRoles): + cmds.button(label="-", height=21, command=Callback(OnRemoveSubject, SubjectPath), parent="SubjectLayout") + cmds.text(label=SubjectType, height=21, align="left", parent="SubjectLayout") + cmds.textField(text=SubjectName, height=21, changeCommand=CallbackWithArgs(cmds.LiveLinkChangeSubjectName, SubjectPath), parent="SubjectLayout") + cmds.text(label=SubjectPath, align="left", height=21, parent="SubjectLayout") + + LayoutName = "ColumnLayoutRow_" + str(RowCounter) # adding a trailing index makes the name unique which is required by the api + + cmds.columnLayout(LayoutName, parent="SubjectLayout") + cmds.optionMenu("SubjectTypeMenu", parent=LayoutName, height=21, changeCommand=CallbackWithArgs(cmds.LiveLinkChangeSubjectStreamType, SubjectPath)) + + for StreamType in StreamTypesPerSubjectType[SubjectType]: + cmds.menuItem(label=StreamType) + + StreamTypeIndex = StreamTypesPerSubjectType[SubjectType].index(SubjectRole) + 1 # menu items are 1-indexed + cmds.optionMenu("SubjectTypeMenu", edit=True, select=StreamTypeIndex) + + RowCounter += 1 + +def ClearSubjects(): + if (cmds.window(MayaLiveLinkUI.WindowName , exists=True)): + cmds.deleteUI("SubjectLayout") + +#Refresh subjects list +def RefreshSubjects(): + if (cmds.window(MayaLiveLinkUI.WindowName , exists=True)): + cmds.deleteUI("SubjectLayout") + CreateSubjectTable() + PopulateSubjects() + +#Connection UI Colours +ConnectionActiveColour = [0.71, 0.9, 0.1] +ConnectionInactiveColour = [1.0, 0.4, 0.4] +ConnectionColourMap = { + True : ConnectionActiveColour, + False: ConnectionInactiveColour +} + +#Base class for command (common creator method + allows for automatic register/unregister) +class LiveLinkCommand(OpenMayaMPx.MPxCommand): + def __init__(self): + OpenMayaMPx.MPxCommand.__init__(self) + + @classmethod + def Creator(Cls): + return OpenMayaMPx.asMPxPtr( Cls() ) + +# Is supplied object a live link command +def IsLiveLinkCommand(InCls): + return inspect.isclass(InCls) and issubclass(InCls, LiveLinkCommand) and InCls != LiveLinkCommand + +# Given a list of strings of names return all the live link commands listed +def GetLiveLinkCommandsFromModule(ModuleItems): + EvalItems = (eval(Item) for Item in ModuleItems) + return [Command for Command in EvalItems if IsLiveLinkCommand(Command) ] + +# Command to create the Live Link UI +class MayaLiveLinkUI(LiveLinkCommand): + WindowName = "MayaLiveLinkUI" + Title = "Maya Live Link UI" + WindowSize = (500, 300) + + def __init__(self): + LiveLinkCommand.__init__(self) + + # Invoked when the command is run. + def doIt(self,argList): + if (cmds.window(self.WindowName , exists=True)): + cmds.deleteUI(self.WindowName) + window = cmds.window( self.WindowName, title=self.Title, widthHeight=(self.WindowSize[0], self.WindowSize[1]) ) + + #Get current connection status + ConnectionText, ConnectedState = cmds.LiveLinkConnectionStatus() + + cmds.columnLayout( "mainColumn", adjustableColumn=True ) + cmds.rowLayout("HeaderRow", numberOfColumns=3, adjustableColumn=1, parent = "mainColumn") + cmds.text(label="Unreal Engine Live Link", align="left") + cmds.text(label="Connection:") + cmds.text("ConnectionStatusUI", label=ConnectionText, align="center", backgroundColor=ConnectionColourMap[ConnectedState], width=150) + + cmds.separator(h=20, style="none", parent="mainColumn") + cmds.columnLayout("SubjectWrapperLayout", parent="mainColumn") # just used as a container that will survive refreshing, so the following controls stay in their correct place + + CreateSubjectTable() + PopulateSubjects() + + cmds.separator(h=20, style="none", parent="mainColumn") + cmds.button( label='Add Selection', parent = "mainColumn", command=self.AddSelection) + + cmds.showWindow( self.WindowName ) + + def AddSelection(self, *args): + cmds.LiveLinkAddSelection() + RefreshSubjects() + +# Command to Refresh the subject UI +class MayaLiveLinkRefreshUI(LiveLinkCommand): + def __init__(self): + LiveLinkCommand.__init__(self) + + # Invoked when the command is run. + def doIt(self,argList): + RefreshSubjects() + +class MayaLiveLinkClearUI(LiveLinkCommand): + def __init__(self): + LiveLinkCommand.__init__(self) + + def doIt(self, argList): + ClearSubjects() + CreateSubjectTable() + +# Command to Refresh the connection UI +class MayaLiveLinkRefreshConnectionUI(LiveLinkCommand): + def __init__(self): + LiveLinkCommand.__init__(self) + + # Invoked when the command is run. + def doIt(self,argList): + if (cmds.window(MayaLiveLinkUI.WindowName , exists=True)): + #Get current connection status + ConnectionText, ConnectedState = cmds.LiveLinkConnectionStatus() + cmds.text("ConnectionStatusUI", edit=True, label=ConnectionText, backgroundColor=ConnectionColourMap[ConnectedState]) + +class MayaLiveLinkGetActiveCamera(LiveLinkCommand): + def __init__(self): + LiveLinkCommand.__init__(self) + + # Invoked when the command is run. + def doIt(self,argList): + self.clearResult() + try: + c = cmds.getPanel(wf=1) + cam = cmds.modelPanel(c, q=True, camera=True) + except: + pass + else: + self.setResult(cam) + +#Grab commands declared +Commands = GetLiveLinkCommandsFromModule(dir()) + +#Initialize the script plug-in +def initializePlugin(mobject): + mplugin = OpenMayaMPx.MFnPlugin(mobject) + + print("LiveLink:") + for Command in Commands: + try: + print("\tRegistering Command '%s'"%Command.__name__) + mplugin.registerCommand( Command.__name__, Command.Creator ) + except: + sys.stderr.write( "Failed to register command: %s\n" % Command.__name__ ) + raise + +# Uninitialize the script plug-in +def uninitializePlugin(mobject): + mplugin = OpenMayaMPx.MFnPlugin(mobject) + + for Command in Commands: + try: + mplugin.deregisterCommand( Command.__name__ ) + except: + sys.stderr.write( "Failed to unregister command: %s\n" % Command.__name__ ) \ No newline at end of file diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2022/MayaUERBFPlugin.mll b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2022/MayaUERBFPlugin.mll new file mode 100644 index 0000000..3a8e939 Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2022/MayaUERBFPlugin.mll differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2022/libembeddedRL4.so b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2022/libembeddedRL4.so new file mode 100644 index 0000000..657d37a Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2022/libembeddedRL4.so differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2022/libembeddedRL4.so.8 b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2022/libembeddedRL4.so.8 new file mode 100644 index 0000000..32aba52 Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2022/libembeddedRL4.so.8 differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2022/libembeddedRL4.so.8.0.8 b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2022/libembeddedRL4.so.8.0.8 new file mode 100644 index 0000000..32aba52 Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2022/libembeddedRL4.so.8.0.8 differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2023/MayaUE4RBFPlugin2023.mll b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2023/MayaUE4RBFPlugin2023.mll new file mode 100644 index 0000000..587e480 Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2023/MayaUE4RBFPlugin2023.mll differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2023/MayaUERBFPlugin.mll b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2023/MayaUERBFPlugin.mll new file mode 100644 index 0000000..900ef01 Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2023/MayaUERBFPlugin.mll differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2023/libembeddedRL4.so b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2023/libembeddedRL4.so new file mode 100644 index 0000000..ee315c1 Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2023/libembeddedRL4.so differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2023/libembeddedRL4.so.8 b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2023/libembeddedRL4.so.8 new file mode 100644 index 0000000..eaabe5c Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2023/libembeddedRL4.so.8 differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2023/libembeddedRL4.so.8.0.8 b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2023/libembeddedRL4.so.8.0.8 new file mode 100644 index 0000000..eaabe5c Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2023/libembeddedRL4.so.8.0.8 differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2024/MayaUERBFPlugin.mll b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2024/MayaUERBFPlugin.mll new file mode 100644 index 0000000..d0c9816 Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2024/MayaUERBFPlugin.mll differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2024/libembeddedRL4.so b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2024/libembeddedRL4.so new file mode 100644 index 0000000..dd37454 Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Linux/2024/libembeddedRL4.so differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2018/MayaUE4RBFPlugin2018.mll b/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2018/MayaUE4RBFPlugin2018.mll new file mode 100644 index 0000000..715d895 Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2018/MayaUE4RBFPlugin2018.mll differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2018/MayaUERBFPlugin.mll b/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2018/MayaUERBFPlugin.mll new file mode 100644 index 0000000..982b9ef Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2018/MayaUERBFPlugin.mll differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2018/embeddedRL4.mll b/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2018/embeddedRL4.mll new file mode 100644 index 0000000..dcecdcc Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2018/embeddedRL4.mll differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2019/MayaUE4RBFPlugin2019.mll b/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2019/MayaUE4RBFPlugin2019.mll new file mode 100644 index 0000000..a518b44 Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2019/MayaUE4RBFPlugin2019.mll differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2019/MayaUERBFPlugin.mll b/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2019/MayaUERBFPlugin.mll new file mode 100644 index 0000000..00adda7 Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2019/MayaUERBFPlugin.mll differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2019/embeddedRL4.mll b/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2019/embeddedRL4.mll new file mode 100644 index 0000000..eac7f9c Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2019/embeddedRL4.mll differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2020/MayaUE4RBFPlugin2020.mll b/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2020/MayaUE4RBFPlugin2020.mll new file mode 100644 index 0000000..2c59128 Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2020/MayaUE4RBFPlugin2020.mll differ diff --git a/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2020/embeddedRL4.mll b/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2020/embeddedRL4.mll new file mode 100644 index 0000000..7eb1a93 Binary files /dev/null and b/Scripts/Animation/epic_pose_wrangler/plugins/Windows/2020/embeddedRL4.mll differ