├── addons └── posepal │ ├── dock │ ├── ExpandVBox.gd │ ├── TabContainer.gd │ ├── AnimPlayerHBox.gd │ ├── SettingsButton.gd │ ├── options_vbox │ │ ├── PreviewVBox.gd │ │ └── OptionsVBox.gd │ ├── TemplateSelectButton.gd │ ├── FilterSelectButton.gd │ └── CollectionSelectButton.gd │ ├── file_selector_preview │ ├── misc │ │ └── PathHBoxReturnButton.gd │ ├── ButtonHBox.gd │ ├── FileIcon.tscn │ ├── ZoomHbox.gd │ ├── PathHBox.gd │ ├── FileContainer.gd │ ├── FileHBox.gd │ └── FileIcon.gd │ ├── plugin_icon.png │ ├── assets │ ├── cmuntt.ttf │ ├── icons │ │ ├── pixel.png │ │ ├── icon_new.png │ │ ├── icon_not.png │ │ ├── icon_yes.png │ │ ├── icon_about.png │ │ ├── icon_maybe.png │ │ ├── icon_more.png │ │ ├── icon_save.png │ │ ├── icon_zoom.png │ │ ├── icon_delete.png │ │ ├── icon_expand.png │ │ ├── icon_folder.png │ │ ├── icon_rename.png │ │ ├── icon_return.png │ │ ├── icon_settings.png │ │ ├── icon_warning.png │ │ ├── icon_expand_collapsed.png │ │ ├── icon_new.png.import │ │ ├── icon_not.png.import │ │ ├── icon_yes.png.import │ │ ├── icon_more.png.import │ │ ├── icon_save.png.import │ │ ├── icon_zoom.png.import │ │ ├── icon_about.png.import │ │ ├── icon_delete.png.import │ │ ├── icon_expand.png.import │ │ ├── icon_folder.png.import │ │ ├── icon_rename.png.import │ │ ├── icon_return.png.import │ │ ├── icon_warning.png.import │ │ └── icon_settings.png.import │ ├── JetBrainsMono-Bold.ttf │ ├── uniques │ │ ├── StyleDependencyFileSelected.tres │ │ ├── StyleDependencyFileFixed.tres │ │ └── StyleDependencyFileBroken.tres │ ├── JetBrainsMono-Bold.tres │ └── LipsyncImporterTheme.tres │ ├── _example_rig_godette │ ├── assets │ │ ├── back │ │ │ ├── bag.png │ │ │ ├── head.png │ │ │ ├── neck.png │ │ │ ├── larm top.png │ │ │ ├── lleg top.png │ │ │ ├── larm hand.png │ │ │ ├── lleg feet.png │ │ │ ├── torso top.png │ │ │ ├── larm bottom.png │ │ │ ├── lleg bottom.png │ │ │ └── torso bottom.png │ │ ├── left │ │ │ ├── bag.png │ │ │ ├── neck.png │ │ │ ├── larm top.png │ │ │ ├── lleg top.png │ │ │ ├── rarm top.png │ │ │ ├── rleg top.png │ │ │ ├── head base.png │ │ │ ├── head jaw c.png │ │ │ ├── head jaw o.png │ │ │ ├── larm hand.png │ │ │ ├── lleg feet.png │ │ │ ├── rarm hand.png │ │ │ ├── rleg feet.png │ │ │ ├── torso top.png │ │ │ ├── head fringe.png │ │ │ ├── larm bottom.png │ │ │ ├── lleg bottom.png │ │ │ ├── rarm bottom.png │ │ │ ├── rleg bottom.png │ │ │ ├── torso bottom.png │ │ │ ├── face │ │ │ │ ├── eyes │ │ │ │ │ ├── l c h.png │ │ │ │ │ ├── l c s.png │ │ │ │ │ ├── l h c.png │ │ │ │ │ ├── l h bl.png │ │ │ │ │ ├── l h br.png │ │ │ │ │ ├── l h tl.png │ │ │ │ │ ├── l h tr.png │ │ │ │ │ ├── l o e bl.png │ │ │ │ │ ├── l o e br.png │ │ │ │ │ ├── l o e c.png │ │ │ │ │ ├── l o e tl.png │ │ │ │ │ ├── l o e tr.png │ │ │ │ │ ├── l o n bl.png │ │ │ │ │ ├── l o n br.png │ │ │ │ │ ├── l o n c.png │ │ │ │ │ ├── l o n tl.png │ │ │ │ │ └── l o n tr.png │ │ │ │ ├── face eyes.png │ │ │ │ ├── face mouth.png │ │ │ │ ├── mouth │ │ │ │ │ ├── a h1.png │ │ │ │ │ ├── a s1.png │ │ │ │ │ ├── a s2.png │ │ │ │ │ ├── l h1.png │ │ │ │ │ ├── l s1.png │ │ │ │ │ ├── o h1.png │ │ │ │ │ ├── o s1.png │ │ │ │ │ ├── u h1.png │ │ │ │ │ ├── etc h1.png │ │ │ │ │ ├── etc h2.png │ │ │ │ │ ├── etc s1.png │ │ │ │ │ ├── etc s2.png │ │ │ │ │ ├── fv h1.png │ │ │ │ │ ├── fv s1.png │ │ │ │ │ ├── mbp h1.png │ │ │ │ │ ├── mbp h2.png │ │ │ │ │ ├── mbp s1.png │ │ │ │ │ └── mbp s2.png │ │ │ │ ├── ebrows │ │ │ │ │ ├── sad 1.png │ │ │ │ │ ├── sad 2.png │ │ │ │ │ ├── sad 3.png │ │ │ │ │ ├── angry 1.png │ │ │ │ │ ├── angry 2.png │ │ │ │ │ ├── angry 3.png │ │ │ │ │ ├── misc base.png │ │ │ │ │ ├── surprised 1.png │ │ │ │ │ ├── surprised 2.png │ │ │ │ │ ├── surprised 3.png │ │ │ │ │ ├── misc confused.png │ │ │ │ │ ├── misc neutral.png │ │ │ │ │ └── misc serious.png │ │ │ │ └── face eyebrows.png │ │ │ ├── larm top fshort.png │ │ │ └── larm bottom fshort.png │ │ ├── front │ │ │ ├── bag.png │ │ │ ├── neck.png │ │ │ ├── head base.png │ │ │ ├── larm hand.png │ │ │ ├── larm top.png │ │ │ ├── lleg feet.png │ │ │ ├── lleg top.png │ │ │ ├── rarm hand.png │ │ │ ├── rarm top.png │ │ │ ├── rleg feet.png │ │ │ ├── rleg top.png │ │ │ ├── torso top.png │ │ │ ├── head fringe.png │ │ │ ├── head jaw c.png │ │ │ ├── head jaw o.png │ │ │ ├── larm bottom.png │ │ │ ├── larm smear.png │ │ │ ├── lleg bottom.png │ │ │ ├── rarm bottom.png │ │ │ ├── rleg bottom.png │ │ │ ├── torso bottom.png │ │ │ ├── face │ │ │ │ ├── face eyes.png │ │ │ │ ├── ebrows │ │ │ │ │ ├── sad 1.png │ │ │ │ │ ├── sad 2.png │ │ │ │ │ ├── sad 3.png │ │ │ │ │ ├── angry 1.png │ │ │ │ │ ├── angry 2.png │ │ │ │ │ ├── angry 3.png │ │ │ │ │ ├── misc base.png │ │ │ │ │ ├── misc neutral.png │ │ │ │ │ ├── misc serious.png │ │ │ │ │ ├── surprised 1.png │ │ │ │ │ ├── surprised 2.png │ │ │ │ │ ├── surprised 3.png │ │ │ │ │ └── misc confused.png │ │ │ │ ├── eyes │ │ │ │ │ ├── f c h.png │ │ │ │ │ ├── f c s.png │ │ │ │ │ ├── f h bl.png │ │ │ │ │ ├── f h br.png │ │ │ │ │ ├── f h c.png │ │ │ │ │ ├── f h tl.png │ │ │ │ │ ├── f h tr.png │ │ │ │ │ ├── f o e c.png │ │ │ │ │ ├── f o n c.png │ │ │ │ │ ├── f o e bl.png │ │ │ │ │ ├── f o e br.png │ │ │ │ │ ├── f o e tl.png │ │ │ │ │ ├── f o e tr.png │ │ │ │ │ ├── f o n bl.png │ │ │ │ │ ├── f o n br.png │ │ │ │ │ ├── f o n tl.png │ │ │ │ │ └── f o n tr.png │ │ │ │ ├── face mouth.png │ │ │ │ ├── mouth │ │ │ │ │ ├── a h1.png │ │ │ │ │ ├── a s1.png │ │ │ │ │ ├── a s2.png │ │ │ │ │ ├── etc h1.png │ │ │ │ │ ├── etc h2.png │ │ │ │ │ ├── etc s1.png │ │ │ │ │ ├── etc s2.png │ │ │ │ │ ├── fv h1.png │ │ │ │ │ ├── fv s1.png │ │ │ │ │ ├── l h1.png │ │ │ │ │ ├── l s1.png │ │ │ │ │ ├── mbp h1.png │ │ │ │ │ ├── mbp h2.png │ │ │ │ │ ├── mbp s1.png │ │ │ │ │ ├── mbp s2.png │ │ │ │ │ ├── o h1.png │ │ │ │ │ ├── o s1.png │ │ │ │ │ └── u h1.png │ │ │ │ └── face eyebrows.png │ │ │ └── larm bottom smear.png │ │ ├── misc │ │ │ ├── hand.res │ │ │ ├── SF eyes f.res │ │ │ ├── SF eyes l.res │ │ │ ├── SF mouth f.res │ │ │ ├── SF mouth l.res │ │ │ ├── SF ebrows 34l.res │ │ │ ├── SF ebrows f.res │ │ │ ├── SF ebrows l.res │ │ │ ├── SF eyes 34l.res │ │ │ ├── SF mouth 34l.res │ │ │ ├── SF ebrows 34bl.res │ │ │ └── n │ │ │ │ └── SF ebrows 34l.tres │ │ ├── right │ │ │ ├── bag.png │ │ │ └── head fringe.png │ │ ├── 34 left │ │ │ ├── bag.png │ │ │ ├── neck.png │ │ │ ├── head base.png │ │ │ ├── head jaw c.png │ │ │ ├── head jaw o.png │ │ │ ├── head smear.png │ │ │ ├── larm hand.png │ │ │ ├── larm top.png │ │ │ ├── lleg feet.png │ │ │ ├── lleg top.png │ │ │ ├── rarm hand.png │ │ │ ├── rarm top.png │ │ │ ├── rleg feet.png │ │ │ ├── rleg top.png │ │ │ ├── torso top.png │ │ │ ├── head fringe.png │ │ │ ├── larm bottom.png │ │ │ ├── lleg bottom.png │ │ │ ├── rarm bottom.png │ │ │ ├── rleg bottom.png │ │ │ ├── torso bottom.png │ │ │ └── face │ │ │ │ ├── face eyes.png │ │ │ │ ├── face mouth.png │ │ │ │ ├── mouth │ │ │ │ ├── a h1.png │ │ │ │ ├── a s1.png │ │ │ │ ├── a s2.png │ │ │ │ ├── l h1.png │ │ │ │ ├── l s1.png │ │ │ │ ├── o h1.png │ │ │ │ ├── o s1.png │ │ │ │ ├── u h1.png │ │ │ │ ├── etc h1.png │ │ │ │ ├── etc h2.png │ │ │ │ ├── etc s1.png │ │ │ │ ├── etc s2.png │ │ │ │ ├── fv h1.png │ │ │ │ ├── fv s1.png │ │ │ │ ├── mbp h1.png │ │ │ │ ├── mbp h2.png │ │ │ │ ├── mbp s1.png │ │ │ │ └── mbp s2.png │ │ │ │ ├── ebrows │ │ │ │ ├── sad 1.png │ │ │ │ ├── sad 2.png │ │ │ │ ├── sad 3.png │ │ │ │ ├── angry 1.png │ │ │ │ ├── angry 2.png │ │ │ │ ├── angry 3.png │ │ │ │ ├── misc base.png │ │ │ │ ├── misc confused.png │ │ │ │ ├── misc neutral.png │ │ │ │ ├── misc serious.png │ │ │ │ ├── surprised 1.png │ │ │ │ ├── surprised 2.png │ │ │ │ └── surprised 3.png │ │ │ │ ├── eyes │ │ │ │ ├── 34l c h.png │ │ │ │ ├── 34l c s.png │ │ │ │ ├── 34l h c.png │ │ │ │ ├── 34l h bl.png │ │ │ │ ├── 34l h br.png │ │ │ │ ├── 34l h tl.png │ │ │ │ ├── 34l h tr.png │ │ │ │ ├── 34l o e bl.png │ │ │ │ ├── 34l o e br.png │ │ │ │ ├── 34l o e c.png │ │ │ │ ├── 34l o e tl.png │ │ │ │ ├── 34l o e tr.png │ │ │ │ ├── 34l o n bl.png │ │ │ │ ├── 34l o n br.png │ │ │ │ ├── 34l o n c.png │ │ │ │ ├── 34l o n tl.png │ │ │ │ └── 34l o n tr.png │ │ │ │ └── face eyebrows.png │ │ ├── 34 right │ │ │ ├── bag.png │ │ │ ├── head base.png │ │ │ ├── head fringe.png │ │ │ └── face │ │ │ │ └── eyes │ │ │ │ ├── e h bl.png │ │ │ │ ├── e h br.png │ │ │ │ ├── e h ul.png │ │ │ │ └── e h ur.png │ │ ├── 34b left │ │ │ ├── bag.png │ │ │ ├── neck.png │ │ │ ├── head base.png │ │ │ ├── larm hand.png │ │ │ ├── larm top.png │ │ │ ├── lleg feet.png │ │ │ ├── lleg top.png │ │ │ ├── rarm hand.png │ │ │ ├── rarm top.png │ │ │ ├── rleg feet.png │ │ │ ├── rleg top.png │ │ │ ├── torso top.png │ │ │ ├── larm bottom.png │ │ │ ├── lleg bottom.png │ │ │ ├── rarm bottom.png │ │ │ ├── rleg bottom.png │ │ │ ├── torso bottom.png │ │ │ └── face │ │ │ │ └── face eyebrows.png │ │ ├── 34b right │ │ │ ├── bag.png │ │ │ ├── head base.png │ │ │ └── head smear.png │ │ └── rhand │ │ │ ├── rhand d_0000.png │ │ │ ├── rhand d_0001.png │ │ │ ├── rhand d_0002.png │ │ │ ├── rhand d_0003.png │ │ │ ├── rhand d_0004.png │ │ │ ├── rhand d_0005.png │ │ │ ├── rhand d_0006.png │ │ │ ├── rhand d_0007.png │ │ │ ├── rhand cf1_0000.png │ │ │ ├── rhand cf1_0001.png │ │ │ ├── rhand cf1_0002.png │ │ │ ├── rhand cf1_0003.png │ │ │ ├── rhand cf1_0004.png │ │ │ ├── rhand cf1_0005.png │ │ │ ├── rhand cf1_0006.png │ │ │ ├── rhand cf1_0007.png │ │ │ ├── rhand of1_0000.png │ │ │ ├── rhand of1_0001.png │ │ │ ├── rhand of1_0002.png │ │ │ ├── rhand of1_0003.png │ │ │ ├── rhand of1_0004.png │ │ │ ├── rhand of1_0005.png │ │ │ ├── rhand of1_0006.png │ │ │ ├── rhand of1_0007.png │ │ │ ├── rhand ff thumb_0000.png │ │ │ ├── rhand ff thumb_0001.png │ │ │ ├── rhand ff thumb_0002.png │ │ │ ├── rhand ff thumb_0003.png │ │ │ ├── rhand ff thumb_0004.png │ │ │ ├── rhand ff thumb_0005.png │ │ │ ├── rhand ff thumb_0006.png │ │ │ ├── rhand ff thumb_0007.png │ │ │ ├── rhand ff pointer_0000.png │ │ │ ├── rhand ff pointer_0001.png │ │ │ ├── rhand ff pointer_0002.png │ │ │ ├── rhand ff pointer_0003.png │ │ │ ├── rhand ff pointer_0004.png │ │ │ ├── rhand ff pointer_0005.png │ │ │ ├── rhand ff pointer_0006.png │ │ │ └── rhand ff pointer_0007.png │ └── turnaround godette.png │ ├── plugin.cfg │ ├── settings.tres │ ├── settings_popup │ ├── SettingsOptionHBox.gd │ ├── DebugHBox.gd │ ├── ExtensionHBox.gd │ └── SettingsPopup.gd │ ├── interface │ ├── ResizableWindow.gd │ ├── RectHandler.tscn │ ├── NodeMenu.tscn │ ├── PropertyMenu.gd │ ├── AskNamePopup.gd │ ├── PosePreview.tscn │ ├── RectHandlerContainer.tscn │ ├── PropertyMoreButton.gd │ ├── AskIDPopup.gd │ ├── Titlebar.tscn │ ├── ExpandableColumn.tscn │ ├── ExpandableTab.tscn │ ├── ExpandableTab.gd │ ├── AskNamePopup.tscn │ ├── WarningIcon.gd │ ├── ExpandableColumn.gd │ └── NodeVBox.gd │ ├── setup_bones_popup │ ├── BonePopup.gd │ ├── SetupBonesPopup.gd │ └── BonePopup.tscn │ ├── batch_key_popup │ ├── property_display │ │ ├── PropertyItem.gd │ │ ├── PropertyItem.tscn │ │ ├── TabHBox.gd │ │ ├── AddHBox.gd │ │ └── PropertyDisplay.gd │ ├── SelectAllCheck.gd │ ├── BatchKeyPopup.gd │ └── FinishHBox.gd │ ├── nodepath_reference_popup │ ├── NodepathPopup.gd │ ├── NodepathReferencePopup.gd │ ├── NodepathVBox.gd │ └── NodepathPopup.tscn │ ├── paging_system │ └── PageNumButton.gd │ ├── plugin_icon.png.import │ ├── PosePalSettings.gd │ ├── resource_dependency_popup │ ├── FileVBox.gd │ ├── ResourceDependencyPopup.gd │ └── FileItem.tscn │ ├── filter_edit_popup │ ├── FilterEditPopup.gd │ └── FilterEditPopup.tscn │ └── pose_palette │ └── ZoomHScroll.gd ├── .gitignore └── LICENSE /addons/posepal/dock/ExpandVBox.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends VBoxContainer 3 | 4 | -------------------------------------------------------------------------------- /addons/posepal/file_selector_preview/misc/PathHBoxReturnButton.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends TextureButton 3 | 4 | -------------------------------------------------------------------------------- /addons/posepal/plugin_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/plugin_icon.png -------------------------------------------------------------------------------- /addons/posepal/assets/cmuntt.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/assets/cmuntt.ttf -------------------------------------------------------------------------------- /addons/posepal/assets/icons/pixel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/assets/icons/pixel.png -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/assets/icons/icon_new.png -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_not.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/assets/icons/icon_not.png -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_yes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/assets/icons/icon_yes.png -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/assets/icons/icon_about.png -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_maybe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/assets/icons/icon_maybe.png -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/assets/icons/icon_more.png -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/assets/icons/icon_save.png -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_zoom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/assets/icons/icon_zoom.png -------------------------------------------------------------------------------- /addons/posepal/assets/JetBrainsMono-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/assets/JetBrainsMono-Bold.ttf -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/assets/icons/icon_delete.png -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_expand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/assets/icons/icon_expand.png -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/assets/icons/icon_folder.png -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_rename.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/assets/icons/icon_rename.png -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_return.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/assets/icons/icon_return.png -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/assets/icons/icon_settings.png -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/assets/icons/icon_warning.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/back/bag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/back/bag.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/bag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/bag.png -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_expand_collapsed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/assets/icons/icon_expand_collapsed.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/back/head.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/back/head.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/back/neck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/back/neck.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/bag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/bag.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/neck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/neck.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/neck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/neck.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/misc/hand.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/misc/hand.res -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/right/bag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/right/bag.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/bag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/bag.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/neck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/neck.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 right/bag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 right/bag.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34b left/bag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34b left/bag.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34b left/neck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34b left/neck.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34b right/bag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34b right/bag.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/back/larm top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/back/larm top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/back/lleg top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/back/lleg top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/larm top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/larm top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/lleg top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/lleg top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/rarm top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/rarm top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/rleg top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/rleg top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/turnaround godette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/turnaround godette.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/back/larm hand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/back/larm hand.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/back/lleg feet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/back/lleg feet.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/back/torso top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/back/torso top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/head base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/head base.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/larm hand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/larm hand.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/larm top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/larm top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/lleg feet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/lleg feet.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/lleg top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/lleg top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/rarm hand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/rarm hand.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/rarm top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/rarm top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/rleg feet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/rleg feet.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/rleg top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/rleg top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/torso top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/torso top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/head base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/head base.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/head jaw c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/head jaw c.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/head jaw o.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/head jaw o.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/larm hand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/larm hand.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/lleg feet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/lleg feet.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/rarm hand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/rarm hand.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/rleg feet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/rleg feet.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/torso top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/torso top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/misc/SF eyes f.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/misc/SF eyes f.res -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/misc/SF eyes l.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/misc/SF eyes l.res -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/misc/SF mouth f.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/misc/SF mouth f.res -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/misc/SF mouth l.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/misc/SF mouth l.res -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/head base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/head base.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/head jaw c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/head jaw c.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/head jaw o.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/head jaw o.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/head smear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/head smear.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/larm hand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/larm hand.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/larm top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/larm top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/lleg feet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/lleg feet.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/lleg top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/lleg top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/rarm hand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/rarm hand.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/rarm top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/rarm top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/rleg feet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/rleg feet.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/rleg top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/rleg top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/torso top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/torso top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 right/head base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 right/head base.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34b left/head base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34b left/head base.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34b left/larm hand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34b left/larm hand.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34b left/larm top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34b left/larm top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34b left/lleg feet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34b left/lleg feet.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34b left/lleg top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34b left/lleg top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34b left/rarm hand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34b left/rarm hand.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34b left/rarm top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34b left/rarm top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34b left/rleg feet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34b left/rleg feet.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34b left/rleg top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34b left/rleg top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34b left/torso top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34b left/torso top.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/back/larm bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/back/larm bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/back/lleg bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/back/lleg bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/back/torso bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/back/torso bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/head fringe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/head fringe.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/head jaw c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/head jaw c.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/head jaw o.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/head jaw o.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/larm bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/larm bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/larm smear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/larm smear.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/lleg bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/lleg bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/rarm bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/rarm bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/rleg bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/rleg bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/torso bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/torso bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/head fringe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/head fringe.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/larm bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/larm bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/lleg bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/lleg bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/rarm bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/rarm bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/rleg bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/rleg bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/torso bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/torso bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/misc/SF ebrows 34l.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/misc/SF ebrows 34l.res -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/misc/SF ebrows f.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/misc/SF ebrows f.res -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/misc/SF ebrows l.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/misc/SF ebrows l.res -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/misc/SF eyes 34l.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/misc/SF eyes 34l.res -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/misc/SF mouth 34l.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/misc/SF mouth 34l.res -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand d_0000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand d_0000.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand d_0001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand d_0001.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand d_0002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand d_0002.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand d_0003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand d_0003.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand d_0004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand d_0004.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand d_0005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand d_0005.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand d_0006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand d_0006.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand d_0007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand d_0007.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/right/head fringe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/right/head fringe.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/head fringe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/head fringe.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/larm bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/larm bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/lleg bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/lleg bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/rarm bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/rarm bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/rleg bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/rleg bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/torso bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/torso bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 right/head fringe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 right/head fringe.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34b left/larm bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34b left/larm bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34b left/lleg bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34b left/lleg bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34b left/rarm bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34b left/rarm bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34b left/rleg bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34b left/rleg bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34b right/head base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34b right/head base.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34b right/head smear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34b right/head smear.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/face eyes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/face eyes.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/eyes/l c h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/eyes/l c h.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/eyes/l c s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/eyes/l c s.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/eyes/l h c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/eyes/l h c.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/face eyes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/face eyes.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/face mouth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/face mouth.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/mouth/a h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/mouth/a h1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/mouth/a s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/mouth/a s1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/mouth/a s2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/mouth/a s2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/mouth/l h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/mouth/l h1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/mouth/l s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/mouth/l s1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/mouth/o h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/mouth/o h1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/mouth/o s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/mouth/o s1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/mouth/u h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/mouth/u h1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/larm top fshort.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/larm top fshort.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/misc/SF ebrows 34bl.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/misc/SF ebrows 34bl.res -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand cf1_0000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand cf1_0000.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand cf1_0001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand cf1_0001.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand cf1_0002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand cf1_0002.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand cf1_0003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand cf1_0003.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand cf1_0004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand cf1_0004.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand cf1_0005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand cf1_0005.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand cf1_0006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand cf1_0006.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand cf1_0007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand cf1_0007.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand of1_0000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand of1_0000.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand of1_0001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand of1_0001.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand of1_0002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand of1_0002.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand of1_0003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand of1_0003.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand of1_0004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand of1_0004.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand of1_0005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand of1_0005.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand of1_0006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand of1_0006.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand of1_0007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand of1_0007.png -------------------------------------------------------------------------------- /addons/posepal/assets/uniques/StyleDependencyFileSelected.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StyleBoxFlat" format=2] 2 | 3 | [resource] 4 | bg_color = Color( 0.384314, 0.388235, 0.317647, 1 ) 5 | -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/face eyes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/face eyes.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/face mouth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/face mouth.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/mouth/a h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/mouth/a h1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/mouth/a s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/mouth/a s1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/mouth/a s2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/mouth/a s2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/mouth/l h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/mouth/l h1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/mouth/l s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/mouth/l s1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/mouth/o h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/mouth/o h1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/mouth/o s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/mouth/o s1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/mouth/u h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/mouth/u h1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34b left/torso bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34b left/torso bottom.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/ebrows/sad 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/ebrows/sad 1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/ebrows/sad 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/ebrows/sad 2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/ebrows/sad 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/ebrows/sad 3.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/eyes/f c h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/eyes/f c h.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/eyes/f c s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/eyes/f c s.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/eyes/f h bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/eyes/f h bl.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/eyes/f h br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/eyes/f h br.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/eyes/f h c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/eyes/f h c.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/eyes/f h tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/eyes/f h tl.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/eyes/f h tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/eyes/f h tr.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/eyes/f o e c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/eyes/f o e c.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/eyes/f o n c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/eyes/f o n c.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/face mouth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/face mouth.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/mouth/a h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/mouth/a h1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/mouth/a s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/mouth/a s1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/mouth/a s2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/mouth/a s2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/mouth/etc h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/mouth/etc h1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/mouth/etc h2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/mouth/etc h2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/mouth/etc s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/mouth/etc s1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/mouth/etc s2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/mouth/etc s2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/mouth/fv h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/mouth/fv h1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/mouth/fv s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/mouth/fv s1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/mouth/l h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/mouth/l h1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/mouth/l s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/mouth/l s1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/mouth/mbp h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/mouth/mbp h1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/mouth/mbp h2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/mouth/mbp h2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/mouth/mbp s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/mouth/mbp s1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/mouth/mbp s2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/mouth/mbp s2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/mouth/o h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/mouth/o h1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/mouth/o s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/mouth/o s1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/mouth/u h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/mouth/u h1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/larm bottom smear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/larm bottom smear.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/ebrows/sad 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/ebrows/sad 1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/ebrows/sad 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/ebrows/sad 2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/ebrows/sad 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/ebrows/sad 3.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/eyes/l h bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/eyes/l h bl.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/eyes/l h br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/eyes/l h br.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/eyes/l h tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/eyes/l h tl.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/eyes/l h tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/eyes/l h tr.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/eyes/l o e bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/eyes/l o e bl.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/eyes/l o e br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/eyes/l o e br.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/eyes/l o e c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/eyes/l o e c.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/eyes/l o e tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/eyes/l o e tl.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/eyes/l o e tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/eyes/l o e tr.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/eyes/l o n bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/eyes/l o n bl.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/eyes/l o n br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/eyes/l o n br.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/eyes/l o n c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/eyes/l o n c.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/eyes/l o n tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/eyes/l o n tl.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/eyes/l o n tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/eyes/l o n tr.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/face eyebrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/face eyebrows.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/mouth/etc h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/mouth/etc h1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/mouth/etc h2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/mouth/etc h2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/mouth/etc s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/mouth/etc s1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/mouth/etc s2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/mouth/etc s2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/mouth/fv h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/mouth/fv h1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/mouth/fv s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/mouth/fv s1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/mouth/mbp h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/mouth/mbp h1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/mouth/mbp h2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/mouth/mbp h2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/mouth/mbp s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/mouth/mbp s1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/mouth/mbp s2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/mouth/mbp s2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/larm bottom fshort.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/larm bottom fshort.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/sad 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/sad 1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/sad 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/sad 2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/sad 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/sad 3.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l c h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l c h.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l c s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l c s.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l h c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l h c.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/mouth/etc h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/mouth/etc h1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/mouth/etc h2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/mouth/etc h2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/mouth/etc s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/mouth/etc s1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/mouth/etc s2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/mouth/etc s2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/mouth/fv h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/mouth/fv h1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/mouth/fv s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/mouth/fv s1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/mouth/mbp h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/mouth/mbp h1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/mouth/mbp h2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/mouth/mbp h2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/mouth/mbp s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/mouth/mbp s1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/mouth/mbp s2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/mouth/mbp s2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 right/face/eyes/e h bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 right/face/eyes/e h bl.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 right/face/eyes/e h br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 right/face/eyes/e h br.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 right/face/eyes/e h ul.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 right/face/eyes/e h ul.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 right/face/eyes/e h ur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 right/face/eyes/e h ur.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/ebrows/angry 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/ebrows/angry 1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/ebrows/angry 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/ebrows/angry 2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/ebrows/angry 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/ebrows/angry 3.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/eyes/f o e bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/eyes/f o e bl.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/eyes/f o e br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/eyes/f o e br.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/eyes/f o e tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/eyes/f o e tl.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/eyes/f o e tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/eyes/f o e tr.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/eyes/f o n bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/eyes/f o n bl.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/eyes/f o n br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/eyes/f o n br.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/eyes/f o n tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/eyes/f o n tl.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/eyes/f o n tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/eyes/f o n tr.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/face eyebrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/face eyebrows.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/ebrows/angry 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/ebrows/angry 1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/ebrows/angry 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/ebrows/angry 2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/ebrows/angry 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/ebrows/angry 3.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand ff thumb_0000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand ff thumb_0000.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand ff thumb_0001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand ff thumb_0001.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand ff thumb_0002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand ff thumb_0002.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand ff thumb_0003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand ff thumb_0003.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand ff thumb_0004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand ff thumb_0004.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand ff thumb_0005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand ff thumb_0005.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand ff thumb_0006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand ff thumb_0006.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand ff thumb_0007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand ff thumb_0007.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/angry 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/angry 1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/angry 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/angry 2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/angry 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/angry 3.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l h bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l h bl.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l h br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l h br.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l h tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l h tl.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l h tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l h tr.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l o e bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l o e bl.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l o e br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l o e br.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l o e c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l o e c.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l o e tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l o e tl.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l o e tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l o e tr.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l o n bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l o n bl.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l o n br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l o n br.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l o n c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l o n c.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l o n tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l o n tl.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l o n tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/eyes/34l o n tr.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/face eyebrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/face eyebrows.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34b left/face/face eyebrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34b left/face/face eyebrows.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/ebrows/misc base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/ebrows/misc base.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/ebrows/misc base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/ebrows/misc base.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/ebrows/surprised 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/ebrows/surprised 1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/ebrows/surprised 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/ebrows/surprised 2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/ebrows/surprised 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/ebrows/surprised 3.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand ff pointer_0000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand ff pointer_0000.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand ff pointer_0001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand ff pointer_0001.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand ff pointer_0002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand ff pointer_0002.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand ff pointer_0003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand ff pointer_0003.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand ff pointer_0004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand ff pointer_0004.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand ff pointer_0005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand ff pointer_0005.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand ff pointer_0006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand ff pointer_0006.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/rhand/rhand ff pointer_0007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/rhand/rhand ff pointer_0007.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/misc base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/misc base.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/ebrows/misc neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/ebrows/misc neutral.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/ebrows/misc serious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/ebrows/misc serious.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/ebrows/surprised 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/ebrows/surprised 1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/ebrows/surprised 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/ebrows/surprised 2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/ebrows/surprised 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/ebrows/surprised 3.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/ebrows/misc confused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/ebrows/misc confused.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/ebrows/misc neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/ebrows/misc neutral.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/left/face/ebrows/misc serious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/left/face/ebrows/misc serious.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/misc confused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/misc confused.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/misc neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/misc neutral.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/misc serious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/misc serious.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/surprised 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/surprised 1.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/surprised 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/surprised 2.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/surprised 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/surprised 3.png -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/front/face/ebrows/misc confused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniMesuro/posepal/HEAD/addons/posepal/_example_rig_godette/assets/front/face/ebrows/misc confused.png -------------------------------------------------------------------------------- /addons/posepal/assets/uniques/StyleDependencyFileFixed.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StyleBoxFlat" format=2] 2 | 3 | [resource] 4 | bg_color = Color( 0.25098, 0.341176, 0.101961, 1 ) 5 | border_width_bottom = 1 6 | border_color = Color( 0, 0, 0, 1 ) 7 | -------------------------------------------------------------------------------- /addons/posepal/assets/uniques/StyleDependencyFileBroken.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StyleBoxFlat" format=2] 2 | 3 | [resource] 4 | bg_color = Color( 0.188235, 0.176471, 0.176471, 1 ) 5 | border_width_bottom = 1 6 | border_color = Color( 0, 0, 0, 1 ) 7 | -------------------------------------------------------------------------------- /addons/posepal/assets/JetBrainsMono-Bold.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="DynamicFont" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/posepal/assets/JetBrainsMono-Bold.ttf" type="DynamicFontData" id=1] 4 | 5 | [resource] 6 | font_data = ExtResource( 1 ) 7 | -------------------------------------------------------------------------------- /addons/posepal/plugin.cfg: -------------------------------------------------------------------------------- 1 | [plugin] 2 | 3 | name="Posepal" 4 | description="Brings a pose library manager functionality, which can help on automating 2D animation, especially cut-out skeleton animations." 5 | author="AniMesuro" 6 | version="0.9.2" 7 | script="plugin.gd" 8 | -------------------------------------------------------------------------------- /addons/posepal/dock/TabContainer.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends TabContainer 3 | 4 | func _ready() -> void: 5 | connect("tab_selected", self, "_on_tab_selected") 6 | 7 | func _on_tab_selected(id: int): 8 | if id != 1: # Palette 9 | return 10 | $"Pallete/ScrollContainer/GridContainer".fill_previews() 11 | -------------------------------------------------------------------------------- /addons/posepal/settings.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/posepal/PosePalSettings.gd" type="Script" id=1] 4 | 5 | [resource] 6 | script = ExtResource( 1 ) 7 | poselib_extension = 0 8 | debug_mode = 1 9 | enable_addons_integration = true 10 | integrations = { 11 | "animation_frame_picker": true 12 | } 13 | -------------------------------------------------------------------------------- /addons/posepal/settings_popup/SettingsOptionHBox.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends HBoxContainer 3 | 4 | export var selected_id: int setget _set_selected_id 5 | 6 | func _on_id_pressed(id: int): 7 | self.selected_id = id 8 | 9 | func _set_selected_id(new_selected_id): 10 | selected_id = new_selected_id 11 | $MenuButton.text = $MenuButton.get_popup().get_item_text(selected_id) 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Godot-specific ignores 3 | .import/ 4 | export.cfg 5 | export_presets.cfg 6 | *.import 7 | 8 | # Mono-specific ignores 9 | .mono/ 10 | data_*/ 11 | mono_crash.*.json 12 | 13 | # Imported translations (automatically generated from CSV files) 14 | *.translation 15 | 16 | # This project specific ignores 17 | /addons/* 18 | !/addons/posepal 19 | project.godot 20 | icon.png 21 | default_env.tres 22 | /*.* -------------------------------------------------------------------------------- /addons/posepal/interface/ResizableWindow.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends Panel 3 | 4 | var handlerTop :ReferenceRect 5 | var handlerBottom :ReferenceRect 6 | var handlerLeft :ReferenceRect 7 | var handlerRight :ReferenceRect 8 | 9 | var vbox_margin :Vector2= Vector2(10, 20) 10 | func _ready() -> void: 11 | $VBox.set_deferred("rect_size", rect_size - ( vbox_margin * 2)) 12 | $VBox.set_deferred("rect_position", rect_position + vbox_margin) 13 | -------------------------------------------------------------------------------- /addons/posepal/setup_bones_popup/BonePopup.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends WindowDialog 3 | 4 | signal bone_selected (bone_path) 5 | 6 | var skeletonRoot: Skeleton2D 7 | 8 | var posepalDock: Control 9 | func _enter_tree() -> void: 10 | show() 11 | $"Margin/VBox/Scroll/BoneVBox".poseRoot = skeletonRoot 12 | 13 | 14 | func _fill_bones(): 15 | pass 16 | 17 | func _on_BoneButton_pressed(bone_path: String): 18 | emit_signal("bone_selected", bone_path) 19 | queue_free() 20 | -------------------------------------------------------------------------------- /addons/posepal/interface/RectHandler.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/posepal/interface/RectHandler.gd" type="Script" id=1] 4 | 5 | 6 | 7 | [node name="RectHandler" type="ReferenceRect"] 8 | modulate = Color( 1, 1, 1, 0 ) 9 | margin_top = -10.0 10 | rect_min_size = Vector2( 0, 10 ) 11 | mouse_default_cursor_shape = 9 12 | editor_only = false 13 | script = ExtResource( 1 ) 14 | __meta__ = { 15 | "_edit_use_anchors_": false 16 | } 17 | handler_size = 10 18 | -------------------------------------------------------------------------------- /addons/posepal/batch_key_popup/property_display/PropertyItem.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends HBoxContainer 3 | 4 | var node: Node 5 | export var property: String = "property" setget _set_property 6 | 7 | func _ready() -> void: 8 | $"EraseButton".connect("pressed", self, "_on_EraseButton_pressed") 9 | 10 | func _set_property(new_property: String): 11 | property = new_property 12 | if !is_inside_tree(): 13 | return 14 | $Label.text = new_property 15 | 16 | func _on_EraseButton_pressed(): 17 | # return 18 | queue_free() 19 | # tell propertydisplay that this property will not be keyed. 20 | 21 | -------------------------------------------------------------------------------- /addons/posepal/nodepath_reference_popup/NodepathPopup.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends WindowDialog 3 | 4 | signal nodepath_selected (node_path) 5 | 6 | var poselib: Resource 7 | 8 | var posepalDock: Control 9 | func _ready() -> void: 10 | $MarginCon/VBox/CancelButton.connect("pressed", self, "_on_CancelButton_pressed") 11 | 12 | func _enter_tree() -> void: 13 | if get_tree().edited_scene_root != self: 14 | popup() 15 | 16 | func _on_NodeButton_pressed(node_path: String): 17 | emit_signal("nodepath_selected", node_path) 18 | queue_free() 19 | 20 | func _on_CancelButton_pressed(): 21 | queue_free() 22 | -------------------------------------------------------------------------------- /addons/posepal/settings_popup/DebugHBox.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends "res://addons/posepal/settings_popup/SettingsOptionHBox.gd" 3 | 4 | func _ready() -> void: 5 | if !is_instance_valid(owner.pluginInstance): 6 | return 7 | if get_tree().edited_scene_root == owner: 8 | return 9 | var settings: Resource = owner.pluginInstance.settings 10 | var popupMenu: PopupMenu = $MenuButton.get_popup() 11 | 12 | popupMenu.clear() 13 | for bool_option in settings.BoolToggle: 14 | popupMenu.add_item(bool_option) 15 | # $MenuButton.connect("pressed", self, "_on_pressed") 16 | popupMenu.connect("id_pressed", self, "_on_id_pressed") 17 | -------------------------------------------------------------------------------- /addons/posepal/interface/NodeMenu.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://addons/posepal/interface/NodeMenu.gd" type="Script" id=1] 4 | [ext_resource path="res://icon.png" type="Texture" id=2] 5 | 6 | [node name="Button" type="MenuButton"] 7 | margin_left = 254.0 8 | margin_right = 434.0 9 | margin_bottom = 26.0 10 | grow_horizontal = 0 11 | rect_min_size = Vector2( 0, 24 ) 12 | rect_clip_content = true 13 | size_flags_horizontal = 3 14 | text = "Please select a node." 15 | icon = ExtResource( 2 ) 16 | flat = false 17 | clip_text = true 18 | align = 0 19 | expand_icon = true 20 | script = ExtResource( 1 ) 21 | __meta__ = { 22 | "_edit_use_anchors_": false 23 | } 24 | -------------------------------------------------------------------------------- /addons/posepal/dock/AnimPlayerHBox.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends HBoxContainer 3 | 4 | func _ready() -> void: 5 | if get_tree().edited_scene_root == owner: 6 | return 7 | owner.connect('updated_reference', self, '_on_PoseLibrary_updated_reference') 8 | 9 | func _on_PoseLibrary_updated_reference(reference :String): 10 | if reference != 'poselib_animPlayer': 11 | return 12 | if is_instance_valid(owner.get('poselib_animPlayer')): 13 | var editorInterface :EditorInterface= owner.pluginInstance.get_editor_interface() 14 | var editorSelection :EditorSelection= editorInterface.get_selection() 15 | editorSelection.clear() 16 | editorSelection.add_node(owner.get('poselib_animPlayer')) 17 | owner.fix_warning('animplayer_invalid') 18 | -------------------------------------------------------------------------------- /addons/posepal/interface/PropertyMenu.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends MenuButton 3 | 4 | const TEX_ExpandIcon: StreamTexture = preload("res://addons/posepal/assets/icons/icon_expand.png") 5 | 6 | export var msg_no_selection: String = "" 7 | export var owner_reference: String= 'poselib_' 8 | 9 | var popup :PopupMenu 10 | func _ready() -> void: 11 | if get_tree().edited_scene_root == self: 12 | return 13 | popup = get_popup() 14 | 15 | connect("pressed", self, "_on_pressed") 16 | popup.connect("id_pressed", self, "_on_id_selected") 17 | owner.connect("updated_reference", self, "_on_PoseLibrary_updated_reference") 18 | owner.connect("issued_forced_selection", self, "_on_issued_forced_selection") 19 | text = msg_no_selection 20 | 21 | func _reset_selection(): 22 | text = msg_no_selection 23 | icon = TEX_ExpandIcon 24 | -------------------------------------------------------------------------------- /addons/posepal/dock/SettingsButton.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends Button 3 | 4 | const SCN_SettingsPopup: PackedScene = preload("res://addons/posepal/settings_popup/SettingsPopup.tscn") 5 | 6 | func _ready() -> void: 7 | connect("pressed", self, "_on_pressed") 8 | 9 | if !is_instance_valid(owner.pluginInstance): 10 | return 11 | icon = owner.pluginInstance.editorControl.get_icon("GDScript", "EditorIcons") 12 | 13 | func _on_pressed(): 14 | var settingsPopup: Popup = SCN_SettingsPopup.instance() 15 | settingsPopup.posepalDock = owner 16 | add_child(settingsPopup) 17 | settingsPopup.connect("tree_exited", self, "_on_settingsPopup_tree_exited") 18 | 19 | 20 | func _on_settingsPopup_tree_exited(): 21 | var optionsVBox: VBoxContainer = $"../../TabContainer/PoseLib/VBox/OptionsMargin/OptionsVBox" 22 | optionsVBox.refresh_ui() 23 | 24 | -------------------------------------------------------------------------------- /addons/posepal/paging_system/PageNumButton.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends OptionButton 3 | 4 | var pageHBox: HBoxContainer 5 | func _ready() -> void: 6 | pageHBox = $".." 7 | connect("item_selected", self, "_on_item_selected") 8 | connect("pressed", self, "_on_pressed") 9 | 10 | func _on_item_selected(id: int): 11 | pageHBox = $'..' 12 | pageHBox.current_page = id 13 | 14 | func _on_pressed(): 15 | var poselib: Resource = owner.currentPoselib 16 | if !is_instance_valid(poselib): 17 | pageHBox = get_parent() 18 | pageHBox._reset_info() 19 | text = '-1' 20 | return 21 | 22 | if !poselib.poseData.has(owner.poselib_template): 23 | return 24 | if !poselib.poseData[owner.poselib_template].has(owner.poselib_collection): 25 | return 26 | 27 | func update_item_list(): 28 | pageHBox = get_parent() 29 | clear() 30 | for i in pageHBox.page_count: 31 | add_item(str(i)) 32 | -------------------------------------------------------------------------------- /addons/posepal/plugin_icon.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/plugin_icon.png-0667ef8654421e4fdf3f5888ec231dcc.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://addons/posepal/plugin_icon.png" 13 | dest_files=[ "res://.import/plugin_icon.png-0667ef8654421e4fdf3f5888ec231dcc.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=false 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_new.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/icon_new.png-e2eecf2bea7e581568051755ccd2be65.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://addons/posepal/assets/icons/icon_new.png" 13 | dest_files=[ "res://.import/icon_new.png-e2eecf2bea7e581568051755ccd2be65.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_not.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/icon_not.png-cac806fe07b7ad9f7eb1b1916a781f75.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://addons/posepal/assets/icons/icon_not.png" 13 | dest_files=[ "res://.import/icon_not.png-cac806fe07b7ad9f7eb1b1916a781f75.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_yes.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/icon_yes.png-f3c37cbf4251f36a3c1e0a0ccef45b00.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://addons/posepal/assets/icons/icon_yes.png" 13 | dest_files=[ "res://.import/icon_yes.png-f3c37cbf4251f36a3c1e0a0ccef45b00.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /addons/posepal/settings_popup/ExtensionHBox.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends "res://addons/posepal/settings_popup/SettingsOptionHBox.gd" 3 | 4 | func _ready() -> void: 5 | if !is_instance_valid(owner.pluginInstance): 6 | return 7 | if get_tree().edited_scene_root == owner: 8 | return 9 | var settings: Resource = owner.pluginInstance.settings 10 | var popupMenu: PopupMenu = $MenuButton.get_popup() 11 | 12 | popupMenu.clear() 13 | for extension in settings.PoselibExtensions: 14 | popupMenu.add_item(extension) 15 | 16 | # $MenuButton.connect("pressed", self, "_on_pressed") 17 | popupMenu.connect("id_pressed", self, "_on_id_pressed") 18 | 19 | #func _on_pressed(): 20 | # pass 21 | 22 | #func _on_id_pressed(id: int): 23 | # self.selected_id = id 24 | 25 | #func _set_selected_id(new_selected_id): 26 | # selected_id = new_selected_id 27 | # $MenuButton.text = $MenuButton.get_popup().get_item_text(selected_id) 28 | -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_more.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/icon_more.png-755537b1124e2543d99b58e0c3bb34f4.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://addons/posepal/assets/icons/icon_more.png" 13 | dest_files=[ "res://.import/icon_more.png-755537b1124e2543d99b58e0c3bb34f4.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_save.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/icon_save.png-ad7ce5ddab8e926043615ea158ca2529.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://addons/posepal/assets/icons/icon_save.png" 13 | dest_files=[ "res://.import/icon_save.png-ad7ce5ddab8e926043615ea158ca2529.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_zoom.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/icon_zoom.png-9f52c4cac698ab812768eff4007fcedf.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://addons/posepal/assets/icons/icon_zoom.png" 13 | dest_files=[ "res://.import/icon_zoom.png-9f52c4cac698ab812768eff4007fcedf.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_about.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/icon_about.png-063472c143a5d53dad49a0ed86cc0cb8.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://addons/posepal/assets/icons/icon_about.png" 13 | dest_files=[ "res://.import/icon_about.png-063472c143a5d53dad49a0ed86cc0cb8.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_delete.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/icon_delete.png-7d64d41357171713cc60c82df450770f.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://addons/posepal/assets/icons/icon_delete.png" 13 | dest_files=[ "res://.import/icon_delete.png-7d64d41357171713cc60c82df450770f.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_expand.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/icon_expand.png-bc1fecdcad8704d04745ef890076deef.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://addons/posepal/assets/icons/icon_expand.png" 13 | dest_files=[ "res://.import/icon_expand.png-bc1fecdcad8704d04745ef890076deef.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_folder.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/icon_folder.png-6cb5af4a1239664b50a2f4e25fd51fb2.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://addons/posepal/assets/icons/icon_folder.png" 13 | dest_files=[ "res://.import/icon_folder.png-6cb5af4a1239664b50a2f4e25fd51fb2.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_rename.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/icon_rename.png-be71bc552d251b6bb3124f6428a59d09.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://addons/posepal/assets/icons/icon_rename.png" 13 | dest_files=[ "res://.import/icon_rename.png-be71bc552d251b6bb3124f6428a59d09.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_return.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/icon_return.png-aa2d50a8441aa2ff68e0101ae8df4ec5.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://addons/posepal/assets/icons/icon_return.png" 13 | dest_files=[ "res://.import/icon_return.png-aa2d50a8441aa2ff68e0101ae8df4ec5.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_warning.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/icon_warning.png-a39ca2dc843f62a820c4208a11370b6a.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://addons/posepal/assets/icons/icon_warning.png" 13 | dest_files=[ "res://.import/icon_warning.png-a39ca2dc843f62a820c4208a11370b6a.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /addons/posepal/assets/icons/icon_settings.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/icon_settings.png-d679bc45740a0a231e8e1b48e836dc11.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://addons/posepal/assets/icons/icon_settings.png" 13 | dest_files=[ "res://.import/icon_settings.png-d679bc45740a0a231e8e1b48e836dc11.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | process/normal_map_invert_y=false 32 | stream=false 33 | size_limit=0 34 | detect_3d=true 35 | svg/scale=1.0 36 | -------------------------------------------------------------------------------- /addons/posepal/dock/options_vbox/PreviewVBox.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends VBoxContainer 3 | 4 | func _ready() -> void: 5 | owner.pluginInstance.connect("scene_changed", self, "_on_scene_changed") 6 | $IgnoreScenePoseChk.connect("pressed", self, "_on_IgnoreScenePoseChk_pressed") 7 | # $ShowBonesChk.connect("pressed", self, "_on_ShowBonesChk_pressed") 8 | 9 | func refresh(): 10 | $IgnoreScenePoseChk.pressed = owner.optionsData.ignore_scene_pose 11 | # $ShowBonesChk.pressed = owner.optionsData.show_bones 12 | 13 | func _on_IgnoreScenePoseChk_pressed(): 14 | owner.optionsData.ignore_scene_pose = $IgnoreScenePoseChk.pressed 15 | 16 | # USELESS. 17 | #func _on_ShowBonesChk_pressed(): 18 | # var showBonesChk: CheckBox = $ShowBonesChk 19 | # owner.optionsData.show_bones = showBonesChk.pressed 20 | 21 | func _on_scene_changed(_sceneRoot: Node): 22 | owner.optionsData['ignore_scene_pose'] = false 23 | owner.optionsData['show_bones'] = false 24 | refresh() 25 | -------------------------------------------------------------------------------- /addons/posepal/interface/AskNamePopup.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends Popup 3 | 4 | signal name_settled (new_name) 5 | 6 | var new_name :String= "" 7 | 8 | onready var titlebar :HBoxContainer= $Panel/VBox/Titlebar 9 | onready var label :Label= $Panel/VBox/Label 10 | var parent :Node 11 | var lineEdit :LineEdit 12 | var button :Button 13 | 14 | func _ready() -> void: 15 | popup_centered(rect_min_size) 16 | button = $Panel/VBox/Button 17 | lineEdit = $Panel/VBox/LineEdit 18 | 19 | button.connect("pressed", self, '_on_Button_pressed') 20 | lineEdit.connect("text_entered", self, '_on_LineEdit_entered') 21 | 22 | lineEdit.grab_focus() 23 | 24 | func _on_Button_pressed() -> void: 25 | lineEdit = $Panel/VBox/LineEdit 26 | 27 | new_name = lineEdit.text 28 | emit_signal("name_settled", new_name) 29 | queue_free() 30 | 31 | func _on_LineEdit_entered(new_text :String) -> void: 32 | new_name = new_text 33 | emit_signal("name_settled", new_name) 34 | queue_free() 35 | -------------------------------------------------------------------------------- /addons/posepal/batch_key_popup/property_display/PropertyItem.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://addons/posepal/assets/icons/icon_not.png" type="Texture" id=1] 4 | [ext_resource path="res://addons/posepal/batch_key_popup/property_display/PropertyItem.gd" type="Script" id=2] 5 | 6 | [node name="PropertyItem" type="HBoxContainer"] 7 | margin_right = 72.0 8 | margin_bottom = 16.0 9 | size_flags_horizontal = 3 10 | size_flags_vertical = 3 11 | script = ExtResource( 2 ) 12 | __meta__ = { 13 | "_edit_use_anchors_": false 14 | } 15 | 16 | [node name="EraseButton" type="TextureButton" parent="."] 17 | margin_right = 16.0 18 | margin_bottom = 16.0 19 | rect_min_size = Vector2( 16, 16 ) 20 | texture_normal = ExtResource( 1 ) 21 | expand = true 22 | stretch_mode = 5 23 | 24 | [node name="Label" type="Label" parent="."] 25 | margin_left = 20.0 26 | margin_top = 1.0 27 | margin_right = 74.0 28 | margin_bottom = 15.0 29 | size_flags_horizontal = 3 30 | text = "property" 31 | -------------------------------------------------------------------------------- /addons/posepal/file_selector_preview/ButtonHBox.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends HBoxContainer 3 | 4 | func _ready() -> void: 5 | $OkButton.connect("pressed", self,"_on_OkButton_pressed") 6 | $CancelButton.connect("pressed", self, "_on_CancelButton_pressed") 7 | 8 | func _on_OkButton_pressed(): 9 | var Dir: Directory = Directory.new() 10 | var filepath: String = owner.current_dir + owner.current_file 11 | if owner.mode == FileDialog.MODE_OPEN_FILE: 12 | if Dir.file_exists(filepath): 13 | owner.emit_signal("file_selected", filepath) 14 | elif owner.mode == FileDialog.MODE_SAVE_FILE: 15 | if !Dir.file_exists(filepath): 16 | owner.emit_signal("file_selected", filepath) 17 | else: 18 | # [] REPLACE WITH "Are you sure to overwite?" POPUP 19 | owner.emit_signal("file_selected", filepath) 20 | else: 21 | print('FileSelectorPreview: Mode not supported.') 22 | owner.queue_free() 23 | "res://addons/posepal/file_selector_preview/FileIcon.gd" 24 | func _on_CancelButton_pressed(): 25 | owner.queue_free() 26 | -------------------------------------------------------------------------------- /addons/posepal/batch_key_popup/SelectAllCheck.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends CheckBox 3 | 4 | export var nodesVBox_path: NodePath 5 | 6 | func _ready() -> void: 7 | connect("pressed", self, "_on_pressed") 8 | 9 | func _on_pressed(): 10 | var nodesVBox: VBoxContainer = get_node(nodesVBox_path) 11 | var has_unchecked_nodes: bool = false 12 | for nodeItem in nodesVBox.get_children(): 13 | if !nodeItem.get_node('CheckButton').pressed: 14 | has_unchecked_nodes = true 15 | break 16 | 17 | if has_unchecked_nodes: 18 | for nodeItem in nodesVBox.get_children(): 19 | var checkButton: CheckButton = nodeItem.get_node('CheckButton') 20 | if !checkButton.pressed: 21 | checkButton.pressed = true 22 | nodeItem.emit_signal("checked_node", nodeItem, nodeItem.child_id, true) 23 | 24 | pressed = true 25 | return 26 | else: 27 | for nodeItem in nodesVBox.get_children(): 28 | nodeItem.get_node('CheckButton').pressed = false 29 | nodeItem.emit_signal("checked_node", nodeItem, nodeItem.child_id, false) 30 | pressed = false 31 | -------------------------------------------------------------------------------- /addons/posepal/file_selector_preview/FileIcon.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://icon.png" type="Texture" id=1] 4 | [ext_resource path="res://addons/posepal/file_selector_preview/FileIcon.gd" type="Script" id=2] 5 | 6 | [node name="FileIcon" type="VBoxContainer"] 7 | margin_right = 200.0 8 | margin_bottom = 180.0 9 | rect_min_size = Vector2( 60, 20 ) 10 | size_flags_horizontal = 0 11 | size_flags_vertical = 0 12 | script = ExtResource( 2 ) 13 | 14 | [node name="Preview" type="TextureButton" parent="."] 15 | margin_right = 200.0 16 | margin_bottom = 162.0 17 | size_flags_horizontal = 3 18 | size_flags_vertical = 3 19 | texture_normal = ExtResource( 1 ) 20 | expand = true 21 | stretch_mode = 5 22 | 23 | [node name="Label" type="Label" parent="."] 24 | margin_top = 166.0 25 | margin_right = 200.0 26 | margin_bottom = 180.0 27 | grow_vertical = 0 28 | size_flags_horizontal = 5 29 | size_flags_vertical = 11 30 | size_flags_stretch_ratio = 0.0 31 | text = "icon.png" 32 | align = 1 33 | valign = 2 34 | autowrap = true 35 | -------------------------------------------------------------------------------- /addons/posepal/PosePalSettings.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends Resource 3 | 4 | enum PoselibExtensions { 5 | tres, 6 | res, 7 | } 8 | export (PoselibExtensions) var poselib_extension 9 | 10 | enum BoolToggle { 11 | off, 12 | on, 13 | } 14 | export (BoolToggle) var debug_mode 15 | 16 | 17 | 18 | export var enable_addons_integration: bool = true 19 | export var integrations: Dictionary = { 20 | 'animation_frame_picker': true 21 | } 22 | 23 | var pluginInstance: EditorPlugin 24 | func is_addon_active(addon_name: String): 25 | if (!enable_addons_integration or !integrations.get(addon_name, false) 26 | or !is_instance_valid(pluginInstance)): 27 | return false 28 | if pluginInstance.get_tree().get_nodes_in_group("plugin "+addon_name).size()>0: 29 | return true 30 | 31 | func get_plugin_instance_for(addon_name): 32 | if !enable_addons_integration or !integrations.get(addon_name, false): 33 | return null 34 | var _plugin_group: Array = pluginInstance.get_tree().get_nodes_in_group("plugin "+addon_name) 35 | for node in _plugin_group: 36 | if node is EditorPlugin: 37 | return node 38 | return null 39 | 40 | 41 | -------------------------------------------------------------------------------- /addons/posepal/batch_key_popup/property_display/TabHBox.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends HBoxContainer 3 | 4 | const TEX_IconExpand: StreamTexture = preload("res://addons/posepal/assets/icons/icon_expand.png") 5 | const TEX_IconCollapsed: StreamTexture = preload("res://addons/posepal/assets/icons/icon_expand_collapsed.png") 6 | 7 | export var _expandableControl :NodePath 8 | var is_expanded: bool = true setget _set_is_expanded 9 | 10 | func _ready() -> void: 11 | $"ExpandButton".connect("pressed", self, "_on_ExpandButton_pressed") 12 | $"AddPropertyButton".connect("pressed", self, "_on_AddPropertyButton_pressed") 13 | 14 | func _on_ExpandButton_pressed(): 15 | self.is_expanded = !is_expanded 16 | 17 | func _set_is_expanded(new_is_expanded: bool): 18 | is_expanded = new_is_expanded 19 | var expandableControl = get_node(_expandableControl) 20 | expandableControl.visible = is_expanded 21 | if is_expanded: 22 | $"ExpandButton".icon = TEX_IconExpand 23 | else: 24 | $"ExpandButton".icon = TEX_IconCollapsed 25 | 26 | func _on_AddPropertyButton_pressed(): 27 | var addHBox: HBoxContainer = $"../AddHBox" 28 | addHBox.visible = !addHBox.visible 29 | 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 AniMesuro 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /addons/posepal/setup_bones_popup/SetupBonesPopup.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends WindowDialog 3 | 4 | 5 | 6 | var boneRelationshipData: Dictionary = {} 7 | 8 | var poselib: Resource 9 | 10 | var posepalDock: Control 11 | func _enter_tree() -> void: 12 | show() 13 | if get_tree().edited_scene_root == self: 14 | return 15 | poselib = posepalDock.currentPoselib 16 | boneRelationshipData = poselib.boneRelationshipData.duplicate(false) 17 | # $"MarginContainer/VBoxContainer/HSplitContainer/PolygonScroll/VBox" 18 | 19 | func _ready() -> void: 20 | $MarginContainer/VBoxContainer/OkButton.connect("pressed", self, "_on_OkButton_pressed") 21 | # LOAD FROM POSELIB 22 | 23 | #func _on_BoneButton_pressed(bone_path: NodePath): 24 | # emit_signal("bone_selected", bone_path) 25 | # queue_free() 26 | func update_bone_relationship(node_path: String, bone_path: String): 27 | boneRelationshipData[node_path] = bone_path 28 | 29 | func _on_OkButton_pressed(): 30 | # SAVE TO POSELIB 31 | # var polygonVBox: VBoxContainer = $"MarginContainer/VBoxContainer/HSplitContainer/PolygonScroll/VBox" 32 | # polygonVBox.poseSkeleton 33 | poselib.boneRelationshipData = boneRelationshipData 34 | queue_free() 35 | 36 | -------------------------------------------------------------------------------- /addons/posepal/dock/options_vbox/OptionsVBox.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends VBoxContainer 3 | 4 | const RES_PosePalSettings: GDScript = preload("res://addons/posepal/PosePalSettings.gd") 5 | 6 | var ignoreScenePoseChk: CheckBox 7 | 8 | func _ready() -> void: 9 | ignoreScenePoseChk = $"PreviewVBox/IgnoreScenePoseChk" 10 | 11 | 12 | owner.connect('updated_reference', self, '_on_PoseLibrary_updated_reference') 13 | owner.connect("issued_forced_selection", self, "_on_issued_forced_selection") 14 | 15 | var settings: RES_PosePalSettings = owner.pluginInstance.settings 16 | if settings.debug_mode == settings.BoolToggle.on: 17 | $"MiscColumn".is_locked = false 18 | else: 19 | $"MiscColumn".is_locked = true 20 | 21 | 22 | func refresh_ui(): 23 | $KeyingVBox.refresh() 24 | $PreviewVBox.refresh() 25 | $MiscVBox.refresh() 26 | 27 | func _on_PoseLibrary_updated_reference(reference :String): 28 | if reference == 'poselib_scene': 29 | refresh_ui() 30 | 31 | func _on_issued_forced_selection(): 32 | refresh_ui() 33 | 34 | func get_posegen_mode() -> int: 35 | var poseCreationHBox: HBoxContainer = $"../../../../../ExtraHBox/PoseCreationHBox" 36 | return poseCreationHBox.posegen_mode 37 | -------------------------------------------------------------------------------- /addons/posepal/interface/PosePreview.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://icon.png" type="Texture" id=1] 4 | [ext_resource path="res://addons/posepal/interface/PosePreview.gd" type="Script" id=2] 5 | 6 | [node name="PosePreview" type="VBoxContainer"] 7 | margin_right = 85.0 8 | margin_bottom = 112.0 9 | grow_horizontal = 0 10 | rect_min_size = Vector2( 32, 44 ) 11 | size_flags_horizontal = 0 12 | size_flags_vertical = 0 13 | custom_constants/separation = 0 14 | alignment = 2 15 | script = ExtResource( 2 ) 16 | 17 | [node name="ThumbnailButton" type="TextureButton" parent="."] 18 | modulate = Color( 1, 1, 0, 1 ) 19 | margin_right = 85.0 20 | margin_bottom = 98.0 21 | grow_vertical = 0 22 | mouse_filter = 1 23 | size_flags_horizontal = 3 24 | size_flags_vertical = 3 25 | texture_normal = ExtResource( 1 ) 26 | expand = true 27 | stretch_mode = 5 28 | 29 | [node name="Label" type="Label" parent="."] 30 | margin_top = 98.0 31 | margin_right = 85.0 32 | margin_bottom = 112.0 33 | rect_min_size = Vector2( 0, 14 ) 34 | size_flags_vertical = 1 35 | text = "hey im a pretty cool test text, I sure do love lasagna. It's tasty and stuff man." 36 | valign = 2 37 | clip_text = true 38 | __meta__ = { 39 | "_edit_use_anchors_": false 40 | } 41 | -------------------------------------------------------------------------------- /addons/posepal/interface/RectHandlerContainer.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://addons/posepal/interface/RectHandler.tscn" type="PackedScene" id=1] 4 | [ext_resource path="res://addons/posepal/interface/RectHandlerContainer.gd" type="Script" id=2] 5 | 6 | [node name="RectHandlerContainer" type="Control"] 7 | modulate = Color( 1, 1, 1, 0 ) 8 | mouse_filter = 2 9 | script = ExtResource( 2 ) 10 | __meta__ = { 11 | "_edit_use_anchors_": false 12 | } 13 | handler_size = 10 14 | 15 | [node name="HandlerTop" parent="." instance=ExtResource( 1 )] 16 | margin_top = 0.0 17 | margin_bottom = 10.0 18 | _windowRect = NodePath("..") 19 | 20 | [node name="HandlerBottom" parent="." instance=ExtResource( 1 )] 21 | handler_direction = 1 22 | _windowRect = NodePath("..") 23 | 24 | [node name="HandlerLeft" parent="." instance=ExtResource( 1 )] 25 | margin_top = 0.0 26 | margin_right = 10.0 27 | margin_bottom = 10.0 28 | mouse_default_cursor_shape = 10 29 | handler_direction = 2 30 | _windowRect = NodePath("..") 31 | 32 | [node name="HandlerRight" parent="." instance=ExtResource( 1 )] 33 | margin_left = -10.0 34 | margin_top = 0.0 35 | margin_bottom = 10.0 36 | mouse_default_cursor_shape = 10 37 | handler_direction = 3 38 | _windowRect = NodePath("..") 39 | -------------------------------------------------------------------------------- /addons/posepal/resource_dependency_popup/FileVBox.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends VBoxContainer 3 | 4 | const SCN_FileItem: PackedScene = preload("res://addons/posepal/resource_dependency_popup/FileItem.tscn") 5 | 6 | var children_as_dict: Dictionary = {} 7 | func _enter_tree() -> void: 8 | if get_tree().edited_scene_root == self: 9 | return 10 | if get_tree().edited_scene_root == get_parent().owner: 11 | return 12 | fill_files() 13 | 14 | func fill_files(): 15 | var old_paths = owner.old_paths 16 | var poselib: Resource = owner.poselib 17 | var f: File = File.new() 18 | for k in poselib.resourceReferences.keys(): 19 | # Ignore valid filepaths. 20 | var path: String = poselib.resourceReferences[k]#[0] 21 | if f.file_exists(path): 22 | continue 23 | var item: PanelContainer = SCN_FileItem.instance() 24 | 25 | item.old_path = path 26 | item.res_id = k 27 | item.pure_name = path.split('/',false)[-1] 28 | children_as_dict[k] = item 29 | add_child(item) 30 | item.connect('fixed_path', self, '_on_item_fixed_path') 31 | 32 | func _on_item_fixed_path(ch: int): 33 | $"../../../GuessButton".disabled = false 34 | for child in get_children(): 35 | if child.is_connected('fixed_path', self, '_on_item_fixed_path'): 36 | child.disconnect('fixed_path', self, '_on_item_fixed_path') 37 | -------------------------------------------------------------------------------- /addons/posepal/interface/PropertyMoreButton.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends MenuButton 3 | 4 | const SCN_AskNamePopup: PackedScene = preload("res://addons/posepal/interface/AskNamePopup.tscn") 5 | 6 | enum Items { 7 | EDIT, 8 | CREATE, 9 | RENAME, 10 | ERASE, 11 | APPLY, 12 | KEY 13 | } 14 | 15 | var popupMenu :PopupMenu 16 | var askNamePopup: Popup 17 | func _ready() -> void: 18 | if get_tree().edited_scene_root == get_parent().owner: 19 | return 20 | popupMenu = get_popup() 21 | popupMenu.clear() 22 | 23 | popupMenu.connect("id_pressed", self, "_on_id_pressed") 24 | connect("pressed", self, "_on_pressed") 25 | 26 | func _is_selected_scene_valid() -> bool: 27 | var editedSceneRoot: Node = get_tree().edited_scene_root 28 | var poseSceneRoot: Node = editedSceneRoot.get_node_or_null(owner.poselib_scene) 29 | 30 | if !is_instance_valid(poseSceneRoot): 31 | popupMenu.hide() 32 | owner.issue_warning('scene_not_selected') 33 | return false 34 | return true 35 | 36 | func ask_for_name(title_name: String): 37 | if is_instance_valid(askNamePopup): 38 | askNamePopup.queue_free() 39 | askNamePopup = SCN_AskNamePopup.instance() 40 | 41 | add_child(askNamePopup) 42 | askNamePopup.titlebar.title_name = title_name 43 | askNamePopup.label.text = "Please avoid special characters (e.g. !@*-=óü~/?;| etc.)" 44 | return askNamePopup 45 | -------------------------------------------------------------------------------- /addons/posepal/interface/AskIDPopup.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends Popup 3 | 4 | signal id_settled (new_id) 5 | 6 | var new_id: int = -1 7 | var max_id: int = 0 8 | 9 | onready var titlebar: HBoxContainer = $Panel/VBox/Titlebar 10 | onready var label: Label = $Panel/VBox/Label 11 | var parent: Node 12 | var spinBox: SpinBox 13 | var button: Button 14 | 15 | func _ready() -> void: 16 | popup_centered(rect_min_size) 17 | button = $Panel/VBox/Button 18 | spinBox = $Panel/VBox/ValueHBox/SpinBox 19 | var warningIcon = $Panel/VBox/ValueHBox/WarningIcon 20 | 21 | warningIcon.visible = false 22 | button.connect("pressed", self, '_on_Button_pressed') 23 | spinBox.connect("value_changed", self, "_on_SpinBox_value_changed") 24 | 25 | func _on_Button_pressed() -> void: 26 | spinBox = $Panel/VBox/ValueHBox/SpinBox 27 | new_id = clamp(spinBox.value, 0, max_id) 28 | 29 | emit_signal("id_settled", new_id) 30 | queue_free() 31 | 32 | func _on_SpinBox_value_changed(value: int) -> void: 33 | var warningIcon = $Panel/VBox/ValueHBox/WarningIcon 34 | 35 | new_id = value 36 | if value > -1 && value < max_id-1: 37 | warningIcon.visible = false 38 | elif value > max_id-1: 39 | warningIcon.visible = true 40 | warningIcon.hint_tooltip = "value exceeds maximum id allowed: "+ str(max_id) 41 | else: # value < 0 42 | warningIcon.visible = true 43 | warningIcon.hint_tooltip = "value exceeds minimumid allowed: 0" 44 | -------------------------------------------------------------------------------- /addons/posepal/nodepath_reference_popup/NodepathReferencePopup.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends WindowDialog 3 | 4 | const RES_PoseLibrary: GDScript = preload("res://addons/posepal/PoseLibrary.gd") 5 | 6 | var old_paths: PoolStringArray = [] 7 | var unfixed_nodepaths_num: int = 0 setget _set_unfixed_nodepaths_num 8 | var is_first_time: bool = true 9 | 10 | var posepalDock: Control 11 | var poselib: RES_PoseLibrary 12 | 13 | func _enter_tree() -> void: 14 | if get_tree().edited_scene_root != self: 15 | popup_centered(Vector2(OS.window_size.x* .4, OS.window_size.y-20)) 16 | else: 17 | show() 18 | if !is_instance_valid(posepalDock): 19 | return 20 | poselib = posepalDock.currentPoselib 21 | 22 | func _ready() -> void: 23 | $"MarginCon/VBox/OkHBox/OkButton".connect("pressed", self, "_on_OkButton_pressed") 24 | 25 | func _on_OkButton_pressed(): 26 | var nodepathVBox: VBoxContainer = $"MarginCon/VBox/VBox/ScrollCon/NodepathVBox" 27 | for nodepathItem in nodepathVBox.get_children(): 28 | poselib.nodepathReferences[nodepathItem.np_id] = nodepathItem.new_path 29 | posepalDock.save_poseData() 30 | queue_free() 31 | 32 | func _set_unfixed_nodepaths_num(new_unfixed_nodepaths_num): 33 | unfixed_nodepaths_num = new_unfixed_nodepaths_num 34 | if unfixed_nodepaths_num < 1: 35 | $"MarginCon/VBox/OkHBox/WarningIcon".visible = false 36 | return 37 | $"MarginCon/VBox/OkHBox/WarningIcon".visible = true 38 | 39 | 40 | -------------------------------------------------------------------------------- /addons/posepal/file_selector_preview/ZoomHbox.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends HBoxContainer 3 | 4 | var hSlider: HSlider 5 | func _ready() -> void: 6 | hSlider = $HSlider 7 | var filePanel :Panel= $"../FilePanel" 8 | 9 | if is_instance_valid(owner.editorControl): 10 | $ZoomIcon.texture = owner.editorControl.get_icon("Zoom", "EditorIcons") 11 | 12 | filePanel.connect("resized", self, "_on_FilePanel_resized") 13 | hSlider.connect( "value_changed", self, "_on_value_changed") 14 | _update_FileIcon_sizes() 15 | 16 | func _on_value_changed(value :float): 17 | _update_FileIcon_sizes() 18 | 19 | func _on_FilePanel_resized(): 20 | _update_FileIcon_sizes() 21 | 22 | func _update_FileIcon_sizes(): 23 | if !is_inside_tree(): 24 | return 25 | # print('updating columns') 26 | var fileContainer: GridContainer = $"../FilePanel/ScrollContainer/FileContainer" 27 | var filePanel: Panel = $"../FilePanel" 28 | var hSlider: HSlider = $HSlider 29 | 30 | var fileIcons: Array = fileContainer.get_children() 31 | if fileIcons == []: 32 | return 33 | 34 | var zoomed_size: int = hSlider.value * 8 35 | for fileIcon in fileIcons: 36 | var preview: TextureButton = fileIcon.get_node('Preview') 37 | 38 | fileIcon.get_node('Preview').rect_min_size = Vector2(zoomed_size, zoomed_size) 39 | # Still glitches sometimes, but it's better than the previous one. 40 | var new_columns: int = floor(filePanel.rect_size.x / (zoomed_size + 3)) # child margin 2 41 | if new_columns > 0: 42 | fileContainer.columns = new_columns 43 | -------------------------------------------------------------------------------- /addons/posepal/interface/Titlebar.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=6 format=2] 2 | 3 | [ext_resource path="res://addons/posepal/assets/JetBrainsMono-Bold.ttf" type="DynamicFontData" id=1] 4 | [ext_resource path="res://addons/posepal/interface/TitleBar.gd" type="Script" id=2] 5 | [ext_resource path="res://addons/posepal/assets/icons/icon_not.png" type="Texture" id=3] 6 | [ext_resource path="res://addons/posepal/plugin_icon.png" type="Texture" id=4] 7 | 8 | [sub_resource type="DynamicFont" id=2] 9 | font_data = ExtResource( 1 ) 10 | 11 | [node name="TitleBar" type="HBoxContainer"] 12 | margin_right = 357.0 13 | margin_bottom = 24.0 14 | size_flags_horizontal = 3 15 | script = ExtResource( 2 ) 16 | title_name = "Title Name" 17 | 18 | [node name="IconRect" type="TextureRect" parent="."] 19 | margin_right = 24.0 20 | margin_bottom = 24.0 21 | rect_min_size = Vector2( 24, 0 ) 22 | texture = ExtResource( 4 ) 23 | expand = true 24 | stretch_mode = 6 25 | 26 | [node name="Label" type="Label" parent="."] 27 | margin_left = 28.0 28 | margin_top = 2.0 29 | margin_right = 329.0 30 | margin_bottom = 22.0 31 | size_flags_horizontal = 7 32 | custom_fonts/font = SubResource( 2 ) 33 | text = "Title Name" 34 | autowrap = true 35 | __meta__ = { 36 | "_edit_use_anchors_": false 37 | } 38 | 39 | [node name="CloseButton" type="TextureButton" parent="."] 40 | margin_left = 333.0 41 | margin_right = 357.0 42 | margin_bottom = 24.0 43 | rect_min_size = Vector2( 24, 24 ) 44 | size_flags_vertical = 4 45 | texture_normal = ExtResource( 3 ) 46 | expand = true 47 | stretch_mode = 5 48 | -------------------------------------------------------------------------------- /addons/posepal/interface/ExpandableColumn.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=5 format=2] 2 | 3 | [ext_resource path="res://addons/posepal/assets/icons/icon_expand.png" type="Texture" id=1] 4 | [ext_resource path="res://addons/posepal/interface/ExpandableColumn.gd" type="Script" id=2] 5 | [ext_resource path="res://addons/posepal/assets/PostuRecordTheme.tres" type="Theme" id=3] 6 | 7 | [sub_resource type="StyleBoxFlat" id=1] 8 | draw_center = false 9 | border_width_bottom = 1 10 | border_color = Color( 0.341176, 0.341176, 0.341176, 1 ) 11 | 12 | [node name="ExpandableColumn" type="PanelContainer"] 13 | margin_right = 249.0 14 | margin_bottom = 17.0 15 | rect_min_size = Vector2( 0, 16 ) 16 | size_flags_horizontal = 3 17 | theme = ExtResource( 3 ) 18 | custom_styles/panel = SubResource( 1 ) 19 | script = ExtResource( 2 ) 20 | text = "ExpandableColumn" 21 | expand = false 22 | 23 | [node name="HBox" type="HBoxContainer" parent="."] 24 | margin_right = 249.0 25 | margin_bottom = 16.0 26 | mouse_filter = 2 27 | 28 | [node name="ExpandIcon" type="TextureRect" parent="HBox"] 29 | margin_right = 16.0 30 | margin_bottom = 16.0 31 | rect_min_size = Vector2( 16, 16 ) 32 | size_flags_vertical = 3 33 | texture = ExtResource( 1 ) 34 | expand = true 35 | stretch_mode = 6 36 | __meta__ = { 37 | "_edit_use_anchors_": false 38 | } 39 | 40 | [node name="Label" type="Label" parent="HBox"] 41 | margin_left = 20.0 42 | margin_right = 249.0 43 | margin_bottom = 16.0 44 | size_flags_horizontal = 7 45 | size_flags_vertical = 3 46 | custom_colors/font_color = Color( 1, 1, 1, 1 ) 47 | text = "ExpandableColumn" 48 | align = 1 49 | valign = 1 50 | -------------------------------------------------------------------------------- /addons/posepal/batch_key_popup/BatchKeyPopup.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends Popup 3 | 4 | const TEX_Icon: StreamTexture = preload("res://addons/posepal/plugin_icon.png") 5 | 6 | var handlerTop :ReferenceRect 7 | var handlerBottom :ReferenceRect 8 | var handlerLeft :ReferenceRect 9 | var handlerRight :ReferenceRect 10 | 11 | var current_edited_animPlayer: AnimationPlayer setget _set_current_edited_animPlayer 12 | var pluginInstance: EditorPlugin setget ,_get_pluginInstance 13 | var editorControl: Control setget ,_get_editorControl 14 | var posepalDock: Control 15 | func _enter_tree() -> void: 16 | show() 17 | visible = true 18 | 19 | func _ready() -> void: 20 | pass 21 | 22 | func _get_pluginInstance() -> EditorPlugin: 23 | if is_instance_valid(pluginInstance): 24 | return pluginInstance 25 | if get_tree().get_nodes_in_group("plugin posepal").size() == 0: 26 | queue_free() 27 | return null 28 | 29 | pluginInstance = get_tree().get_nodes_in_group("plugin posepal")[0] 30 | return pluginInstance 31 | 32 | func _get_editorControl() -> Control: 33 | if is_instance_valid(editorControl): 34 | return editorControl 35 | return self.pluginInstance.get_editor_interface().get_base_control() 36 | 37 | func _set_current_edited_animPlayer(new_current_edited_animPlayer: AnimationPlayer): 38 | current_edited_animPlayer = new_current_edited_animPlayer 39 | if !is_inside_tree(): 40 | return 41 | if !is_instance_valid(current_edited_animPlayer): 42 | return 43 | var titleBar: HBoxContainer = $"MarginContainer/VBox/TitleBar" 44 | titleBar.title_name = "Batch key to: "+ new_current_edited_animPlayer.name+ " / "+ new_current_edited_animPlayer.assigned_animation 45 | -------------------------------------------------------------------------------- /addons/posepal/interface/ExpandableTab.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=5 format=2] 2 | 3 | [ext_resource path="res://addons/posepal/assets/icons/icon_expand.png" type="Texture" id=1] 4 | [ext_resource path="res://icon.png" type="Texture" id=2] 5 | [ext_resource path="res://addons/posepal/interface/ExpandableTab.gd" type="Script" id=3] 6 | [ext_resource path="res://addons/posepal/plugin_icon.png" type="Texture" id=4] 7 | 8 | [node name="ExpandableTab" type="PanelContainer"] 9 | anchor_right = 1.0 10 | margin_left = 25.0 11 | margin_bottom = 34.0 12 | rect_min_size = Vector2( 0, 24 ) 13 | mouse_filter = 1 14 | size_flags_horizontal = 3 15 | size_flags_vertical = 3 16 | script = ExtResource( 3 ) 17 | icon = ExtResource( 2 ) 18 | 19 | [node name="TabHBox" type="HBoxContainer" parent="."] 20 | margin_left = 7.0 21 | margin_top = 7.0 22 | margin_right = 992.0 23 | margin_bottom = 27.0 24 | mouse_filter = 2 25 | size_flags_horizontal = 3 26 | size_flags_vertical = 3 27 | __meta__ = { 28 | "_edit_use_anchors_": false 29 | } 30 | 31 | [node name="ExpandIcon" type="TextureRect" parent="TabHBox"] 32 | margin_right = 20.0 33 | margin_bottom = 20.0 34 | rect_min_size = Vector2( 20, 20 ) 35 | texture = ExtResource( 1 ) 36 | expand = true 37 | stretch_mode = 6 38 | flip_v = true 39 | 40 | [node name="Icon" type="TextureRect" parent="TabHBox"] 41 | margin_left = 24.0 42 | margin_right = 44.0 43 | margin_bottom = 20.0 44 | rect_min_size = Vector2( 20, 20 ) 45 | texture = ExtResource( 4 ) 46 | expand = true 47 | stretch_mode = 6 48 | 49 | [node name="Label" type="Label" parent="TabHBox"] 50 | margin_left = 48.0 51 | margin_right = 985.0 52 | margin_bottom = 20.0 53 | size_flags_horizontal = 3 54 | size_flags_vertical = 3 55 | valign = 1 56 | -------------------------------------------------------------------------------- /addons/posepal/filter_edit_popup/FilterEditPopup.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends WindowDialog 3 | 4 | const RES_PoseLibrary: GDScript = preload("res://addons/posepal/PoseLibrary.gd") 5 | 6 | var posepalDock: Control 7 | var filterData: Array 8 | 9 | var poseSceneRoot: Node 10 | var poselib: RES_PoseLibrary 11 | func _enter_tree() -> void: 12 | show() 13 | 14 | func _ready() -> void: 15 | var okButton: Button = $Margin/VBox/OkButton 16 | var nodeVBox: VBoxContainer = $"Margin/VBox/Scroll/NodeVBox" 17 | okButton.connect("pressed", self, "_on_OkButton_pressed") 18 | nodeVBox.connect("checked_node", self, "_on_NodeVBox_checked_node") 19 | poseSceneRoot = nodeVBox.poseSceneRoot#get_tree().edited_scene_root.get_node_or_null(posepalDock.poselib_scene) 20 | # print('poseRoot ',poseSceneRoot) 21 | _load_filter() 22 | 23 | func _load_filter(): 24 | # print('loading filter ',filterData) 25 | var nodeVBox: VBoxContainer = $"Margin/VBox/Scroll/NodeVBox" 26 | for nodeItem in nodeVBox.get_children(): 27 | var nodepath: String = poseSceneRoot.get_path_to(nodeItem.node) 28 | var np_id: int = poselib.get_id_from_nodepath(nodepath) 29 | if filterData.has(np_id): 30 | nodeItem.get_node('CheckButton').pressed = true 31 | 32 | func _on_NodeVBox_checked_node(node: Node, child_id: int, value: bool): 33 | var nodepath: String = poseSceneRoot.get_path_to(node) 34 | var np_id: int = poselib.get_id_from_nodepath(nodepath) 35 | if value: 36 | if filterData.has(np_id): 37 | return 38 | filterData.append(np_id) 39 | else: 40 | filterData.erase(np_id) 41 | # print('filterdata ',filterData) 42 | 43 | func _on_OkButton_pressed(): 44 | posepalDock.currentPoselib.filterData[posepalDock.poselib_filter] = filterData 45 | queue_free() 46 | 47 | 48 | -------------------------------------------------------------------------------- /addons/posepal/batch_key_popup/property_display/AddHBox.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends HBoxContainer 3 | 4 | const TEX_IconValid :StreamTexture= preload("res://addons/posepal/assets/icons/icon_yes.png") 5 | const TEX_IconInvalid :StreamTexture= preload("res://addons/posepal/assets/icons/icon_not.png") 6 | 7 | #const SCN_PropertyItem: PackedScene = preload("res://addons/posepal/batch_key_popup/property_display/PropertyItem.tscn") 8 | 9 | var is_property_valid: bool = false setget _set_is_property_valid 10 | 11 | func _ready() -> void: 12 | $Button.connect("pressed", self, "_on_pressed") 13 | $LineEdit.connect("text_changed", self, "_on_text_changed") 14 | $LineEdit.connect("text_entered", self, "_on_text_entered") 15 | 16 | 17 | func text_confirm(text: String): 18 | if !is_property_valid: 19 | return 20 | owner.add_propertyItem(text) 21 | self.is_property_valid = false 22 | 23 | func _on_text_changed(new_text: String): 24 | # Check validity 25 | # var in node and not dupplicated 26 | var propertyContainer: GridContainer = $"../../../PropertyContainer" 27 | var is_duplicate: bool = false 28 | for propertyItem in propertyContainer.get_children(): 29 | if propertyItem.property == new_text: 30 | is_duplicate = true 31 | break 32 | 33 | 34 | if (new_text in owner.node) && !is_duplicate: 35 | self.is_property_valid = true 36 | else: 37 | self.is_property_valid = false 38 | 39 | 40 | func _on_text_entered(new_text: String): 41 | text_confirm(new_text) 42 | 43 | func _on_pressed(): 44 | text_confirm($LineEdit.text) 45 | 46 | func _set_is_property_valid(new_is_property_valid: bool): 47 | is_property_valid = new_is_property_valid 48 | if !is_inside_tree(): return 49 | 50 | if new_is_property_valid: 51 | $"Button".icon = TEX_IconValid 52 | else: 53 | $"Button".icon = TEX_IconInvalid 54 | -------------------------------------------------------------------------------- /addons/posepal/pose_palette/ZoomHScroll.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends HSlider 3 | 4 | var posePalette :GridContainer 5 | var poseContainer :ScrollContainer 6 | func _ready() -> void: 7 | get_parent().get_node("ZoomIcon").texture = get_icon('Zoom', "EditorIcons") 8 | if get_tree().edited_scene_root == owner: 9 | return 10 | posePalette = owner._get_posePalette() 11 | poseContainer = owner._get_posePalette().get_parent() 12 | 13 | connect("value_changed", self, "_on_value_changed") 14 | poseContainer.connect("resized", self, "_on_PoseContainer_resized") 15 | _update_frame_sizes() 16 | 17 | func _on_PoseContainer_resized(): 18 | if get_tree().edited_scene_root == owner: 19 | return 20 | _update_frame_sizes() 21 | 22 | func _on_value_changed(value :float): 23 | _update_frame_sizes() 24 | 25 | func _update_frame_sizes(): 26 | if !is_inside_tree(): 27 | return 28 | if !is_instance_valid(posePalette): 29 | posePalette = owner.get_node("VSplit/TabContainer/Palette/GridContainer") 30 | if !is_instance_valid(poseContainer): 31 | poseContainer = owner.get_node("VSplit/TabContainer/Palette") 32 | 33 | var posePalette_children: Array = posePalette.get_children() 34 | if posePalette_children.size() == 0: 35 | return 36 | 37 | for posePreview in posePalette_children: 38 | var f :VBoxContainer= posePreview 39 | var zoomed_size :int= value * 8 40 | f.rect_min_size = Vector2(zoomed_size, zoomed_size + 18) 41 | if is_instance_valid(f.thumbnailButton): 42 | f.thumbnailButton.rect_min_size = f.rect_min_size 43 | _fix_columns() 44 | 45 | # Still glitches sometimes, but it's better than the previous one. 46 | func _fix_columns(): 47 | if posePalette.get_child_count() == 0: 48 | return 49 | var new_columns :int= floor(owner.rect_size.x / (posePalette.get_child(0).rect_size.x + 8)) 50 | if new_columns > 0: 51 | posePalette.columns = new_columns 52 | -------------------------------------------------------------------------------- /addons/posepal/nodepath_reference_popup/NodepathVBox.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends VBoxContainer 3 | 4 | const SCN_NodepathItem: PackedScene = preload("res://addons/posepal/nodepath_reference_popup/NodepathItem.tscn") 5 | const RES_PoseLibrary: GDScript = preload("res://addons/posepal/PoseLibrary.gd") 6 | 7 | var children_as_dict: Dictionary = {} 8 | func _enter_tree() -> void: 9 | if get_tree().edited_scene_root == self: 10 | return 11 | if get_tree().edited_scene_root == get_parent().owner: 12 | return 13 | fill_nodepaths() 14 | 15 | func fill_nodepaths(): 16 | # var old_paths = owner.old_paths 17 | var poselib: RES_PoseLibrary = owner.poselib 18 | 19 | var poseRoot: Node = get_tree().edited_scene_root.get_node(owner.posepalDock.poselib_scene) 20 | if !is_instance_valid(poseRoot): 21 | return 22 | for np_id in poselib.nodepathReferences.keys(): 23 | # Check if nodepath is valid. 24 | var nodepath: String = poselib.get_nodepath_from_id(np_id)#resourceReferences[np_id]#[0] 25 | var node: Node = poseRoot.get_node_or_null(nodepath) 26 | if is_instance_valid(node): 27 | continue 28 | owner.unfixed_nodepaths_num += 1 29 | var item: PanelContainer = SCN_NodepathItem.instance() 30 | 31 | item.old_path = nodepath 32 | item.np_id = np_id 33 | item.pure_name = nodepath.split('/',false)[-1] 34 | item.poseRoot = poseRoot 35 | if item.pure_name == '.': 36 | item.pure_name = poseRoot.name 37 | children_as_dict[np_id] = item 38 | add_child(item) 39 | item.connect('fixed_path', self, '_on_item_fixed_path') 40 | 41 | func _on_item_fixed_path(ch: int): 42 | # $"../../../GuessButton".disabled = false 43 | # for child in get_children(): 44 | # if child.is_connected('fixed_path', self, '_on_item_fixed_path'): 45 | # child.disconnect('fixed_path', self, '_on_item_fixed_path') 46 | # var child: Node = get_child(ch) 47 | owner.unfixed_nodepaths_num -= 1 48 | 49 | 50 | -------------------------------------------------------------------------------- /addons/posepal/settings_popup/SettingsPopup.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends WindowDialog 3 | 4 | const RES_PosePalSettings: GDScript = preload("res://addons/posepal/PosePalSettings.gd") 5 | 6 | var pluginInstance: EditorPlugin setget ,_get_pluginInstance 7 | var posepalDock: Control 8 | 9 | func _enter_tree() -> void: 10 | show() 11 | visible = true 12 | 13 | func load_settings(): 14 | var settings: Resource = self.pluginInstance.settings 15 | var extensionMenu: MenuButton = $"MarginCon/VBox/ExtensionHBox/MenuButton" 16 | var extensionPopup: PopupMenu = extensionMenu.get_popup() 17 | extensionMenu.text = extensionPopup.get_item_text(settings.poselib_extension) 18 | var debugMenu: MenuButton = $"MarginCon/VBox/DebugHBox/MenuButton" 19 | var debugPopup: PopupMenu = debugMenu.get_popup() 20 | debugMenu.text = debugPopup.get_item_text(settings.debug_mode) 21 | 22 | func _ready() -> void: 23 | if get_tree().edited_scene_root == self: 24 | return 25 | if !is_instance_valid(posepalDock): 26 | return 27 | var saveButton: Button = $"MarginCon/VBox/SaveButton" 28 | saveButton.connect("pressed", self, "_on_saveButton_pressed") 29 | load_settings() 30 | 31 | func _get_pluginInstance() -> EditorPlugin: 32 | if is_instance_valid(pluginInstance): 33 | return pluginInstance 34 | if get_tree().get_nodes_in_group("plugin posepal").size() == 0: 35 | # queue_free() 36 | return null 37 | pluginInstance = get_tree().get_nodes_in_group("plugin posepal")[0] 38 | return pluginInstance 39 | 40 | func _on_saveButton_pressed(): 41 | var settings: RES_PosePalSettings = self.pluginInstance.settings 42 | settings.poselib_extension = $"MarginCon/VBox/ExtensionHBox".selected_id 43 | settings.debug_mode = $"MarginCon/VBox/DebugHBox".selected_id 44 | # var selectedScene: Node= get_tree().edited_scene_root.get_node_or_null(posepalDock.poselib_scene) 45 | posepalDock.save_poseData() 46 | 47 | queue_free() 48 | -------------------------------------------------------------------------------- /addons/posepal/file_selector_preview/PathHBox.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends HBoxContainer 3 | 4 | func _ready() -> void: 5 | $ReturnButton.connect("pressed",self,"_on_ReturnButton_pressed") 6 | $LineEdit.connect("text_entered", self, "_on_text_entered") 7 | 8 | func _on_ReturnButton_pressed(): 9 | var a:String 10 | var subdir :PoolStringArray= owner.current_dir.get_base_dir().rsplit('/', false) 11 | 12 | if subdir.size() <= 1: # If current_dir is root dir 13 | return 14 | var suffix :String= owner.current_dir.right(owner.current_dir.find_last(subdir[subdir.size()-1])) 15 | owner.current_dir = owner.current_dir.trim_suffix(suffix) 16 | 17 | func _on_text_entered(new_text :String): 18 | var Dir :Directory= Directory.new() 19 | 20 | # If full file path is inputted, both directory and file will be selected. 21 | if Dir.file_exists(new_text): 22 | owner.current_dir = new_text 23 | owner.current_file = new_text.get_file() 24 | 25 | var fileContainer: GridContainer = $"../FilePanel/ScrollContainer/FileContainer" 26 | for fileIcon in fileContainer.get_children(): 27 | if fileIcon.file_name == owner.current_file: 28 | fileContainer.selectedFileIcon = fileIcon 29 | break 30 | return 31 | 32 | if Dir.open(new_text) == OK: 33 | var subdir :PoolStringArray= new_text.split("/", false) 34 | print('subdir: ',subdir) 35 | match subdir[0]: 36 | 'res:': 37 | if owner.filesystem_access == FileDialog.ACCESS_RESOURCES: 38 | owner.current_dir = new_text 39 | else: 40 | $LineEdit.text = owner.current_dir 41 | 'user:': 42 | if owner.filesystem_access == FileDialog.ACCESS_USERDATA: 43 | owner.current_dir = new_text 44 | else: 45 | $LineEdit.text = owner.current_dir 46 | _: 47 | if owner.filesystem_access == FileDialog.ACCESS_USERDATA: 48 | owner.current_dir = new_text 49 | else: 50 | $LineEdit.text = owner.current_dir 51 | else: 52 | $LineEdit.text = owner.current_dir 53 | -------------------------------------------------------------------------------- /addons/posepal/setup_bones_popup/BonePopup.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=6 format=2] 2 | 3 | [ext_resource path="res://addons/posepal/setup_bones_popup/BonePopup.gd" type="Script" id=1] 4 | [ext_resource path="res://addons/posepal/assets/PostuRecordTheme.tres" type="Theme" id=2] 5 | [ext_resource path="res://addons/posepal/setup_bones_popup/PolygonVBox.gd" type="Script" id=3] 6 | [ext_resource path="res://addons/posepal/setup_bones_popup/BoneItem.tscn" type="PackedScene" id=4] 7 | [ext_resource path="res://addons/posepal/interface/Titlebar.tscn" type="PackedScene" id=5] 8 | 9 | [node name="BonePopup" type="WindowDialog"] 10 | visible = true 11 | anchor_left = 0.5 12 | anchor_top = 0.5 13 | anchor_right = 0.5 14 | anchor_bottom = 0.5 15 | margin_left = -110.0 16 | margin_top = -258.0 17 | margin_right = 111.0 18 | margin_bottom = 223.0 19 | theme = ExtResource( 2 ) 20 | resizable = true 21 | script = ExtResource( 1 ) 22 | 23 | [node name="Margin" type="MarginContainer" parent="."] 24 | anchor_right = 1.0 25 | anchor_bottom = 1.0 26 | custom_constants/margin_right = 10 27 | custom_constants/margin_top = 10 28 | custom_constants/margin_left = 10 29 | custom_constants/margin_bottom = 10 30 | 31 | [node name="VBox" type="VBoxContainer" parent="Margin"] 32 | margin_left = 10.0 33 | margin_top = 10.0 34 | margin_right = 211.0 35 | margin_bottom = 471.0 36 | size_flags_horizontal = 3 37 | size_flags_vertical = 3 38 | 39 | [node name="TitleBar" parent="Margin/VBox" instance=ExtResource( 5 )] 40 | margin_right = 201.0 41 | title_name = "Select Bone" 42 | window_path = NodePath("../../..") 43 | 44 | [node name="Scroll" type="ScrollContainer" parent="Margin/VBox"] 45 | margin_top = 28.0 46 | margin_right = 201.0 47 | margin_bottom = 461.0 48 | size_flags_horizontal = 3 49 | size_flags_vertical = 3 50 | 51 | [node name="BoneVBox" type="VBoxContainer" parent="Margin/VBox/Scroll"] 52 | script = ExtResource( 3 ) 53 | sceneNodeItem = ExtResource( 4 ) 54 | node_type = "Bone2D" 55 | -------------------------------------------------------------------------------- /addons/posepal/file_selector_preview/FileContainer.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends GridContainer 3 | 4 | const SCN_FileIcon: PackedScene = preload("res://addons/posepal/file_selector_preview/FileIcon.tscn") 5 | const TEX_IconFolder: StreamTexture = preload("res://addons/posepal/assets/icons/icon_folder.png") 6 | 7 | var fileSelectorPreview: Control 8 | var selectedFileIcon = null setget _set_selectedFileIcon 9 | 10 | func _enter_tree() -> void: 11 | fileSelectorPreview = owner 12 | 13 | func update_file_list(): 14 | get_parent().scroll_vertical = 0 15 | for child in get_children(): 16 | child.queue_free() 17 | 18 | for folder in owner.dir_folders: 19 | if folder == '.' or folder == '..': 20 | continue 21 | 22 | var fileIcon :VBoxContainer= SCN_FileIcon.instance() 23 | add_child(fileIcon) 24 | fileIcon.setup(folder, fileIcon.TYPE.folder) 25 | fileIcon.connect("folder_selected", self, "_on_folder_selected") 26 | 27 | for file in owner.dir_files: 28 | if owner.current_filter != "*": 29 | if !file.get_extension() == owner.current_filter: 30 | continue 31 | else: 32 | if !file.get_extension() in owner.filters: 33 | continue 34 | 35 | var fileIcon :VBoxContainer= SCN_FileIcon.instance() 36 | add_child(fileIcon) 37 | fileIcon.setup(file, fileIcon.TYPE.file) 38 | fileIcon.connect("file_selected", self, "_on_file_selected") 39 | 40 | # yield(get_tree(), "idle_frame") 41 | $"../../../ZoomHbox"._update_FileIcon_sizes() 42 | 43 | func _on_file_selected(file_name :String): 44 | owner.current_file = file_name 45 | for icon in get_children(): 46 | if icon.file_name == file_name: 47 | self.selectedFileIcon = icon 48 | 49 | func _set_selectedFileIcon(new_fileIcon :VBoxContainer): 50 | if is_instance_valid(selectedFileIcon): 51 | selectedFileIcon.selected = false 52 | 53 | new_fileIcon.selected = true 54 | selectedFileIcon = new_fileIcon 55 | 56 | func _on_folder_selected(file_name :String): 57 | owner.current_dir = owner.current_dir + file_name + "/" 58 | 59 | -------------------------------------------------------------------------------- /addons/posepal/resource_dependency_popup/ResourceDependencyPopup.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends WindowDialog 3 | 4 | signal ok_pressed (has_missing_dependencies) 5 | 6 | const RES_PoseLibrary: GDScript = preload("res://addons/posepal/PoseLibrary.gd") 7 | 8 | var old_paths: PoolStringArray = [] 9 | var is_first_time: bool = true 10 | 11 | var posePalDock: Control 12 | var poselib: RES_PoseLibrary 13 | 14 | func _enter_tree() -> void: 15 | visible = true 16 | if !is_first_time: 17 | return 18 | is_first_time = false 19 | 20 | if get_tree().edited_scene_root == self: 21 | return 22 | if !is_instance_valid(posePalDock): 23 | queue_free() 24 | return 25 | if !is_instance_valid(posePalDock.currentPoselib): 26 | queue_free() 27 | return 28 | 29 | popup_centered(Vector2(OS.window_size.x* .4, OS.window_size.y-20)) 30 | poselib = posePalDock.currentPoselib 31 | old_paths = poselib.get_res_paths() 32 | 33 | func _ready() -> void: 34 | $MarginCon/VBox/OkHBox/OkButton.connect("pressed", self, "_on_OkButton_pressed") 35 | 36 | func _on_OkButton_pressed(): 37 | var has_broken: bool = _resolve_dependencies() 38 | posePalDock.save_poseData() 39 | emit_signal("ok_pressed", has_broken) 40 | queue_free() 41 | 42 | func fix_warning(): 43 | $"MarginCon/VBox/OkHBox/WarningIcon".visible = false 44 | 45 | func _resolve_dependencies() -> bool: 46 | var fileVBox: VBoxContainer = $"MarginCon/VBox/VBox/ScrollCon/FileVBox" 47 | var f: File = File.new() 48 | var poselib: RES_PoseLibrary = posePalDock.currentPoselib 49 | var has_broken_dependencies: bool = false 50 | 51 | for k in poselib.resourceReferences.keys(): 52 | var res_path = poselib.resourceReferences[k] 53 | if !fileVBox.children_as_dict.has(k): 54 | continue 55 | if res_path != fileVBox.children_as_dict[k].old_path: 56 | continue 57 | var new_path = fileVBox.children_as_dict[k].new_path 58 | if !f.file_exists(new_path): 59 | has_broken_dependencies = true 60 | continue 61 | poselib.resourceReferences[k] = new_path 62 | return has_broken_dependencies 63 | -------------------------------------------------------------------------------- /addons/posepal/batch_key_popup/FinishHBox.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends HBoxContainer 3 | 4 | func _ready() -> void: 5 | $OkButton.connect("pressed", self, "_on_OkButton_pressed") 6 | $CancelButton.connect("pressed", self, "_on_CancelButton_pressed") 7 | 8 | func _on_OkButton_pressed(): 9 | var propertyBox: VBoxContainer = $"../HSplitContainer/PropertyScroll/VBox" 10 | var editedSceneRoot: Node = get_tree().edited_scene_root 11 | var poseSceneRoot: Node = editedSceneRoot.get_node(owner.posepalDock.poselib_scene) 12 | var currentAnimOptionButton: OptionButton = owner.pluginInstance.animationPlayerEditor_CurrentAnimation_OptionButton 13 | var currentTimeLineEdit: LineEdit = owner.pluginInstance.animationPlayerEditor_CurrentTime_LineEdit 14 | var editorInterface: EditorInterface = owner.pluginInstance.get_editor_interface() 15 | var editorSelection: EditorSelection = editorInterface.get_selection() 16 | var animPlayer: AnimationPlayer = owner.current_edited_animPlayer 17 | if !is_instance_valid(animPlayer): 18 | print('[posepal] AnimationPlayer not valid.') 19 | return 20 | 21 | var anim: Animation = animPlayer.get_animation(currentAnimOptionButton.text) 22 | var animRoot: Node = animPlayer.get_node(animPlayer.root_node) 23 | 24 | var current_time: float = float(currentTimeLineEdit.text) 25 | for propertyDisplay in propertyBox.get_children(): 26 | var node = propertyDisplay.node 27 | for property in propertyDisplay.get_properties(): 28 | var property_path: String = str(animRoot.get_path_to(node))+':'+property 29 | var tr_property: int = anim.find_track(property_path) 30 | 31 | var key_value = node.get(property) 32 | if tr_property == -1: 33 | tr_property = anim.add_track(Animation.TYPE_VALUE) 34 | anim.track_set_path(tr_property, property_path) 35 | var update_mode: int = owner.posepalDock.get_default_update_mode(property, key_value) 36 | anim.value_track_set_update_mode(tr_property, update_mode) 37 | 38 | anim.track_insert_key(tr_property, current_time, key_value) 39 | owner.queue_free() 40 | 41 | func _on_CancelButton_pressed(): 42 | owner.queue_free() 43 | 44 | 45 | -------------------------------------------------------------------------------- /addons/posepal/file_selector_preview/FileHBox.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends HBoxContainer 3 | 4 | var all_filters_option: String = "* All Images" 5 | 6 | func _ready() -> void: 7 | var extensionMenu: MenuButton = $ExtensionMenu 8 | 9 | $LineEdit.connect("text_entered", self, "_on_text_entered") 10 | extensionMenu.get_popup().connect("id_pressed", self, "_on_ExtensionMenuPopup_id_pressed") 11 | extensionMenu.get_popup().clear() 12 | extensionMenu.get_popup().add_item(all_filters_option) 13 | extensionMenu.text = all_filters_option 14 | # print(owner.current_filter) 15 | 16 | func update_extensions(): 17 | var extensionMenu: MenuButton = $ExtensionMenu 18 | extensionMenu.get_popup().clear() 19 | for extension in owner.filters: 20 | extensionMenu.get_popup().add_item(extension) 21 | extensionMenu.get_popup().add_item(all_filters_option) 22 | extensionMenu.text = owner.current_filter 23 | # extensionMenu.text = all_filters_option 24 | 25 | func _on_text_entered(new_text :String): 26 | var Dir: Directory = Directory.new() 27 | var fileContainer: GridContainer = $"../FilePanel/ScrollContainer/FileContainer" 28 | 29 | if owner.mode == FileDialog.MODE_OPEN_FILE: 30 | if Dir.file_exists(owner.current_dir + new_text): 31 | if new_text.get_extension() in owner.filters: 32 | owner.current_file = new_text 33 | 34 | for fileIcon in fileContainer.get_children(): 35 | if fileIcon.file_name == owner.current_file: 36 | fileContainer.selectedFileIcon = fileIcon 37 | break 38 | else: 39 | $LineEdit.text = owner.current_file 40 | elif owner.mode == FileDialog.MODE_SAVE: 41 | if new_text.get_extension() == '': 42 | if owner.current_filter != '*': 43 | new_text = new_text+'.'+owner.current_filter 44 | $LineEdit.text = owner.current_file 45 | 46 | func _on_ExtensionMenuPopup_id_pressed(id :int): 47 | var popupMenu = $ExtensionMenu.get_popup() 48 | 49 | var selected_filter :String= popupMenu.get_item_text(id) 50 | if selected_filter == all_filters_option: 51 | owner.current_filter = "*" 52 | $ExtensionMenu.text = all_filters_option 53 | return 54 | elif selected_filter in owner.filters: 55 | owner.current_filter = selected_filter 56 | # $ExtensionMenu.text = selected_filter 57 | -------------------------------------------------------------------------------- /addons/posepal/interface/ExpandableTab.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends Control 3 | 4 | export var path_to_expandableControl: NodePath = NodePath('.') 5 | var expandableControl: Control 6 | 7 | export var text: String setget _set_tab_text 8 | export var icon: StreamTexture = load('res://icon.png') setget _set_tab_icon 9 | export var expand: bool = true setget _set_expand 10 | 11 | func _set_tab_text(new_text :String): 12 | text = new_text 13 | var label: Label = get_node_or_null("TabHBox/Label") 14 | if !is_instance_valid(label): 15 | return 16 | label.text = new_text 17 | 18 | func _set_tab_icon(new_icon :StreamTexture): 19 | icon = new_icon 20 | if !is_inside_tree(): 21 | yield(self, "tree_entered") 22 | var iconRect :TextureRect= get_node_or_null("TabHBox/Icon") 23 | if !is_instance_valid(iconRect): 24 | return 25 | iconRect.texture = new_icon 26 | 27 | func _ready() -> void: 28 | if get_tree().edited_scene_root == self: 29 | return 30 | if get_tree().edited_scene_root == get_parent().owner: 31 | return 32 | 33 | connect("mouse_entered", self, "_on_mouse_entered") 34 | connect("mouse_exited", self, "_on_mouse_exited") 35 | set_process_input(false) 36 | 37 | func _on_mouse_entered(): 38 | set_process_input(true) 39 | 40 | func _on_mouse_exited(): 41 | set_process_input(false) 42 | just_pressed = false 43 | 44 | var just_pressed = false 45 | func _input(event: InputEvent) -> void: 46 | if !event is InputEventMouseButton: 47 | return 48 | var mouseInput :InputEventMouseButton= event 49 | 50 | if mouseInput.button_index == BUTTON_LEFT: 51 | if mouseInput.pressed && !just_pressed:# && is_inside_tab: 52 | self.expand = !self.expand 53 | just_pressed = true 54 | elif !mouseInput.pressed && just_pressed: 55 | just_pressed = false 56 | 57 | func _set_expand(new_expand :bool): 58 | expand = new_expand 59 | if !is_inside_tree(): 60 | return 61 | 62 | expandableControl = get_node(path_to_expandableControl) 63 | if is_instance_valid(expandableControl): 64 | if expandableControl == self: 65 | return 66 | if "visible" in expandableControl: 67 | expandableControl.visible = new_expand 68 | var expandIcon :TextureRect= $TabHBox/ExpandIcon 69 | expandIcon.flip_v = new_expand 70 | 71 | -------------------------------------------------------------------------------- /addons/posepal/batch_key_popup/property_display/PropertyDisplay.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends VBoxContainer 3 | 4 | const SCN_PropertyItem: PackedScene = preload("res://addons/posepal/batch_key_popup/property_display/PropertyItem.tscn") 5 | 6 | var title: String = "Node" setget _set_title 7 | var display_id: int = -1 8 | var node: Node setget _set_node 9 | var node_nodepath: String setget _set_node_nodepath 10 | 11 | var is_valid_for_batch_property: bool = false setget _set_is_valid_for_batch_property 12 | 13 | func add_propertyItem(text: String): 14 | # Instance PropertyItem 15 | # Only if property valid on Node. 16 | var propertyItem: Control = SCN_PropertyItem.instance() 17 | var lineEdit: LineEdit = $"NodeTab/VBoxContainer/AddHBox/LineEdit" 18 | # print('aaaaaaa ',propertyItem.property) 19 | var propertyContainer: GridContainer = $"PropertyContainer" 20 | propertyContainer.add_child(propertyItem) 21 | propertyItem.property = text 22 | lineEdit.text = "" 23 | 24 | func get_properties() -> PoolStringArray: 25 | var properties: PoolStringArray = [] 26 | var propertyContainer: GridContainer = $"PropertyContainer" 27 | for propertyItem in propertyContainer.get_children(): 28 | properties.append(propertyItem.property) 29 | return properties 30 | 31 | 32 | func validate_batch_property(batch_property: String) -> bool: 33 | is_valid_for_batch_property = false 34 | if (batch_property in node): 35 | if !batch_property in get_properties(): 36 | self.is_valid_for_batch_property = true 37 | else: 38 | self.is_valid_for_batch_property = false 39 | return is_valid_for_batch_property 40 | 41 | func _set_node(new_node: Node): 42 | node = new_node 43 | title = node.name 44 | 45 | 46 | func _set_title(new_title: String): 47 | title = new_title 48 | $"NodeTab/VBoxContainer/TabHBox/ExpandButton".text = title 49 | 50 | func _set_node_nodepath(new_node_nodepath: String): 51 | node_nodepath = new_node_nodepath 52 | $"NodeTab/VBoxContainer/TabHBox".hint_tooltip = node_nodepath 53 | 54 | func _set_is_valid_for_batch_property(new_is_valid_for_batch_property: bool): 55 | is_valid_for_batch_property = new_is_valid_for_batch_property 56 | $"NodeTab/VBoxContainer/TabHBox/BatchValidIcon".visible = is_valid_for_batch_property 57 | 58 | 59 | -------------------------------------------------------------------------------- /addons/posepal/interface/AskNamePopup.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=5 format=2] 2 | 3 | [ext_resource path="res://addons/posepal/interface/Titlebar.tscn" type="PackedScene" id=1] 4 | [ext_resource path="res://addons/posepal/assets/LipsyncImporterTheme.tres" type="Theme" id=2] 5 | [ext_resource path="res://addons/posepal/interface/AskNamePopup.gd" type="Script" id=3] 6 | [ext_resource path="res://addons/posepal/plugin_icon.png" type="Texture" id=4] 7 | 8 | [node name="AskNamePopup" type="Popup"] 9 | visible = true 10 | anchor_right = 1.0 11 | anchor_bottom = 1.0 12 | margin_left = 312.0 13 | margin_top = 167.498 14 | margin_right = -312.0 15 | margin_bottom = -232.502 16 | rect_min_size = Vector2( 400, 200 ) 17 | theme = ExtResource( 2 ) 18 | script = ExtResource( 3 ) 19 | __meta__ = { 20 | "_edit_use_anchors_": false 21 | } 22 | 23 | [node name="Panel" type="Panel" parent="."] 24 | margin_right = 400.0 25 | margin_bottom = 200.0 26 | rect_min_size = Vector2( 400, 200 ) 27 | __meta__ = { 28 | "_edit_use_anchors_": false 29 | } 30 | 31 | [node name="VBox" type="VBoxContainer" parent="Panel"] 32 | anchor_right = 1.0 33 | anchor_bottom = 1.0 34 | margin_left = 20.0 35 | margin_top = 10.0 36 | margin_right = -20.0 37 | margin_bottom = -20.0 38 | size_flags_horizontal = 4 39 | __meta__ = { 40 | "_edit_use_anchors_": false 41 | } 42 | 43 | [node name="Titlebar" parent="Panel/VBox" instance=ExtResource( 1 )] 44 | margin_right = 360.0 45 | grow_horizontal = 0 46 | title_name = "New Name" 47 | icon_texture = ExtResource( 4 ) 48 | window_path = NodePath("../../..") 49 | 50 | [node name="HSeparator" type="HSeparator" parent="Panel/VBox"] 51 | margin_top = 28.0 52 | margin_right = 360.0 53 | margin_bottom = 32.0 54 | 55 | [node name="Label" type="Label" parent="Panel/VBox"] 56 | margin_top = 36.0 57 | margin_right = 360.0 58 | margin_bottom = 56.0 59 | text = "New name:" 60 | autowrap = true 61 | 62 | [node name="LineEdit" type="LineEdit" parent="Panel/VBox"] 63 | margin_top = 60.0 64 | margin_right = 360.0 65 | margin_bottom = 82.0 66 | placeholder_text = "Please insert new name here." 67 | caret_blink = true 68 | caret_blink_speed = 0.5 69 | __meta__ = { 70 | "_edit_use_anchors_": false 71 | } 72 | 73 | [node name="Button" type="Button" parent="Panel/VBox"] 74 | margin_top = 86.0 75 | margin_right = 360.0 76 | margin_bottom = 106.0 77 | text = "Done" 78 | -------------------------------------------------------------------------------- /addons/posepal/resource_dependency_popup/FileItem.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=6 format=2] 2 | 3 | [ext_resource path="res://addons/posepal/assets/icons/icon_about.png" type="Texture" id=2] 4 | [ext_resource path="res://addons/posepal/resource_dependency_popup/FileItem.gd" type="Script" id=3] 5 | [ext_resource path="res://addons/posepal/assets/uniques/StyleDependencyFileBroken.tres" type="StyleBox" id=4] 6 | 7 | [sub_resource type="StyleBoxLine" id=2] 8 | color = Color( 0.662745, 0.662745, 0.662745, 1 ) 9 | vertical = true 10 | 11 | [sub_resource type="StreamTexture" id=3] 12 | flags = 4 13 | load_path = "res://.import/icon_folder.png-6cb5af4a1239664b50a2f4e25fd51fb2.stex" 14 | 15 | [node name="FileItem" type="PanelContainer"] 16 | anchor_right = 0.466 17 | margin_right = -0.18399 18 | margin_bottom = 15.0 19 | size_flags_horizontal = 3 20 | custom_styles/panel = ExtResource( 4 ) 21 | script = ExtResource( 3 ) 22 | 23 | [node name="HBox" type="HBoxContainer" parent="."] 24 | margin_right = 477.0 25 | margin_bottom = 14.0 26 | rect_min_size = Vector2( 96, 0 ) 27 | size_flags_horizontal = 3 28 | size_flags_vertical = 3 29 | 30 | [node name="FileIcon" type="TextureRect" parent="HBox"] 31 | margin_right = 14.0 32 | margin_bottom = 14.0 33 | rect_min_size = Vector2( 14, 14 ) 34 | texture = ExtResource( 2 ) 35 | expand = true 36 | stretch_mode = 6 37 | 38 | [node name="OldPathLabel" type="Label" parent="HBox"] 39 | margin_left = 18.0 40 | margin_right = 232.0 41 | margin_bottom = 14.0 42 | mouse_filter = 1 43 | size_flags_horizontal = 3 44 | text = "res://icon.png" 45 | valign = 1 46 | clip_text = true 47 | 48 | [node name="VSeparator" type="VSeparator" parent="HBox"] 49 | margin_left = 236.0 50 | margin_right = 240.0 51 | margin_bottom = 14.0 52 | custom_styles/separator = SubResource( 2 ) 53 | 54 | [node name="PathLabel" type="Label" parent="HBox"] 55 | margin_left = 244.0 56 | margin_right = 459.0 57 | margin_bottom = 14.0 58 | grow_horizontal = 0 59 | mouse_filter = 1 60 | size_flags_horizontal = 3 61 | text = "res://icon.png" 62 | align = 3 63 | valign = 1 64 | clip_text = true 65 | 66 | [node name="OpenButton" type="TextureButton" parent="HBox"] 67 | margin_left = 463.0 68 | margin_right = 477.0 69 | margin_bottom = 14.0 70 | rect_min_size = Vector2( 14, 0 ) 71 | texture_normal = SubResource( 3 ) 72 | expand = true 73 | stretch_mode = 5 74 | -------------------------------------------------------------------------------- /addons/posepal/interface/WarningIcon.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends TextureRect 3 | 4 | var WarningText: Dictionary = { 5 | '': "", 6 | 'edited_scene_invalid': "Current Edited Scene is Invalid.", 7 | 'animplayer_invalid': "Selected AnimationPlayer is Invalid", 8 | 'lacking_parameters': "Required parameters not selected.", 9 | 'scene_not_selected': "No Scene is selected.", 10 | 'cant_change_default_parameter': "Default parameters can't be renamed or deleted.", 11 | 'broken_dependencies': "Resources from poselib have invalid paths.", 12 | 'broken_nodepaths': "Poses have invalid nodepaths.", 13 | 14 | 'cant_frame': "Could not add keyframe because owner lacks parameters.", 15 | 'animplayeredit_empty': "Could not add keyframe because Animation is not selected on AnimationPlayerEditor.", 16 | 'animsprite_empty': "AnimatedSprite lacks a SpriteFrames resource.", 17 | } 18 | 19 | # Maybe toolhint should display all warning data instead of just current_warning? 20 | var warning_data: PoolStringArray = PoolStringArray([]) 21 | var current_warning: String = '' 22 | 23 | func _enter_tree() -> void: 24 | visible = false 25 | 26 | if !owner.is_connected("warning_issued", self, "_on_warning_issued"): 27 | owner.connect("warning_issued", self, "_on_warning_issued") 28 | if !owner.is_connected("warning_fixed", self, "_on_warning_fixed"): 29 | owner.connect("warning_fixed", self, "_on_warning_fixed") 30 | 31 | # Warning added to the warning_data 32 | func _on_warning_issued(warning_key :String): 33 | if !warning_key in WarningText: 34 | print('[posepal] Warning ',warning_key,' is invalid.') 35 | return 36 | 37 | visible = true 38 | hint_tooltip = WarningText[warning_key] 39 | current_warning = warning_key 40 | if !(warning_key in warning_data): 41 | warning_data.append(warning_key) 42 | 43 | # If a warning is on the warning_data, it will be removed 44 | func _on_warning_fixed(warning_key :String): 45 | # Multiple warning system: If a warning is fixed, it finds the next 46 | if (warning_key in warning_data): 47 | visible = false 48 | hint_tooltip = WarningText[''] 49 | 50 | for i in warning_data.size(): 51 | if warning_data[i] == warning_key: 52 | warning_data.remove(i) 53 | break 54 | 55 | if warning_data.size() > 0: 56 | owner.issue_warning(warning_data[-1]) 57 | elif warning_key == '*': 58 | warning_data = [] 59 | visible = false 60 | -------------------------------------------------------------------------------- /addons/posepal/interface/ExpandableColumn.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends PanelContainer 3 | 4 | signal is_locked_changed (value) 5 | 6 | export var path_to_expandableControl: NodePath = NodePath('.') 7 | export var text: String setget _set_tab_text 8 | export var is_locked: bool = true setget _set_is_locked 9 | export var expand: bool = true setget _set_expand 10 | 11 | var expandableControl: Control 12 | func _set_tab_text(new_text :String): 13 | if new_text == '': 14 | return 15 | if !is_inside_tree(): 16 | if is_instance_valid(self): 17 | yield(self, "tree_entered") 18 | var label: Label = $"HBox/Label" 19 | 20 | text = new_text 21 | label.text = new_text 22 | 23 | func _ready() -> void: 24 | if get_tree().edited_scene_root == self: 25 | return 26 | if get_tree().edited_scene_root == get_parent().owner: 27 | return 28 | 29 | connect("mouse_entered", self, "_on_mouse_entered") 30 | connect("mouse_exited", self, "_on_mouse_exited") 31 | set_process_input(false) 32 | 33 | func _on_mouse_entered(): 34 | set_process_input(true) 35 | 36 | func _on_mouse_exited(): 37 | set_process_input(false) 38 | just_pressed = false 39 | 40 | var just_pressed = false 41 | func _input(event: InputEvent) -> void: 42 | if !event is InputEventMouseButton: 43 | return 44 | var mouseInput :InputEventMouseButton= event 45 | 46 | if mouseInput.button_index == BUTTON_LEFT: 47 | if is_locked: 48 | return 49 | if mouseInput.pressed && !just_pressed: 50 | self.expand = !self.expand 51 | just_pressed = true 52 | elif !mouseInput.pressed && just_pressed: 53 | just_pressed = false 54 | 55 | func _set_expand(new_expand :bool): 56 | expand = new_expand 57 | if !is_inside_tree(): 58 | return 59 | if is_locked: 60 | expand = false 61 | 62 | expandableControl = get_node(path_to_expandableControl) 63 | if is_instance_valid(expandableControl): 64 | if expandableControl == self: 65 | return 66 | if "visible" in expandableControl: 67 | expandableControl.visible = expand 68 | var expandIcon :TextureRect= $HBox/ExpandIcon 69 | expandIcon.flip_v = expand 70 | 71 | func _set_is_locked(new_is_locked: bool): 72 | if is_locked == new_is_locked: 73 | return 74 | 75 | is_locked = new_is_locked 76 | if is_locked: 77 | self.expand = false 78 | visible = false 79 | else: 80 | self.expand = expand 81 | visible = true 82 | emit_signal('is_locked_changed', is_locked) 83 | -------------------------------------------------------------------------------- /addons/posepal/_example_rig_godette/assets/misc/n/SF ebrows 34l.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="SpriteFrames" load_steps=14 format=2] 2 | 3 | [ext_resource path="res://addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/misc serious.png" type="Texture" id=1] 4 | [ext_resource path="res://addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/angry 2.png" type="Texture" id=2] 5 | [ext_resource path="res://addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/misc neutral.png" type="Texture" id=3] 6 | [ext_resource path="res://addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/angry 3.png" type="Texture" id=4] 7 | [ext_resource path="res://addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/angry 1.png" type="Texture" id=5] 8 | [ext_resource path="res://addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/sad 3.png" type="Texture" id=6] 9 | [ext_resource path="res://addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/sad 2.png" type="Texture" id=7] 10 | [ext_resource path="res://addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/misc confused.png" type="Texture" id=8] 11 | [ext_resource path="res://addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/surprised 2.png" type="Texture" id=9] 12 | [ext_resource path="res://addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/surprised 3.png" type="Texture" id=10] 13 | [ext_resource path="res://addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/misc base.png" type="Texture" id=11] 14 | [ext_resource path="res://addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/sad 1.png" type="Texture" id=12] 15 | [ext_resource path="res://addons/posepal/_example_rig_godette/assets/34 left/face/ebrows/surprised 1.png" type="Texture" id=13] 16 | 17 | [resource] 18 | animations = [ { 19 | "frames": [ ExtResource( 11 ), ExtResource( 3 ), ExtResource( 1 ), ExtResource( 8 ) ], 20 | "loop": true, 21 | "name": "default", 22 | "speed": 5.0 23 | }, { 24 | "frames": [ ExtResource( 5 ), ExtResource( 2 ), ExtResource( 4 ) ], 25 | "loop": true, 26 | "name": "angry", 27 | "speed": 5.0 28 | }, { 29 | "frames": [ ExtResource( 12 ), ExtResource( 7 ), ExtResource( 6 ) ], 30 | "loop": true, 31 | "name": "sad", 32 | "speed": 5.0 33 | }, { 34 | "frames": [ ExtResource( 13 ), ExtResource( 9 ), ExtResource( 10 ) ], 35 | "loop": true, 36 | "name": "surprised", 37 | "speed": 5.0 38 | } ] 39 | -------------------------------------------------------------------------------- /addons/posepal/assets/LipsyncImporterTheme.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Theme" load_steps=11 format=2] 2 | 3 | [ext_resource path="res://addons/posepal/assets/JetBrainsMono-Bold.ttf" type="DynamicFontData" id=1] 4 | 5 | [sub_resource type="StyleBoxFlat" id=1] 6 | bg_color = Color( 0.27451, 0.27451, 0.384314, 1 ) 7 | 8 | [sub_resource type="StyleBoxFlat" id=2] 9 | bg_color = Color( 0.117996, 0.117996, 0.144531, 1 ) 10 | border_width_left = 1 11 | border_width_top = 1 12 | border_width_right = 1 13 | border_width_bottom = 1 14 | border_blend = true 15 | 16 | [sub_resource type="StyleBoxFlat" id=3] 17 | bg_color = Color( 0.207843, 0.207843, 0.278431, 1 ) 18 | border_width_left = 2 19 | border_width_top = 2 20 | border_width_right = 2 21 | border_width_bottom = 2 22 | border_color = Color( 1, 1, 1, 1 ) 23 | border_blend = true 24 | corner_detail = 9 25 | 26 | [sub_resource type="StyleBoxFlat" id=4] 27 | bg_color = Color( 0.078732, 0.0785522, 0.101563, 1 ) 28 | border_width_left = 1 29 | border_width_top = 1 30 | border_width_right = 1 31 | border_width_bottom = 1 32 | 33 | [sub_resource type="StyleBoxFlat" id=5] 34 | bg_color = Color( 0.27451, 0.27451, 0.384314, 1 ) 35 | 36 | [sub_resource type="StyleBoxFlat" id=6] 37 | content_margin_left = 10.0 38 | content_margin_right = 10.0 39 | bg_color = Color( 0.172549, 0.164706, 0.196078, 1 ) 40 | 41 | [sub_resource type="StyleBoxFlat" id=7] 42 | content_margin_left = 5.0 43 | content_margin_right = 5.0 44 | bg_color = Color( 0, 0, 0, 1 ) 45 | 46 | [sub_resource type="StyleBoxFlat" id=8] 47 | content_margin_left = 10.0 48 | content_margin_right = 15.0 49 | content_margin_top = 2.0 50 | content_margin_bottom = 2.0 51 | bg_color = Color( 0.27451, 0.27451, 0.384314, 1 ) 52 | expand_margin_top = 3.0 53 | 54 | [sub_resource type="DynamicFont" id=9] 55 | font_data = ExtResource( 1 ) 56 | 57 | [resource] 58 | default_font = SubResource( 9 ) 59 | Button/colors/font_color = Color( 0.0784314, 0.0784314, 0.101961, 1 ) 60 | Button/fonts/font = null 61 | Button/styles/normal = SubResource( 1 ) 62 | Label/fonts/font = null 63 | LineEdit/styles/normal = SubResource( 2 ) 64 | MenuButton/colors/font_color = Color( 0.996078, 0.984314, 0.984314, 1 ) 65 | MenuButton/styles/normal = SubResource( 3 ) 66 | Panel/styles/panel = SubResource( 4 ) 67 | TabContainer/styles/panel = SubResource( 5 ) 68 | TabContainer/styles/tab_bg = SubResource( 6 ) 69 | TabContainer/styles/tab_disabled = SubResource( 7 ) 70 | TabContainer/styles/tab_fg = SubResource( 8 ) 71 | -------------------------------------------------------------------------------- /addons/posepal/filter_edit_popup/FilterEditPopup.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=6 format=2] 2 | 3 | [ext_resource path="res://addons/posepal/interface/Titlebar.tscn" type="PackedScene" id=1] 4 | [ext_resource path="res://addons/posepal/assets/PostuRecordTheme.tres" type="Theme" id=2] 5 | [ext_resource path="res://addons/posepal/interface/NodeVBox.gd" type="Script" id=3] 6 | [ext_resource path="res://addons/posepal/filter_edit_popup/FilterEditPopup.gd" type="Script" id=4] 7 | [ext_resource path="res://addons/posepal/batch_key_popup/SelectAllCheck.gd" type="Script" id=5] 8 | 9 | [node name="FilterEditPopup" type="WindowDialog"] 10 | visible = true 11 | anchor_left = 0.5 12 | anchor_top = 0.5 13 | anchor_right = 0.5 14 | anchor_bottom = 0.5 15 | margin_left = -219.0 16 | margin_top = -313.0 17 | margin_right = 263.0 18 | margin_bottom = 314.0 19 | input_pass_on_modal_close_click = false 20 | theme = ExtResource( 2 ) 21 | resizable = true 22 | script = ExtResource( 4 ) 23 | 24 | [node name="Margin" type="MarginContainer" parent="."] 25 | anchor_right = 1.0 26 | anchor_bottom = 1.0 27 | size_flags_horizontal = 3 28 | size_flags_vertical = 3 29 | 30 | [node name="VBox" type="VBoxContainer" parent="Margin"] 31 | margin_left = 10.0 32 | margin_top = 10.0 33 | margin_right = 472.0 34 | margin_bottom = 617.0 35 | size_flags_horizontal = 3 36 | size_flags_vertical = 3 37 | 38 | [node name="TitleBar" parent="Margin/VBox" instance=ExtResource( 1 )] 39 | margin_right = 462.0 40 | title_name = "Filter Edit Popup" 41 | window_path = NodePath("../../..") 42 | 43 | [node name="SelectAllCheck" type="CheckBox" parent="Margin/VBox"] 44 | margin_top = 28.0 45 | margin_right = 462.0 46 | margin_bottom = 44.0 47 | text = "Select all nodes" 48 | script = ExtResource( 5 ) 49 | nodesVBox_path = NodePath("../Scroll/NodeVBox") 50 | 51 | [node name="Scroll" type="ScrollContainer" parent="Margin/VBox"] 52 | margin_top = 48.0 53 | margin_right = 462.0 54 | margin_bottom = 588.0 55 | size_flags_horizontal = 3 56 | size_flags_vertical = 3 57 | 58 | [node name="NodeVBox" type="VBoxContainer" parent="Margin/VBox/Scroll"] 59 | margin_right = 462.0 60 | margin_bottom = 540.0 61 | size_flags_horizontal = 3 62 | size_flags_vertical = 3 63 | script = ExtResource( 3 ) 64 | 65 | [node name="OkButton" type="Button" parent="Margin/VBox"] 66 | margin_left = 207.0 67 | margin_top = 592.0 68 | margin_right = 255.0 69 | margin_bottom = 607.0 70 | rect_min_size = Vector2( 48, 0 ) 71 | size_flags_horizontal = 4 72 | text = "Ok" 73 | -------------------------------------------------------------------------------- /addons/posepal/nodepath_reference_popup/NodepathPopup.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=6 format=2] 2 | 3 | [ext_resource path="res://addons/posepal/interface/Titlebar.tscn" type="PackedScene" id=1] 4 | [ext_resource path="res://addons/posepal/assets/PostuRecordTheme.tres" type="Theme" id=2] 5 | [ext_resource path="res://addons/posepal/nodepath_reference_popup/NodeVBox.gd" type="Script" id=3] 6 | [ext_resource path="res://addons/posepal/nodepath_reference_popup/NodepathPopup.gd" type="Script" id=4] 7 | [ext_resource path="res://addons/posepal/nodepath_reference_popup/NodeItem.tscn" type="PackedScene" id=5] 8 | 9 | [node name="NodepathPopup" type="WindowDialog"] 10 | visible = true 11 | anchor_left = 0.5 12 | anchor_right = 0.5 13 | anchor_bottom = 1.0 14 | margin_left = -123.88 15 | margin_top = 60.0 16 | margin_right = 8.16797 17 | margin_bottom = -60.0 18 | rect_min_size = Vector2( 248, 152 ) 19 | theme = ExtResource( 2 ) 20 | popup_exclusive = true 21 | resizable = true 22 | script = ExtResource( 4 ) 23 | 24 | [node name="MarginCon" type="MarginContainer" parent="."] 25 | anchor_right = 1.0 26 | anchor_bottom = 1.0 27 | mouse_filter = 2 28 | size_flags_horizontal = 3 29 | size_flags_vertical = 3 30 | custom_constants/margin_right = 20 31 | custom_constants/margin_top = 5 32 | custom_constants/margin_left = 20 33 | custom_constants/margin_bottom = 20 34 | 35 | [node name="VBox" type="VBoxContainer" parent="MarginCon"] 36 | margin_left = 20.0 37 | margin_top = 5.0 38 | margin_right = 228.0 39 | margin_bottom = 460.0 40 | size_flags_horizontal = 3 41 | size_flags_vertical = 3 42 | 43 | [node name="TitleBar" parent="MarginCon/VBox" instance=ExtResource( 1 )] 44 | margin_right = 208.0 45 | margin_bottom = 43.0 46 | title_name = "Select new nodepath" 47 | window_path = NodePath("../../..") 48 | 49 | [node name="ScrollCon" type="ScrollContainer" parent="MarginCon/VBox"] 50 | margin_top = 47.0 51 | margin_right = 208.0 52 | margin_bottom = 436.0 53 | size_flags_horizontal = 3 54 | size_flags_vertical = 3 55 | 56 | [node name="NodeVBox" type="VBoxContainer" parent="MarginCon/VBox/ScrollCon"] 57 | margin_right = 208.0 58 | margin_bottom = 389.0 59 | size_flags_horizontal = 3 60 | size_flags_vertical = 3 61 | script = ExtResource( 3 ) 62 | sceneNodeItem = ExtResource( 5 ) 63 | 64 | [node name="CancelButton" type="Button" parent="MarginCon/VBox"] 65 | margin_left = 82.0 66 | margin_top = 440.0 67 | margin_right = 125.0 68 | margin_bottom = 455.0 69 | size_flags_horizontal = 4 70 | text = "Cancel" 71 | -------------------------------------------------------------------------------- /addons/posepal/interface/NodeVBox.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends VBoxContainer 3 | 4 | signal checked_node (node, child_id, value) 5 | 6 | const SCN_NodeItem: PackedScene = preload("res://addons/posepal/interface/NodeItem.tscn") 7 | 8 | var poseSceneRoot: Node 9 | func _ready() -> void: 10 | if owner == get_tree().edited_scene_root: 11 | return 12 | fill_nodes() 13 | 14 | func clear_tree(): 15 | for child in get_children(): 16 | child.queue_free() 17 | 18 | func fill_nodes(type: String = ''): 19 | clear_tree() 20 | if !is_inside_tree(): 21 | return 22 | if get_tree().edited_scene_root == owner: 23 | return 24 | 25 | var editedSceneRoot = get_tree().edited_scene_root 26 | poseSceneRoot = editedSceneRoot.get_node_or_null(owner.posepalDock.poselib_scene) 27 | if !is_instance_valid(poseSceneRoot): 28 | return 29 | 30 | var _poseSceneRoot: Control = add_node_item(null, poseSceneRoot) 31 | _add_children_items(poseSceneRoot, _poseSceneRoot, 400) 32 | 33 | 34 | func add_node_item(parentItem: Node, node: Node) -> Node: 35 | var nodeItem: HBoxContainer = SCN_NodeItem.instance() 36 | nodeItem.node_name = node.name 37 | nodeItem.node = node 38 | nodeItem.parentItem = parentItem 39 | nodeItem.child_id = get_child_count() 40 | add_child(nodeItem) 41 | nodeItem.node_type = node.get_class() 42 | nodeItem.is_expanded = true 43 | nodeItem.connect("checked_node", self, "_on_checked_node") 44 | 45 | if is_instance_valid(parentItem): 46 | parentItem.childrenItems.resize(parentItem.childrenItems.size()+1) 47 | parentItem.childrenItems[-1] = nodeItem 48 | nodeItem.nesting_level = parentItem.nesting_level+1 49 | return nodeItem 50 | 51 | var _add_children_items_iter: int = 0 52 | func _add_children_items(parent: Node, parentItem: Node, max_iter: int = 0): 53 | if max_iter > 0: 54 | _add_children_items_iter = max_iter 55 | 56 | for child in parent.get_children(): 57 | if _add_children_items_iter == 0: 58 | return 59 | _add_children_items_iter -= 1 60 | 61 | var _child: Node = add_node_item(parentItem, child) 62 | _add_children_items(child, _child, _add_children_items_iter) 63 | 64 | 65 | func _on_checked_node(nodeItem: Control, child_id: int , value: bool): 66 | emit_signal("checked_node", nodeItem.node, child_id, value) 67 | # var node = nodeItem.node 68 | # var propertyBox: VBoxContainer = $"../../PropertyScroll/VBox" 69 | # 70 | # if value: 71 | # propertyBox.insert_propertyDisplay(node, child_id) 72 | # else: 73 | # propertyBox.remove_propertyDisplay(node) 74 | 75 | -------------------------------------------------------------------------------- /addons/posepal/dock/TemplateSelectButton.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends "res://addons/posepal/interface/PropertyMenu.gd" 3 | 4 | const RES_PoseLibrary: GDScript = preload("res://addons/posepal/PoseLibrary.gd") 5 | 6 | var is_being_edited: bool = false setget _set_is_being_edited 7 | 8 | func _on_pressed(): 9 | popup = get_popup() 10 | popup.clear() 11 | popup.rect_min_size = Vector2(rect_size.x, 0) 12 | # popup.rect_size = popup.rect_min_size 13 | popup.set_as_minsize() 14 | 15 | owner.load_poseData() 16 | 17 | var poselib: RES_PoseLibrary = owner.currentPoselib 18 | if !is_instance_valid(poselib): 19 | return 20 | if !poselib.is_references_valid: 21 | return 22 | for collection in poselib.poseData.keys(): 23 | popup.add_item(collection) 24 | popup.set_as_minsize() 25 | 26 | func _on_id_selected(id :int): 27 | var poselib: RES_PoseLibrary = owner.currentPoselib 28 | if poselib.poseData.size() < id: 29 | _reset_selection() 30 | return 31 | text = poselib.poseData.keys()[id] 32 | icon = owner.editorControl.get_icon("Folder", "EditorIcons") 33 | var template: String = poselib.poseData.keys()[id] 34 | owner.set("poselib_template", template) 35 | if poselib.poseData[template].has("default"): 36 | owner.set("poselib_collection", "default") 37 | owner.emit_signal("updated_reference", owner_reference) 38 | 39 | func _on_PoseLibrary_updated_reference(reference :String): 40 | owner.load_poseData() 41 | 42 | var poselib: RES_PoseLibrary = owner.currentPoselib 43 | if !is_instance_valid(poselib): 44 | _reset_selection() 45 | return 46 | if !owner.poselib_template in poselib.poseData.keys(): 47 | _reset_selection() 48 | return 49 | 50 | func _on_issued_forced_selection(): 51 | var poselib: RES_PoseLibrary = owner.currentPoselib 52 | if !is_instance_valid(poselib): 53 | return 54 | if !poselib.poseData.has(owner.poselib_template): 55 | return 56 | if !poselib.templateData.has(owner.poselib_template): 57 | return 58 | text = owner.poselib_template 59 | icon = owner.editorControl.get_icon("Folder", "EditorIcons") 60 | 61 | func _reset_selection(): 62 | text = msg_no_selection 63 | icon = TEX_ExpandIcon 64 | 65 | owner.poselib_template = "" 66 | 67 | func _set_is_being_edited(value: bool): 68 | if value: 69 | text = owner.poselib_template+'(*)' 70 | else: 71 | text = owner.poselib_template 72 | is_being_edited = value 73 | 74 | func _on_poseCreationHBox_pose_editing_canceled(): 75 | self.is_being_edited = false 76 | 77 | func _on_poseCreationHBox_pose_editing_saved(): 78 | self.is_being_edited = false 79 | 80 | -------------------------------------------------------------------------------- /addons/posepal/file_selector_preview/FileIcon.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends VBoxContainer 3 | 4 | signal file_selected (filepath) 5 | signal folder_selected (filepath) 6 | 7 | const TEX_PoseLibIcon: StreamTexture = preload("res://addons/posepal/plugin_icon.png") 8 | 9 | enum TYPE { 10 | file, 11 | folder 12 | } 13 | var my_type :int 14 | var selected :bool= false setget _set_selected 15 | var file_name :String= "icon.png" 16 | 17 | func _ready() -> void: 18 | var preview :TextureButton= $Preview 19 | preview.connect("pressed", self, "_on_Preview_pressed") 20 | 21 | func setup(_file_name: String, _type: int = TYPE.file): 22 | var label: Label = $Label 23 | 24 | file_name = _file_name 25 | label.text = file_name 26 | my_type = _type 27 | # files beginning with . are not extensions 28 | var preview: TextureButton = $Preview 29 | var eCtrl: Control = get_parent().fileSelectorPreview.editorControl 30 | if my_type == TYPE.folder: 31 | preview.texture_normal = get_parent().TEX_IconFolder 32 | return 33 | var file_parts: PoolStringArray = file_name.split('.') 34 | 35 | if file_parts.size() == 3: 36 | if file_parts[1] == 'poselib' and (file_parts[2] == 'tres' or file_parts[2] == 'res'): 37 | preview.texture_normal = TEX_PoseLibIcon 38 | return 39 | 40 | match file_name.get_extension(): 41 | 'png','jpg','jpeg': 42 | preview.texture_normal = load(get_parent().fileSelectorPreview.current_dir+ file_name) 43 | 'gd': 44 | if is_instance_valid(eCtrl): 45 | preview.texture_normal = eCtrl.get_icon("GDScript", "EditorIcons") 46 | 'tscn', 'scn': 47 | if is_instance_valid(eCtrl): 48 | preview.texture_normal = eCtrl.get_icon("PackedScene", "EditorIcons") 49 | 'txt': 50 | if is_instance_valid(eCtrl): 51 | preview.texture_normal = eCtrl.get_icon("RichTextLabel", "EditorIcons") 52 | 'ini', 'cfg': 53 | if is_instance_valid(eCtrl): 54 | preview.texture_normal = eCtrl.get_icon("TextFile", "EditorIcons") 55 | _: 56 | if file_name.get_extension() == "": 57 | return 58 | if is_instance_valid(eCtrl): 59 | preview.texture_normal = eCtrl.get_icon("File", "EditorIcons") 60 | 61 | # if is_instance_valid(eCtrl): 62 | # preview.texture_normal = eCtrl. 63 | 64 | func _set_selected(value :bool): 65 | if selected == value: 66 | return 67 | 68 | if value: 69 | modulate = Color(0.5,0.5,2, 1) 70 | else: 71 | modulate = Color.white 72 | selected = value 73 | 74 | func _on_Preview_pressed(): 75 | if my_type == TYPE.file: 76 | emit_signal("file_selected", file_name) 77 | elif my_type == TYPE.folder: 78 | emit_signal("folder_selected", file_name) 79 | -------------------------------------------------------------------------------- /addons/posepal/dock/FilterSelectButton.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends "res://addons/posepal/interface/PropertyMenu.gd" 3 | 4 | const RES_PoseLibrary: GDScript = preload("res://addons/posepal/PoseLibrary.gd") 5 | 6 | var is_being_edited: bool = false setget _set_is_being_edited 7 | 8 | func _on_pressed(): 9 | popup = get_popup() 10 | popup.clear() 11 | popup.rect_min_size = Vector2(rect_size.x, 0) 12 | # popup.rect_size = popup.rect_min_size 13 | popup.set_as_minsize() 14 | 15 | owner.load_poseData() 16 | 17 | var poselib: RES_PoseLibrary = owner.currentPoselib 18 | if !is_instance_valid(poselib): 19 | return 20 | # if !poselib.is_references_valid: 21 | # return 22 | for node_group in poselib.filterData.keys(): 23 | popup.add_item(node_group) 24 | popup.set_as_minsize() 25 | 26 | func _on_id_selected(id :int): 27 | var poselib: RES_PoseLibrary = owner.currentPoselib 28 | if !is_instance_valid(poselib): 29 | _reset_selection() 30 | return 31 | if poselib.filterData.size() < id: 32 | _reset_selection() 33 | return 34 | text = poselib.filterData.keys()[id] 35 | icon = owner.editorControl.get_icon("Groups", "EditorIcons") 36 | 37 | owner.set("poselib_filter", poselib.filterData.keys()[id]) 38 | owner.emit_signal("updated_reference", owner_reference) 39 | var posePalette :GridContainer= owner.posePalette 40 | posePalette.fill_previews() 41 | 42 | func _on_PoseLibrary_updated_reference(reference :String): 43 | owner.load_poseData() 44 | var poselib: RES_PoseLibrary = owner.currentPoselib 45 | if !is_instance_valid(poselib): 46 | _reset_selection() 47 | return 48 | if !owner.poselib_filter in poselib.filterData.keys(): 49 | _reset_selection() 50 | return 51 | 52 | func _on_issued_forced_selection(): 53 | if !is_instance_valid(owner.currentPoselib): 54 | return 55 | if !owner.currentPoselib.filterData.has(owner.poselib_filter): 56 | return 57 | text = owner.poselib_filter 58 | icon = owner.editorControl.get_icon("Groups", "EditorIcons") 59 | 60 | func _reset_selection(): 61 | text = msg_no_selection 62 | icon = TEX_ExpandIcon 63 | 64 | owner.poselib_filter = "" 65 | 66 | func _set_is_being_edited(value: bool): 67 | if value: 68 | text = owner.poselib_filter + '(*)' 69 | else: 70 | text = owner.poselib_filter 71 | is_being_edited = value 72 | 73 | func _on_poseCreationHBox_pose_editing_canceled(): 74 | self.is_being_edited = false 75 | var poseCreationHBox: HBoxContainer = $"../../../../../../ExtraHBox/PoseCreationHBox" 76 | 77 | func _on_poseCreationHBox_pose_editing_saved(): 78 | self.is_being_edited = false 79 | var poseCreationHBox: HBoxContainer = $"../../../../../../ExtraHBox/PoseCreationHBox" 80 | -------------------------------------------------------------------------------- /addons/posepal/dock/CollectionSelectButton.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends "res://addons/posepal/interface/PropertyMenu.gd" 3 | 4 | const RES_PoseLibrary: GDScript = preload("res://addons/posepal/PoseLibrary.gd") 5 | 6 | func _on_pressed(): 7 | popup = get_popup() 8 | popup.clear() 9 | popup.rect_min_size = Vector2(rect_size.x, 0) 10 | # popup.rect_size = popup.rect_min_size 11 | popup.set_as_minsize() 12 | 13 | owner.load_poseData() 14 | var poselib: RES_PoseLibrary = owner.currentPoselib 15 | if !is_instance_valid(poselib): 16 | return 17 | if !poselib.is_references_valid: 18 | return 19 | if !poselib.poseData.has(owner.poselib_template): 20 | _reset_selection() 21 | return 22 | for collection in poselib.poseData[owner.poselib_template].keys(): 23 | popup.add_item(collection) 24 | popup.set_as_minsize() 25 | 26 | func _on_id_selected(id :int): 27 | var poselib: RES_PoseLibrary = owner.currentPoselib 28 | if poselib.poseData[owner.poselib_template].size() < id: 29 | _reset_selection() 30 | return 31 | text = poselib.poseData[owner.poselib_template].keys()[id] 32 | icon = owner.editorControl.get_icon("Folder", "EditorIcons") 33 | 34 | owner.set("poselib_collection", poselib.poseData[owner.poselib_template].keys()[id]) 35 | owner.emit_signal("updated_reference", owner_reference) 36 | var posePalette :GridContainer= owner.posePalette 37 | 38 | func _on_PoseLibrary_updated_reference(reference :String): 39 | owner.load_poseData() 40 | 41 | if (owner.poselib_scene != '' 42 | && owner.poselib_template != '' 43 | && owner.poselib_collection != ''): 44 | owner.fix_warning('lacking_parameters') 45 | 46 | var poselib: RES_PoseLibrary = owner.currentPoselib 47 | if !is_instance_valid(poselib): 48 | _reset_selection() 49 | return 50 | if !owner.poselib_template in poselib.poseData.keys(): 51 | _reset_selection() 52 | return 53 | if !owner.poselib_collection in poselib.poseData[owner.poselib_template].keys(): 54 | _reset_selection() 55 | return 56 | if reference == "poselib_template": 57 | _reset_selection() 58 | return 59 | 60 | func _reset_selection(): 61 | text = msg_no_selection 62 | icon = TEX_ExpandIcon 63 | 64 | owner.poselib_collection = "" 65 | 66 | func _on_issued_forced_selection(): 67 | var poselib: RES_PoseLibrary = owner.currentPoselib 68 | if !is_instance_valid(poselib): 69 | return 70 | if !poselib.poseData.has(owner.poselib_template): 71 | return 72 | if !poselib.poseData[owner.poselib_template].has(owner.poselib_collection): 73 | return 74 | text = owner.poselib_collection 75 | icon = owner.editorControl.get_icon("Folder", "EditorIcons") 76 | var posePalette: GridContainer= owner.posePalette 77 | posePalette.fill_previews() 78 | --------------------------------------------------------------------------------