pgtools 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +25 -25
- data/bin/bxm_decoder +2 -2
- data/bin/bxm_encoder +2 -2
- data/bin/clh_convert +2 -2
- data/bin/clp_convert +2 -2
- data/bin/clw_convert +2 -2
- data/bin/dat_creator +2 -2
- data/bin/dat_extractor +2 -2
- data/bin/dat_ls +2 -2
- data/bin/eff_idd_creator +2 -2
- data/bin/eff_idd_extractor +2 -2
- data/bin/exp_convert_wiiu_pc +2 -2
- data/bin/exp_tool +2 -2
- data/bin/mot_convert_wiiu_pc +2 -2
- data/bin/mot_tool +2 -2
- data/bin/pkz_extractor +2 -2
- data/bin/scr_creator +2 -2
- data/bin/scr_extractor +2 -2
- data/bin/wmb_cleanup +2 -2
- data/bin/wmb_common_bones +2 -2
- data/bin/wmb_convert_pc_switch +2 -2
- data/bin/wmb_convert_wiiu_pc +2 -2
- data/bin/wmb_export_assimp +2 -2
- data/bin/wmb_get_bone_map +2 -2
- data/bin/wmb_import_assimp +2 -2
- data/bin/wmb_import_nier +2 -2
- data/bin/wmb_import_wiiu +2 -2
- data/bin/wtb_convert_wiiu_pc +2 -2
- data/bin/wtx_creator +2 -2
- data/bin/wtx_extractor +2 -2
- data/lib/bayonetta/alignment.rb +0 -0
- data/lib/bayonetta/bone.rb +0 -0
- data/lib/bayonetta/bxm.rb +180 -180
- data/lib/bayonetta/clh.rb +159 -159
- data/lib/bayonetta/clp.rb +212 -212
- data/lib/bayonetta/clw.rb +166 -166
- data/lib/bayonetta/dat.rb +261 -261
- data/lib/bayonetta/eff.rb +314 -314
- data/lib/bayonetta/endianness.rb +0 -0
- data/lib/bayonetta/exp.rb +768 -768
- data/lib/bayonetta/linalg.rb +416 -416
- data/lib/bayonetta/material_database.yaml +2581 -2581
- data/lib/bayonetta/mot.rb +763 -763
- data/lib/bayonetta/pkz.rb +63 -63
- data/lib/bayonetta/scr.rb +0 -0
- data/lib/bayonetta/tools/bxm_decoder.rb +23 -23
- data/lib/bayonetta/tools/bxm_encoder.rb +37 -37
- data/lib/bayonetta/tools/clh_convert.rb +60 -60
- data/lib/bayonetta/tools/clp_convert.rb +70 -70
- data/lib/bayonetta/tools/clw_convert.rb +60 -60
- data/lib/bayonetta/tools/dat_creator.rb +57 -57
- data/lib/bayonetta/tools/dat_extractor.rb +94 -94
- data/lib/bayonetta/tools/dat_ls.rb +106 -106
- data/lib/bayonetta/tools/eff_idd_creator.rb +66 -66
- data/lib/bayonetta/tools/eff_idd_extractor.rb +73 -73
- data/lib/bayonetta/tools/exp_convert_wiiu_pc.rb +33 -33
- data/lib/bayonetta/tools/exp_tool.rb +48 -48
- data/lib/bayonetta/tools/mot_convert_wiiu_pc.rb +33 -33
- data/lib/bayonetta/tools/mot_tool.rb +0 -0
- data/lib/bayonetta/tools/pkz_extractor.rb +75 -75
- data/lib/bayonetta/tools/scr_creator.rb +63 -63
- data/lib/bayonetta/tools/scr_extractor.rb +78 -78
- data/lib/bayonetta/tools/wmb_cleanup.rb +250 -250
- data/lib/bayonetta/tools/wmb_common_bones.rb +45 -45
- data/lib/bayonetta/tools/wmb_convert_pc_switch.rb +35 -35
- data/lib/bayonetta/tools/wmb_convert_wiiu_pc.rb +33 -33
- data/lib/bayonetta/tools/wmb_export_assimp.rb +479 -479
- data/lib/bayonetta/tools/wmb_get_bone_map.rb +50 -50
- data/lib/bayonetta/tools/wmb_import_assimp.rb +735 -735
- data/lib/bayonetta/tools/wmb_import_geometry_wiiu_pc.rb +472 -472
- data/lib/bayonetta/tools/wmb_import_nier.rb +309 -309
- data/lib/bayonetta/tools/wtb_convert_wiiu_pc.rb +95 -95
- data/lib/bayonetta/tools/wtb_import_textures.rb +103 -103
- data/lib/bayonetta/tools/wtx_creator.rb +69 -69
- data/lib/bayonetta/tools/wtx_extractor.rb +85 -85
- data/lib/bayonetta/vertex_types.yaml +0 -0
- data/lib/bayonetta/vertex_types2.yaml +0 -0
- data/lib/bayonetta/vertex_types_nier.yaml +145 -145
- data/lib/bayonetta/wmb.rb +2455 -2443
- data/lib/bayonetta/wmb3.rb +759 -759
- data/lib/bayonetta/wtb.rb +481 -481
- data/lib/bayonetta.rb +60 -60
- metadata +2 -2
data/lib/bayonetta/pkz.rb
CHANGED
@@ -1,63 +1,63 @@
|
|
1
|
-
module Bayonetta
|
2
|
-
|
3
|
-
class PKZFile < LibBin::Structure
|
4
|
-
|
5
|
-
class FileDescriptor < LibBin::Structure
|
6
|
-
uint32 :offset_name
|
7
|
-
uint32 :offset_compression
|
8
|
-
uint64 :size
|
9
|
-
uint64 :offset
|
10
|
-
uint64 :compressed_size
|
11
|
-
string :name, offset: 'offset_name + ..\header.offset_file_descriptors + ..\header.num_files * 0x20'
|
12
|
-
string :compression, offset: 'offset_compression + ..\header.offset_file_descriptors + ..\header.num_files * 0x20'
|
13
|
-
end
|
14
|
-
|
15
|
-
class Header < LibBin::Structure
|
16
|
-
uint32 :id
|
17
|
-
int32 :unknown
|
18
|
-
uint64 :size
|
19
|
-
uint32 :num_files
|
20
|
-
uint32 :offset_file_descriptors
|
21
|
-
uint32 :length_file_name_table
|
22
|
-
uint32 :unknown
|
23
|
-
end
|
24
|
-
|
25
|
-
register_field :header, Header
|
26
|
-
register_field :file_descriptors, FileDescriptor, count: 'header.num_files',
|
27
|
-
offset: 'header.offset_file_descriptors + __iterator * 0x20', sequence: true
|
28
|
-
|
29
|
-
def self.is_big?(f)
|
30
|
-
f.rewind
|
31
|
-
block = lambda { |int64|
|
32
|
-
id = f.read(4)
|
33
|
-
raise "Invalid id #{id.inspect}!" if id != "pkzl".b
|
34
|
-
f.read(4)
|
35
|
-
size = f.read(8).unpack(int64).first
|
36
|
-
size == f.size
|
37
|
-
}
|
38
|
-
big = block.call("q>")
|
39
|
-
f.rewind
|
40
|
-
small = block.call("q<")
|
41
|
-
f.rewind
|
42
|
-
raise "Invalid data!" unless big ^ small
|
43
|
-
return big
|
44
|
-
end
|
45
|
-
|
46
|
-
def self.load(input_name)
|
47
|
-
if input_name.respond_to?(:read) && input_name.respond_to?(:seek)
|
48
|
-
input = input_name
|
49
|
-
else
|
50
|
-
input = File.open(input_name, "rb")
|
51
|
-
end
|
52
|
-
input_big = is_big?(input)
|
53
|
-
pkz = self::new
|
54
|
-
pkz.instance_variable_set(:@__was_big, input_big)
|
55
|
-
pkz.__load(input, input_big)
|
56
|
-
input.close unless input_name.respond_to?(:read) && input_name.respond_to?(:seek)
|
57
|
-
|
58
|
-
pkz
|
59
|
-
end
|
60
|
-
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|
1
|
+
module Bayonetta
|
2
|
+
|
3
|
+
class PKZFile < LibBin::Structure
|
4
|
+
|
5
|
+
class FileDescriptor < LibBin::Structure
|
6
|
+
uint32 :offset_name
|
7
|
+
uint32 :offset_compression
|
8
|
+
uint64 :size
|
9
|
+
uint64 :offset
|
10
|
+
uint64 :compressed_size
|
11
|
+
string :name, offset: 'offset_name + ..\header.offset_file_descriptors + ..\header.num_files * 0x20'
|
12
|
+
string :compression, offset: 'offset_compression + ..\header.offset_file_descriptors + ..\header.num_files * 0x20'
|
13
|
+
end
|
14
|
+
|
15
|
+
class Header < LibBin::Structure
|
16
|
+
uint32 :id
|
17
|
+
int32 :unknown
|
18
|
+
uint64 :size
|
19
|
+
uint32 :num_files
|
20
|
+
uint32 :offset_file_descriptors
|
21
|
+
uint32 :length_file_name_table
|
22
|
+
uint32 :unknown
|
23
|
+
end
|
24
|
+
|
25
|
+
register_field :header, Header
|
26
|
+
register_field :file_descriptors, FileDescriptor, count: 'header.num_files',
|
27
|
+
offset: 'header.offset_file_descriptors + __iterator * 0x20', sequence: true
|
28
|
+
|
29
|
+
def self.is_big?(f)
|
30
|
+
f.rewind
|
31
|
+
block = lambda { |int64|
|
32
|
+
id = f.read(4)
|
33
|
+
raise "Invalid id #{id.inspect}!" if id != "pkzl".b
|
34
|
+
f.read(4)
|
35
|
+
size = f.read(8).unpack(int64).first
|
36
|
+
size == f.size
|
37
|
+
}
|
38
|
+
big = block.call("q>")
|
39
|
+
f.rewind
|
40
|
+
small = block.call("q<")
|
41
|
+
f.rewind
|
42
|
+
raise "Invalid data!" unless big ^ small
|
43
|
+
return big
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.load(input_name)
|
47
|
+
if input_name.respond_to?(:read) && input_name.respond_to?(:seek)
|
48
|
+
input = input_name
|
49
|
+
else
|
50
|
+
input = File.open(input_name, "rb")
|
51
|
+
end
|
52
|
+
input_big = is_big?(input)
|
53
|
+
pkz = self::new
|
54
|
+
pkz.instance_variable_set(:@__was_big, input_big)
|
55
|
+
pkz.__load(input, input_big)
|
56
|
+
input.close unless input_name.respond_to?(:read) && input_name.respond_to?(:seek)
|
57
|
+
|
58
|
+
pkz
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
data/lib/bayonetta/scr.rb
CHANGED
File without changes
|
@@ -1,23 +1,23 @@
|
|
1
|
-
require 'optparse'
|
2
|
-
require_relative '../../bayonetta'
|
3
|
-
include Bayonetta
|
4
|
-
|
5
|
-
OptionParser.new do |opts|
|
6
|
-
opts.banner = <<EOF
|
7
|
-
Usage: bxm_decoder target_file
|
8
|
-
Decode the target bxm file into xml
|
9
|
-
|
10
|
-
EOF
|
11
|
-
opts.on("-h", "--help", "Prints this help") do
|
12
|
-
puts opts
|
13
|
-
exit
|
14
|
-
end
|
15
|
-
|
16
|
-
end.parse!
|
17
|
-
|
18
|
-
input_file = ARGV[0]
|
19
|
-
|
20
|
-
File::open(input_file, "rb") { |f|
|
21
|
-
bxm = BXMFile::load(f)
|
22
|
-
print bxm.to_xml
|
23
|
-
}
|
1
|
+
require 'optparse'
|
2
|
+
require_relative '../../bayonetta'
|
3
|
+
include Bayonetta
|
4
|
+
|
5
|
+
OptionParser.new do |opts|
|
6
|
+
opts.banner = <<EOF
|
7
|
+
Usage: bxm_decoder target_file
|
8
|
+
Decode the target bxm file into xml
|
9
|
+
|
10
|
+
EOF
|
11
|
+
opts.on("-h", "--help", "Prints this help") do
|
12
|
+
puts opts
|
13
|
+
exit
|
14
|
+
end
|
15
|
+
|
16
|
+
end.parse!
|
17
|
+
|
18
|
+
input_file = ARGV[0]
|
19
|
+
|
20
|
+
File::open(input_file, "rb") { |f|
|
21
|
+
bxm = BXMFile::load(f)
|
22
|
+
print bxm.to_xml
|
23
|
+
}
|
@@ -1,37 +1,37 @@
|
|
1
|
-
require 'optparse'
|
2
|
-
require 'nokogiri'
|
3
|
-
require_relative '../../bayonetta'
|
4
|
-
include Bayonetta
|
5
|
-
|
6
|
-
options = {
|
7
|
-
tag: :BXM,
|
8
|
-
output: nil
|
9
|
-
}
|
10
|
-
|
11
|
-
opts = OptionParser.new do |parser|
|
12
|
-
parser.banner = <<EOF
|
13
|
-
Usage: bxm_encoder [options] [XML_FILE]
|
14
|
-
Encode the pecified xml file int binary xml format. Unlessspecified
|
15
|
-
output will be along with the original file with a bxm extension.
|
16
|
-
If no file is given use stdin, but --output must be specified.
|
17
|
-
EOF
|
18
|
-
parser.on("-t", "--tag TAG", [:XML, :BXM], "Select tag to use (BXM, XML) default BXM")
|
19
|
-
parser.on("-o", "--output filename", "Select output file name")
|
20
|
-
end
|
21
|
-
opts.parse!(into: options)
|
22
|
-
|
23
|
-
tag = (options[:tag].to_s + "\0").b
|
24
|
-
|
25
|
-
output_name = options[:output]
|
26
|
-
if ARGV[0]
|
27
|
-
ouput_name = File.join(File.dirname(ARGV[0]), File.basename(ARGV[0], File.extname(ARGV[0])))+".bxm" unless output_name
|
28
|
-
input_file = File::open(ARGV[0], "rb")
|
29
|
-
else
|
30
|
-
raise "unspecified output file" unless output_name
|
31
|
-
input_file = $stdin
|
32
|
-
end
|
33
|
-
|
34
|
-
bxm = BXMFile::from_xml(Nokogiri::XML(input_file.read), tag)
|
35
|
-
bxm.dump(output_name)
|
36
|
-
|
37
|
-
input_file.close if ARGV[0]
|
1
|
+
require 'optparse'
|
2
|
+
require 'nokogiri'
|
3
|
+
require_relative '../../bayonetta'
|
4
|
+
include Bayonetta
|
5
|
+
|
6
|
+
options = {
|
7
|
+
tag: :BXM,
|
8
|
+
output: nil
|
9
|
+
}
|
10
|
+
|
11
|
+
opts = OptionParser.new do |parser|
|
12
|
+
parser.banner = <<EOF
|
13
|
+
Usage: bxm_encoder [options] [XML_FILE]
|
14
|
+
Encode the pecified xml file int binary xml format. Unlessspecified
|
15
|
+
output will be along with the original file with a bxm extension.
|
16
|
+
If no file is given use stdin, but --output must be specified.
|
17
|
+
EOF
|
18
|
+
parser.on("-t", "--tag TAG", [:XML, :BXM], "Select tag to use (BXM, XML) default BXM")
|
19
|
+
parser.on("-o", "--output filename", "Select output file name")
|
20
|
+
end
|
21
|
+
opts.parse!(into: options)
|
22
|
+
|
23
|
+
tag = (options[:tag].to_s + "\0").b
|
24
|
+
|
25
|
+
output_name = options[:output]
|
26
|
+
if ARGV[0]
|
27
|
+
ouput_name = File.join(File.dirname(ARGV[0]), File.basename(ARGV[0], File.extname(ARGV[0])))+".bxm" unless output_name
|
28
|
+
input_file = File::open(ARGV[0], "rb")
|
29
|
+
else
|
30
|
+
raise "unspecified output file" unless output_name
|
31
|
+
input_file = $stdin
|
32
|
+
end
|
33
|
+
|
34
|
+
bxm = BXMFile::from_xml(Nokogiri::XML(input_file.read), tag)
|
35
|
+
bxm.dump(output_name)
|
36
|
+
|
37
|
+
input_file.close if ARGV[0]
|
@@ -1,60 +1,60 @@
|
|
1
|
-
require 'optparse'
|
2
|
-
require_relative '../../bayonetta'
|
3
|
-
require 'yaml'
|
4
|
-
include Bayonetta
|
5
|
-
$bone_map = { }
|
6
|
-
$options = {
|
7
|
-
remap_bones: false,
|
8
|
-
output: nil
|
9
|
-
}
|
10
|
-
OptionParser.new do |opts|
|
11
|
-
opts.banner = <<EOF
|
12
|
-
Usage: clh_convert target_file [options]
|
13
|
-
Convert a Bayonetta 2 _clh.bxm file to bayonetta format, optionally
|
14
|
-
remapping the bones, or remap a Bayonetta 1 clh file. By default
|
15
|
-
output will be in the ./clx_output folder.
|
16
|
-
EOF
|
17
|
-
|
18
|
-
opts.on("-r", "--remap-bones=BONELISTS", "Remap specified bones, either lists separated by / or a yaml hash table") do |bone_lists|
|
19
|
-
$options[:remap_bones] = true
|
20
|
-
if File::exist?(bone_lists)
|
21
|
-
$bone_map.merge! YAML::load_file(bone_lists)
|
22
|
-
else
|
23
|
-
lists = bone_lists.split("/")
|
24
|
-
p input_list = eval(lists.first).to_a
|
25
|
-
p output_list = eval(lists.last).to_a
|
26
|
-
$bone_map.merge! input_list.zip(output_list).to_h
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
opts.on("-o", "--output=filename", "file to output result") do |name|
|
31
|
-
$options[:output] = name
|
32
|
-
end
|
33
|
-
|
34
|
-
opts.on("-h", "--help", "Prints this help") do
|
35
|
-
puts opts
|
36
|
-
exit
|
37
|
-
end
|
38
|
-
|
39
|
-
end.parse!
|
40
|
-
|
41
|
-
$bone_map.merge!( { 4095 => 4095 } )
|
42
|
-
|
43
|
-
Dir.mkdir("clx_output") unless Dir.exist?("clx_output")
|
44
|
-
|
45
|
-
input_file = ARGV[0]
|
46
|
-
raise "Invalid file #{input_file}" unless input_file && File::file?(input_file)
|
47
|
-
|
48
|
-
output_file = $options[:output]
|
49
|
-
|
50
|
-
if File.extname(ARGV[0]) == ".bxm"
|
51
|
-
raise "Invalid clh file #{input_file}" unless File.basename(ARGV[0]).end_with?("_clh.bxm")
|
52
|
-
output_file = File.join("clx_output", File.basename(ARGV[0]).gsub("_clh.bxm",".clh")) unless output_file
|
53
|
-
clh = CLHFile::load_bxm(input_file)
|
54
|
-
else
|
55
|
-
raise "Invalid clh file #{input_file}" unless File.basename(ARGV[0]).end_with?(".clh")
|
56
|
-
output_file = File.join("clx_output", File.basename(ARGV[0])) unless output_file
|
57
|
-
clh = CLHFile::load(input_file)
|
58
|
-
end
|
59
|
-
clh.remap($bone_map) if $options[:remap_bones]
|
60
|
-
clh.dump(output_file)
|
1
|
+
require 'optparse'
|
2
|
+
require_relative '../../bayonetta'
|
3
|
+
require 'yaml'
|
4
|
+
include Bayonetta
|
5
|
+
$bone_map = { }
|
6
|
+
$options = {
|
7
|
+
remap_bones: false,
|
8
|
+
output: nil
|
9
|
+
}
|
10
|
+
OptionParser.new do |opts|
|
11
|
+
opts.banner = <<EOF
|
12
|
+
Usage: clh_convert target_file [options]
|
13
|
+
Convert a Bayonetta 2 _clh.bxm file to bayonetta format, optionally
|
14
|
+
remapping the bones, or remap a Bayonetta 1 clh file. By default
|
15
|
+
output will be in the ./clx_output folder.
|
16
|
+
EOF
|
17
|
+
|
18
|
+
opts.on("-r", "--remap-bones=BONELISTS", "Remap specified bones, either lists separated by / or a yaml hash table") do |bone_lists|
|
19
|
+
$options[:remap_bones] = true
|
20
|
+
if File::exist?(bone_lists)
|
21
|
+
$bone_map.merge! YAML::load_file(bone_lists)
|
22
|
+
else
|
23
|
+
lists = bone_lists.split("/")
|
24
|
+
p input_list = eval(lists.first).to_a
|
25
|
+
p output_list = eval(lists.last).to_a
|
26
|
+
$bone_map.merge! input_list.zip(output_list).to_h
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
opts.on("-o", "--output=filename", "file to output result") do |name|
|
31
|
+
$options[:output] = name
|
32
|
+
end
|
33
|
+
|
34
|
+
opts.on("-h", "--help", "Prints this help") do
|
35
|
+
puts opts
|
36
|
+
exit
|
37
|
+
end
|
38
|
+
|
39
|
+
end.parse!
|
40
|
+
|
41
|
+
$bone_map.merge!( { 4095 => 4095 } )
|
42
|
+
|
43
|
+
Dir.mkdir("clx_output") unless Dir.exist?("clx_output")
|
44
|
+
|
45
|
+
input_file = ARGV[0]
|
46
|
+
raise "Invalid file #{input_file}" unless input_file && File::file?(input_file)
|
47
|
+
|
48
|
+
output_file = $options[:output]
|
49
|
+
|
50
|
+
if File.extname(ARGV[0]) == ".bxm"
|
51
|
+
raise "Invalid clh file #{input_file}" unless File.basename(ARGV[0]).end_with?("_clh.bxm")
|
52
|
+
output_file = File.join("clx_output", File.basename(ARGV[0]).gsub("_clh.bxm",".clh")) unless output_file
|
53
|
+
clh = CLHFile::load_bxm(input_file)
|
54
|
+
else
|
55
|
+
raise "Invalid clh file #{input_file}" unless File.basename(ARGV[0]).end_with?(".clh")
|
56
|
+
output_file = File.join("clx_output", File.basename(ARGV[0])) unless output_file
|
57
|
+
clh = CLHFile::load(input_file)
|
58
|
+
end
|
59
|
+
clh.remap($bone_map) if $options[:remap_bones]
|
60
|
+
clh.dump(output_file)
|
@@ -1,70 +1,70 @@
|
|
1
|
-
require 'optparse'
|
2
|
-
require_relative '../../bayonetta'
|
3
|
-
require 'yaml'
|
4
|
-
include Bayonetta
|
5
|
-
$bone_map = { }
|
6
|
-
$options = {
|
7
|
-
remap_bones: false,
|
8
|
-
fix: true,
|
9
|
-
poly: true,
|
10
|
-
output: nil
|
11
|
-
}
|
12
|
-
OptionParser.new do |opts|
|
13
|
-
opts.banner = <<EOF
|
14
|
-
Usage: clp_convert target_file [options]
|
15
|
-
Convert a Bayonetta 2 _clp.bxm file to bayonetta format, optionally
|
16
|
-
remapping the bones, or remap a Bayonetta 1 clp file. By default
|
17
|
-
output will be in the ./clx_output folder.
|
18
|
-
EOF
|
19
|
-
|
20
|
-
opts.on("-r", "--remap-bones=BONELISTS", "Remap specified bones, either lists separated by / or a yaml hash table") do |bone_lists|
|
21
|
-
$options[:remap_bones] = true
|
22
|
-
if File::exist?(bone_lists)
|
23
|
-
$bone_map.merge! YAML::load_file(bone_lists)
|
24
|
-
else
|
25
|
-
lists = bone_lists.split("/")
|
26
|
-
p input_list = eval(lists.first).to_a
|
27
|
-
p output_list = eval(lists.last).to_a
|
28
|
-
$bone_map.merge! input_list.zip(output_list).to_h
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
opts.on("-f", "--[no-]fix", "Map no_fix values (default true)") do |fix|
|
33
|
-
$options[:fix] = fix
|
34
|
-
end
|
35
|
-
|
36
|
-
opts.on("-p", "--[no-]poly", "Map no_poly values (default true)") do |poly|
|
37
|
-
$options[:poly] = poly
|
38
|
-
end
|
39
|
-
|
40
|
-
opts.on("-o", "--output=filename", "file to output result") do |name|
|
41
|
-
$options[:output] = name
|
42
|
-
end
|
43
|
-
|
44
|
-
opts.on("-h", "--help", "Prints this help") do
|
45
|
-
puts opts
|
46
|
-
exit
|
47
|
-
end
|
48
|
-
|
49
|
-
end.parse!
|
50
|
-
|
51
|
-
$bone_map.merge!( { 4095 => 4095 } )
|
52
|
-
|
53
|
-
Dir.mkdir("clx_output") unless Dir.exist?("clx_output")
|
54
|
-
|
55
|
-
input_file = ARGV[0]
|
56
|
-
raise "Invalid file #{input_file}" unless input_file && File::file?(input_file)
|
57
|
-
|
58
|
-
output_file = $options[:output]
|
59
|
-
|
60
|
-
if File.extname(ARGV[0]) == ".bxm"
|
61
|
-
raise "Invalid clp file #{input_file}" unless File.basename(ARGV[0]).end_with?("_clp.bxm")
|
62
|
-
output_file = File.join("clx_output", File.basename(ARGV[0]).gsub("_clp.bxm",".clp")) unless output_file
|
63
|
-
clp = CLPFile::load_bxm(input_file)
|
64
|
-
else
|
65
|
-
raise "Invalid clp file #{input_file}" unless File.basename(ARGV[0]).end_with?(".clp")
|
66
|
-
output_file = File.join("clx_output", File.basename(ARGV[0])) unless output_file
|
67
|
-
clp = CLPFile::load(input_file)
|
68
|
-
end
|
69
|
-
clp.remap($bone_map, $options[:poly], $options[:fix]) if $options[:remap_bones]
|
70
|
-
clp.dump(output_file)
|
1
|
+
require 'optparse'
|
2
|
+
require_relative '../../bayonetta'
|
3
|
+
require 'yaml'
|
4
|
+
include Bayonetta
|
5
|
+
$bone_map = { }
|
6
|
+
$options = {
|
7
|
+
remap_bones: false,
|
8
|
+
fix: true,
|
9
|
+
poly: true,
|
10
|
+
output: nil
|
11
|
+
}
|
12
|
+
OptionParser.new do |opts|
|
13
|
+
opts.banner = <<EOF
|
14
|
+
Usage: clp_convert target_file [options]
|
15
|
+
Convert a Bayonetta 2 _clp.bxm file to bayonetta format, optionally
|
16
|
+
remapping the bones, or remap a Bayonetta 1 clp file. By default
|
17
|
+
output will be in the ./clx_output folder.
|
18
|
+
EOF
|
19
|
+
|
20
|
+
opts.on("-r", "--remap-bones=BONELISTS", "Remap specified bones, either lists separated by / or a yaml hash table") do |bone_lists|
|
21
|
+
$options[:remap_bones] = true
|
22
|
+
if File::exist?(bone_lists)
|
23
|
+
$bone_map.merge! YAML::load_file(bone_lists)
|
24
|
+
else
|
25
|
+
lists = bone_lists.split("/")
|
26
|
+
p input_list = eval(lists.first).to_a
|
27
|
+
p output_list = eval(lists.last).to_a
|
28
|
+
$bone_map.merge! input_list.zip(output_list).to_h
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
opts.on("-f", "--[no-]fix", "Map no_fix values (default true)") do |fix|
|
33
|
+
$options[:fix] = fix
|
34
|
+
end
|
35
|
+
|
36
|
+
opts.on("-p", "--[no-]poly", "Map no_poly values (default true)") do |poly|
|
37
|
+
$options[:poly] = poly
|
38
|
+
end
|
39
|
+
|
40
|
+
opts.on("-o", "--output=filename", "file to output result") do |name|
|
41
|
+
$options[:output] = name
|
42
|
+
end
|
43
|
+
|
44
|
+
opts.on("-h", "--help", "Prints this help") do
|
45
|
+
puts opts
|
46
|
+
exit
|
47
|
+
end
|
48
|
+
|
49
|
+
end.parse!
|
50
|
+
|
51
|
+
$bone_map.merge!( { 4095 => 4095 } )
|
52
|
+
|
53
|
+
Dir.mkdir("clx_output") unless Dir.exist?("clx_output")
|
54
|
+
|
55
|
+
input_file = ARGV[0]
|
56
|
+
raise "Invalid file #{input_file}" unless input_file && File::file?(input_file)
|
57
|
+
|
58
|
+
output_file = $options[:output]
|
59
|
+
|
60
|
+
if File.extname(ARGV[0]) == ".bxm"
|
61
|
+
raise "Invalid clp file #{input_file}" unless File.basename(ARGV[0]).end_with?("_clp.bxm")
|
62
|
+
output_file = File.join("clx_output", File.basename(ARGV[0]).gsub("_clp.bxm",".clp")) unless output_file
|
63
|
+
clp = CLPFile::load_bxm(input_file)
|
64
|
+
else
|
65
|
+
raise "Invalid clp file #{input_file}" unless File.basename(ARGV[0]).end_with?(".clp")
|
66
|
+
output_file = File.join("clx_output", File.basename(ARGV[0])) unless output_file
|
67
|
+
clp = CLPFile::load(input_file)
|
68
|
+
end
|
69
|
+
clp.remap($bone_map, $options[:poly], $options[:fix]) if $options[:remap_bones]
|
70
|
+
clp.dump(output_file)
|
@@ -1,60 +1,60 @@
|
|
1
|
-
require 'optparse'
|
2
|
-
require_relative '../../bayonetta'
|
3
|
-
require 'yaml'
|
4
|
-
include Bayonetta
|
5
|
-
$bone_map = { }
|
6
|
-
$options = {
|
7
|
-
remap_bones: false,
|
8
|
-
output: nil
|
9
|
-
}
|
10
|
-
OptionParser.new do |opts|
|
11
|
-
opts.banner = <<EOF
|
12
|
-
Usage: clw_convert target_file [options]
|
13
|
-
Convert a Bayonetta 2 _clw.bxm file to bayonetta format, optionally
|
14
|
-
remapping the bones, or remap a Bayonetta 1 clw file. By default
|
15
|
-
output will be in the ./clx_output folder.
|
16
|
-
EOF
|
17
|
-
|
18
|
-
opts.on("-r", "--remap-bones=BONELISTS", "Remap specified bones, either lists separated by / or a yaml hash table") do |bone_lists|
|
19
|
-
$options[:remap_bones] = true
|
20
|
-
if File::exist?(bone_lists)
|
21
|
-
$bone_map.merge! YAML::load_file(bone_lists)
|
22
|
-
else
|
23
|
-
lists = bone_lists.split("/")
|
24
|
-
p input_list = eval(lists.first).to_a
|
25
|
-
p output_list = eval(lists.last).to_a
|
26
|
-
$bone_map.merge! input_list.zip(output_list).to_h
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
opts.on("-o", "--output=filename", "file to output result") do |name|
|
31
|
-
$options[:output] = name
|
32
|
-
end
|
33
|
-
|
34
|
-
opts.on("-h", "--help", "Prints this help") do
|
35
|
-
puts opts
|
36
|
-
exit
|
37
|
-
end
|
38
|
-
|
39
|
-
end.parse!
|
40
|
-
|
41
|
-
$bone_map.merge!( { -1 => -1 } )
|
42
|
-
|
43
|
-
Dir.mkdir("clx_output") unless Dir.exist?("clx_output")
|
44
|
-
|
45
|
-
input_file = ARGV[0]
|
46
|
-
raise "Invalid file #{input_file}" unless input_file && File::file?(input_file)
|
47
|
-
|
48
|
-
output_file = $options[:output]
|
49
|
-
|
50
|
-
if File.extname(ARGV[0]) == ".bxm"
|
51
|
-
raise "Invalid clw file #{input_file}" unless File.basename(ARGV[0]).end_with?("_clw.bxm")
|
52
|
-
output_file = File.join("clx_output", File.basename(ARGV[0]).gsub("_clw.bxm",".clw")) unless output_file
|
53
|
-
clw = CLWFile::load_bxm(input_file)
|
54
|
-
else
|
55
|
-
raise "Invalid clw file #{input_file}" unless File.basename(ARGV[0]).end_with?(".clw")
|
56
|
-
output_file = File.join("clx_output", File.basename(ARGV[0])) unless output_file
|
57
|
-
clw = CLWFile::load(input_file)
|
58
|
-
end
|
59
|
-
clw.remap($bone_map) if $options[:remap_bones]
|
60
|
-
clw.dump(output_file)
|
1
|
+
require 'optparse'
|
2
|
+
require_relative '../../bayonetta'
|
3
|
+
require 'yaml'
|
4
|
+
include Bayonetta
|
5
|
+
$bone_map = { }
|
6
|
+
$options = {
|
7
|
+
remap_bones: false,
|
8
|
+
output: nil
|
9
|
+
}
|
10
|
+
OptionParser.new do |opts|
|
11
|
+
opts.banner = <<EOF
|
12
|
+
Usage: clw_convert target_file [options]
|
13
|
+
Convert a Bayonetta 2 _clw.bxm file to bayonetta format, optionally
|
14
|
+
remapping the bones, or remap a Bayonetta 1 clw file. By default
|
15
|
+
output will be in the ./clx_output folder.
|
16
|
+
EOF
|
17
|
+
|
18
|
+
opts.on("-r", "--remap-bones=BONELISTS", "Remap specified bones, either lists separated by / or a yaml hash table") do |bone_lists|
|
19
|
+
$options[:remap_bones] = true
|
20
|
+
if File::exist?(bone_lists)
|
21
|
+
$bone_map.merge! YAML::load_file(bone_lists)
|
22
|
+
else
|
23
|
+
lists = bone_lists.split("/")
|
24
|
+
p input_list = eval(lists.first).to_a
|
25
|
+
p output_list = eval(lists.last).to_a
|
26
|
+
$bone_map.merge! input_list.zip(output_list).to_h
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
opts.on("-o", "--output=filename", "file to output result") do |name|
|
31
|
+
$options[:output] = name
|
32
|
+
end
|
33
|
+
|
34
|
+
opts.on("-h", "--help", "Prints this help") do
|
35
|
+
puts opts
|
36
|
+
exit
|
37
|
+
end
|
38
|
+
|
39
|
+
end.parse!
|
40
|
+
|
41
|
+
$bone_map.merge!( { -1 => -1 } )
|
42
|
+
|
43
|
+
Dir.mkdir("clx_output") unless Dir.exist?("clx_output")
|
44
|
+
|
45
|
+
input_file = ARGV[0]
|
46
|
+
raise "Invalid file #{input_file}" unless input_file && File::file?(input_file)
|
47
|
+
|
48
|
+
output_file = $options[:output]
|
49
|
+
|
50
|
+
if File.extname(ARGV[0]) == ".bxm"
|
51
|
+
raise "Invalid clw file #{input_file}" unless File.basename(ARGV[0]).end_with?("_clw.bxm")
|
52
|
+
output_file = File.join("clx_output", File.basename(ARGV[0]).gsub("_clw.bxm",".clw")) unless output_file
|
53
|
+
clw = CLWFile::load_bxm(input_file)
|
54
|
+
else
|
55
|
+
raise "Invalid clw file #{input_file}" unless File.basename(ARGV[0]).end_with?(".clw")
|
56
|
+
output_file = File.join("clx_output", File.basename(ARGV[0])) unless output_file
|
57
|
+
clw = CLWFile::load(input_file)
|
58
|
+
end
|
59
|
+
clw.remap($bone_map) if $options[:remap_bones]
|
60
|
+
clw.dump(output_file)
|