summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/content_tools/anim_tool.py1
-rw-r--r--scripts/content_tools/skel_tool.py17
2 files changed, 18 insertions, 0 deletions
diff --git a/scripts/content_tools/anim_tool.py b/scripts/content_tools/anim_tool.py
index 205fc2b6e1..4a0773951e 100644
--- a/scripts/content_tools/anim_tool.py
+++ b/scripts/content_tools/anim_tool.py
@@ -611,6 +611,7 @@ def main(*argv):
parser = argparse.ArgumentParser(description="process SL animations")
parser.add_argument("--verbose", help="verbose flag", action="store_true")
parser.add_argument("--dump", help="dump to stdout", action="store_true")
+ parser.add_argument("--use_aliases", help="use alias names for bones", action="store_true")
parser.add_argument("--rot", help="specify sequence of rotations", type=float_triple, nargs="+")
parser.add_argument("--rand_pos", help="request NUM random positions (default %(default)s)",
metavar="NUM", type=int, default=2)
diff --git a/scripts/content_tools/skel_tool.py b/scripts/content_tools/skel_tool.py
index 449ecd6a6c..696e4e2923 100644
--- a/scripts/content_tools/skel_tool.py
+++ b/scripts/content_tools/skel_tool.py
@@ -72,6 +72,22 @@ def check_symmetry(name, field, vec1, vec2):
if vec1[2] != vec2[2]:
print(name,field,"z match fail")
+def enforce_alias_rules(tree, element, fix=False):
+ if element.tag != "bone":
+ return
+ alias_lis = []
+ aliases = element.get("aliases")
+ if aliases:
+ alias_lis = aliases.split(" ")
+ name = element.get("name")
+ if name:
+ std_alias = "avatar_" + name
+ if not std_alias in alias_lis:
+ print "missing expected alias",name,std_alias
+ for alias in alias_lis:
+ if alias.startswith("avatar_") and alias != std_alias:
+ print "invalid avatar_ alias",name,alias
+
def enforce_symmetry(tree, element, field, fix=False):
name = element.get("name")
if not name:
@@ -209,6 +225,7 @@ def validate_skel_tree(tree, ogtree, reftree, fix=False):
unfixable += 1
fix_name(element)
+ enforce_alias_rules(tree, element, fix)
enforce_precision_rules(element)
for field in ["pos","pivot"]:
enforce_symmetry(tree, element, field, fix)