-
Notifications
You must be signed in to change notification settings - Fork 120
BSLagBoneController support #529
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -40,7 +40,7 @@ | |
| from io_scene_niftools.modules.nif_export import types | ||
| from io_scene_niftools.modules.nif_export.animation.transform import TransformAnimation | ||
| from io_scene_niftools.modules.nif_export.block_registry import block_store | ||
| from io_scene_niftools.utils import math | ||
| from io_scene_niftools.utils import math, consts | ||
|
|
||
|
|
||
| class Armature: | ||
|
|
@@ -83,6 +83,9 @@ def export_bone(self, b_obj, b_bone, n_parent_node, n_root_node): | |
| for b_child in b_bone.children: | ||
| self.export_bone(b_obj, b_child, n_node, n_root_node) | ||
|
|
||
| if b_bone.niftools.BSLagBoneController: | ||
| self.export_BSLagBoneController(b_bone, n_node) | ||
|
|
||
| def export_bone_flags(self, b_bone, n_node): | ||
| """Exports or sets the flags according to the custom data in b_bone or the game version if none was set""" | ||
| if b_bone.niftools.flags != 0: | ||
|
|
@@ -110,4 +113,26 @@ def export_bone_flags(self, b_bone, n_node): | |
| # default for Div 2 final bones | ||
| n_node.flags = 0x0196 | ||
| else: | ||
| n_node.flags = 0x0002 # default for Morrowind bones | ||
| n_node.flags = 0x0002 # default for Morrowind bones | ||
|
|
||
| def export_BSLagBoneController(self, b_bone, n_node): | ||
| """Exports a BSLagBoneController for the bone""" | ||
|
|
||
| #BSLagBoneControllers are only for skyrim and later, afaik | ||
| game = bpy.context.scene.niftools_scene.game | ||
| if game not in ('SKYRIM'): | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This could now be changed to |
||
| return | ||
|
|
||
| n_controller = block_store.create_block("BSLagBoneController") | ||
| n_controller.name = block_store.get_full_name(b_bone) | ||
| #This should be active and cycle, what I've seen in game. | ||
| n_controller.flags = b_bone.niftools.BSLagBoneController_flags #0x0048? hexa? | ||
| n_controller.frequency = 1.0 | ||
| n_controller.phase = 0.0 | ||
| n_controller.start_time = consts.FLOAT_MIN | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Are you sure these two aren't reversed? Both in the xml and the (admittedly single) BSLagBoneController I checked start_time is FLOAT_MAX and stop_time is FLOAT_MIN. |
||
| n_controller.stop_time = consts.FLOAT_MAX | ||
| n_controller.linear_velocity = b_bone.niftools.BSLagBoneController_linear_velocity | ||
| n_controller.linear_rotation = b_bone.niftools.BSLagBoneController_linear_rotation | ||
| n_controller.maximum_distance = b_bone.niftools.BSLagBoneController_maximum_distance | ||
| #add controller to _this_ block | ||
| n_node.add_controller(n_controller) | ||
Uh oh!
There was an error while loading. Please reload this page.