Compare commits

..

7 Commits

Author SHA1 Message Date
Colin Basnett
2e2b74edaf Fixed version 2022-01-27 18:46:01 -08:00
Colin Basnett
57d1f78d9e Merge remote-tracking branch 'origin/master'
# Conflicts:
#	README.md
2022-01-27 18:26:24 -08:00
Colin Basnett
6158eb024d Updated version to 1.3.0 2022-01-27 18:24:16 -08:00
Colin Basnett
71622e5ab9 Merge branch 'feature-pskx' 2022-01-27 18:23:44 -08:00
Colin Basnett
4f61d341d4 Update README.md 2022-01-26 01:20:30 -08:00
Colin Basnett
24e606a3fd Revert "Added the ability to prefix imported action names."
This reverts commit 5a13faeb5e.
2022-01-26 01:01:52 -08:00
Colin Basnett
8c0b7f84fc Incremented version to v1.2.1 2022-01-25 22:54:30 -08:00
3 changed files with 14 additions and 18 deletions

View File

@@ -1,4 +1,4 @@
This Blender add-on allows you to import and export meshes and animations to the [PSK and PSA file formats](https://wiki.beyondunreal.com/PSK_%26_PSA_file_formats). In addition, the non-standard PSKX format is also supported for import only. This Blender add-on allows you to import and export meshes and animations to and from the [PSK and PSA file formats](https://wiki.beyondunreal.com/PSK_%26_PSA_file_formats). In addition, the non-standard PSKX format is also supported for import only.
# Installation # Installation
1. Download the zip file for the latest version from the [releases](https://github.com/DarklightGames/io_export_psk_psa/releases) page. 1. Download the zip file for the latest version from the [releases](https://github.com/DarklightGames/io_export_psk_psa/releases) page.
@@ -10,13 +10,13 @@ This Blender add-on allows you to import and export meshes and animations to the
7. Enable the newly added "Import-Export: PSK/PSA Importer/Exporter" addon. 7. Enable the newly added "Import-Export: PSK/PSA Importer/Exporter" addon.
# Usage # Usage
## Exporting a PSK/PSKX ## Exporting a PSK
1. Select the mesh objects you wish to export. 1. Select the mesh objects you wish to export.
3. Navigate to File > Export > Unreal PSK (.psk/.pskx) 3. Navigate to File > Export > Unreal PSK (.psk)
4. Enter the file name and click "Export". 4. Enter the file name and click "Export".
## Importing a PSK ## Importing a PSK/PSKX
1. Navigate to File > Import > Unreal PSK (.psk) 1. Navigate to File > Import > Unreal PSK (.psk/.pskx)
2. Select the PSK file you want to import and click "Import" 2. Select the PSK file you want to import and click "Import"
## Exporting a PSA ## Exporting a PSA

View File

@@ -1,7 +1,7 @@
bl_info = { bl_info = {
"name": "PSK/PSA Importer/Exporter", "name": "PSK/PSA Importer/Exporter",
"author": "Colin Basnett", "author": "Colin Basnett",
"version": (1, 2, 0), "version": (2, 1, 0),
"blender": (2, 80, 0), "blender": (2, 80, 0),
# "location": "File > Export > PSK Export (.psk)", # "location": "File > Export > PSK Export (.psk)",
"description": "PSK/PSA Import/Export (.psk/.psa)", "description": "PSK/PSA Import/Export (.psk/.psa)",

View File

@@ -16,7 +16,6 @@ class PsaImportOptions(object):
self.should_use_fake_user = False self.should_use_fake_user = False
self.should_stash = False self.should_stash = False
self.sequence_names = [] self.sequence_names = []
self.action_name_prefix = ''
class PsaImporter(object): class PsaImporter(object):
@@ -116,8 +115,7 @@ class PsaImporter(object):
actions = [] actions = []
for sequence in sequences: for sequence in sequences:
# Add the action. # Add the action.
action_name = options.action_name_prefix + sequence.name.decode('windows-1252') action = bpy.data.actions.new(name=sequence.name.decode())
action = bpy.data.actions.new(name=action_name)
action.use_fake_user = options.should_use_fake_user action.use_fake_user = options.should_use_fake_user
# Create f-curves for the rotation and location of each bone. # Create f-curves for the rotation and location of each bone.
@@ -244,7 +242,6 @@ class PsaImportPropertyGroup(PropertyGroup):
should_clean_keys: BoolProperty(default=True, name='Clean Keyframes', description='Exclude unnecessary keyframes from being written to the actions.') should_clean_keys: BoolProperty(default=True, name='Clean Keyframes', description='Exclude unnecessary keyframes from being written to the actions.')
should_use_fake_user: BoolProperty(default=True, name='Fake User', description='Assign each imported action a fake user so that the data block is saved even it has no users.') should_use_fake_user: BoolProperty(default=True, name='Fake User', description='Assign each imported action a fake user so that the data block is saved even it has no users.')
should_stash: BoolProperty(default=False, name='Stash', description='Stash each imported action as a strip on a new non-contributing NLA track') should_stash: BoolProperty(default=False, name='Stash', description='Stash each imported action as a strip on a new non-contributing NLA track')
action_name_prefix: StringProperty(default='', name='Action Name Prefix')
class PSA_UL_ImportActionList(UIList): class PSA_UL_ImportActionList(UIList):
@@ -352,13 +349,13 @@ class PSA_PT_ImportPanel(Panel):
row.operator('psa_import.actions_select_all', text='All') row.operator('psa_import.actions_select_all', text='All')
row.operator('psa_import.actions_deselect_all', text='None') row.operator('psa_import.actions_deselect_all', text='None')
col = layout.column(heading="Options") row = layout.row()
col.use_property_split = True row.prop(property_group, 'should_clean_keys')
col.use_property_decorate = False
col.prop(property_group, 'should_clean_keys') # DATA
col.prop(property_group, 'should_use_fake_user') row = layout.row()
col.prop(property_group, 'should_stash') row.prop(property_group, 'should_use_fake_user')
col.prop(property_group, 'action_name_prefix') row.prop(property_group, 'should_stash')
layout.operator('psa_import.import', text=f'Import') layout.operator('psa_import.import', text=f'Import')
@@ -402,7 +399,6 @@ class PsaImportOperator(Operator):
options.should_clean_keys = property_group.should_clean_keys options.should_clean_keys = property_group.should_clean_keys
options.should_use_fake_user = property_group.should_use_fake_user options.should_use_fake_user = property_group.should_use_fake_user
options.should_stash = property_group.should_stash options.should_stash = property_group.should_stash
options.action_name_prefix = property_group.action_name_prefix
PsaImporter().import_psa(psa_reader, context.view_layer.objects.active, options) PsaImporter().import_psa(psa_reader, context.view_layer.objects.active, options)
self.report({'INFO'}, f'Imported {len(sequence_names)} action(s)') self.report({'INFO'}, f'Imported {len(sequence_names)} action(s)')
return {'FINISHED'} return {'FINISHED'}