mikunyan 3.9.9 → 3.9.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2207eb1a77b5a2c28a4ebdbb2163242172cc575757d8446248b9ae164c7f4aa4
4
- data.tar.gz: e4862fa9b8ddaf540d553df70762949b5a855eaed8fb7846a20e577bedc6173d
3
+ metadata.gz: 307573d81cdf56b190cc886ee41d6f529a163dedd5821d8d0b752f13757f6bc1
4
+ data.tar.gz: 37e833380ead2464767773f06b31a72e4f53ea956d69d0b300a13e06f2b93b47
5
5
  SHA512:
6
- metadata.gz: 0f5cbeff36bb5f68744d2c1cd4040357a6f7385b9f638bccb9e450f58a834579f9da2e8adbed5a76892d3e1faf92f329a365f50c65f7edb8f962a40b5edbf310
7
- data.tar.gz: 5ef09def6fe7e6f0ad947a241db625b6db89c1b79c2f7e73b8c0b11c13bad20a1a8263074ae4c7453837a2e4eec9e1911c58b3a135292a587dabcf362ff3b099
6
+ metadata.gz: 87d9749eebdedb468b7ef6d370775b7769a12b7930b4d3feddea462ef3a2a6611ad9417f5d11cb70e7fc5c2ef8174a967a6a3d480d6171685a4f33fc652ff63f
7
+ data.tar.gz: 9044ea58c2270b85c067ea3b80f9f737ae5d156c71284d7049125f511b389c52e0c10b67917add739fc6fce721a56cc790a5791988e64e1bf70da3e313ac684f
data/.rubocop.yml ADDED
@@ -0,0 +1,42 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.6
3
+
4
+ Metrics/AbcSize:
5
+ Max: 170
6
+
7
+ Metrics/BlockLength:
8
+ Max: 250
9
+
10
+ Metrics/ClassLength:
11
+ Max: 1000
12
+
13
+ Metrics/CyclomaticComplexity:
14
+ Max: 70
15
+
16
+ Metrics/MethodLength:
17
+ Max: 100
18
+
19
+ Metrics/ModuleLength:
20
+ Max: 1000
21
+
22
+ Metrics/ParameterLists:
23
+ Max: 50
24
+
25
+ Metrics/PerceivedComplexity:
26
+ Max: 80
27
+
28
+ Layout/SpaceInsideBlockBraces:
29
+ EnforcedStyle: no_space
30
+ SpaceBeforeBlockParameters: false
31
+
32
+ Style/Documentation:
33
+ Enabled: false
34
+
35
+ Style/NumericPredicate:
36
+ EnforcedStyle: comparison
37
+
38
+ Style/MultilineBlockChain:
39
+ Enabled: false
40
+
41
+ Style/SpecialGlobalVars:
42
+ EnforcedStyle: use_perl_names
data/README.md CHANGED
@@ -244,7 +244,8 @@ Available options:
244
244
 
245
245
  - [json](https://rubygems.org/gems/json)
246
246
  - [extlz4](https://rubygems.org/gems/extlz4)
247
- - [extlzma](https://rubygems.org/gems/extlzma)
247
+ - [extlzma2](https://rubygems.org/gems/extlzma2)
248
+ - extlzma2 requires liblzma. You may need a `--with-liblzma-dir=` argument to install extlzma2.
248
249
  - [bin_utils](https://rubygems.org/gems/bin_utils)
249
250
  - [chunky_png](https://rubygems.org/gems/chunky_png)
250
251
 
data/Rakefile CHANGED
@@ -13,10 +13,10 @@ ext_dirs = %w[decoders/native decoders/crunch]
13
13
 
14
14
  ext_dirs.each do |dir|
15
15
  Rake::ExtensionTask.new(dir) do |ext|
16
- ext.lib_dir = 'lib/mikunyan'
16
+ ext.lib_dir = "lib/mikunyan/#{File.dirname(dir)}"
17
17
  end
18
18
  end
19
19
 
20
- task compile: ext_dirs.map{|e| "compile:#{e}".to_sym}
20
+ task compile: ext_dirs.map {|e| "compile:#{e}".to_sym}
21
21
 
22
22
  task default: %i[clobber compile spec]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'mkmf'
2
4
 
3
5
  have_library('stdc++')
@@ -6,4 +8,5 @@ append_cppflags('-O2')
6
8
  append_cppflags('-Wall')
7
9
  append_cppflags('-Wextra')
8
10
  append_cppflags('-Wvla')
11
+
9
12
  create_makefile('mikunyan/decoders/crunch')
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'mkmf'
2
4
 
3
5
  append_cppflags('-std=c11')
@@ -5,4 +7,5 @@ append_cppflags('-O2')
5
7
  append_cppflags('-Wall')
6
8
  append_cppflags('-Wextra')
7
9
  append_cppflags('-Wvla')
10
+
8
11
  create_makefile('mikunyan/decoders/native')
@@ -120,8 +120,10 @@ module Mikunyan
120
120
  def containers
121
121
  obj = @path_id_table[1]
122
122
  return nil unless obj.klass&.type_tree&.tree&.type == 'AssetBundle'
123
+
123
124
  parse_object(obj).m_Container.value.map do |e|
124
- ContainerInfo.new(e.first.value, e.second.preloadIndex.value, e.second.preloadSize.value, e.second.asset.m_FileID.value, e.second.asset.m_PathID.value)
125
+ ContainerInfo.new(e.first.value, e.second.preloadIndex.value, e.second.preloadSize.value,
126
+ e.second.asset.m_FileID.value, e.second.asset.m_PathID.value)
125
127
  end
126
128
  end
127
129
 
@@ -129,8 +131,9 @@ module Mikunyan
129
131
  # @param [Integer,ObjectEntry] obj path ID or object
130
132
  # @return [Mikunyan::BaseObject,nil] parsed object
131
133
  def parse_object(obj)
132
- obj = @path_id_table[obj] if obj.class == Integer
134
+ obj = @path_id_table[obj] if obj.instance_of?(Integer)
133
135
  return nil unless obj.klass&.type_tree
136
+
134
137
  value_klass = Mikunyan::CustomTypes.get_custom_type(obj.klass.type_tree.tree.type, obj.class_id)
135
138
  ret = parse_object_private(BinaryReader.new(obj.data, @endian), obj.klass.type_tree.tree, value_klass)
136
139
  ret.object_entry = obj
@@ -148,7 +151,7 @@ module Mikunyan
148
151
  # @param [Integer,ObjectEntry] obj path ID or object
149
152
  # @return [String,nil] type name
150
153
  def object_type(obj)
151
- obj = @path_id_table[obj] if obj.class == Integer
154
+ obj = @path_id_table[obj] if obj.instance_of?(Integer)
152
155
  obj&.type
153
156
  end
154
157
 
@@ -226,7 +229,7 @@ module Mikunyan
226
229
  end
227
230
  end
228
231
 
229
- @path_id_table = @objects.map{|e| [e.path_id, e]}.to_h
232
+ @path_id_table = @objects.map {|e| [e.path_id, e]}.to_h
230
233
 
231
234
  if @format >= 11
232
235
  add_id_count = br.i32u
@@ -238,7 +241,8 @@ module Mikunyan
238
241
 
239
242
  reference_count = br.i32u
240
243
  @references = Array.new(reference_count) do
241
- Reference.new(@format >= 6 ? br.cstr : nil, @format >= 5 ? br.read(16) : nil, @format >= 5 ? br.i32s : nil, br.cstr)
244
+ Reference.new(@format >= 6 ? br.cstr : nil, @format >= 5 ? br.read(16) : nil, @format >= 5 ? br.i32s : nil,
245
+ br.cstr)
242
246
  end
243
247
 
244
248
  @comment = br.cstr if @format >= 5
@@ -247,7 +251,11 @@ module Mikunyan
247
251
  @objects.each do |e|
248
252
  br.jmp(data_offset + e.offset)
249
253
  e.data = br.read(e.size)
250
- e.klass = e.class_idx ? @klasses[e.class_idx] : @klasses.find{|e2| e2.class_id == e.class_id} || @klasses.find{|e2| e2.class_id == e.type_id}
254
+ e.klass = if e.class_idx
255
+ @klasses[e.class_idx]
256
+ else
257
+ @klasses.find {|e2| e2.class_id == e.class_id} || @klasses.find {|e2| e2.class_id == e.type_id}
258
+ end
251
259
  end
252
260
  end
253
261
 
@@ -290,6 +298,7 @@ module Mikunyan
290
298
  elsif node.array?
291
299
  children.each do |child|
292
300
  next ret[child.name] = parse_object_private(br, child) unless child.name == 'data'
301
+
293
302
  size = ret['size']&.value || raise('`size` node must appear before `data` node in array node')
294
303
  ret.value =
295
304
  if child.children.empty? && (!child.need_align? || br.pos % 4 == 0 && child.size % 4 == 0)
@@ -300,7 +309,7 @@ module Mikunyan
300
309
  br.read(size * child.size).force_encoding('utf-8')
301
310
  end
302
311
  end
303
- ret.value ||= Array.new(size){parse_object_private(br, child)}
312
+ ret.value ||= Array.new(size) {parse_object_private(br, child)}
304
313
  ret['data'] = ret.value
305
314
  end
306
315
  elsif children.size == 1 && children[0].array? && children[0].type == 'Array' && children[0].name == 'Array'
@@ -308,7 +317,7 @@ module Mikunyan
308
317
  ret.name = node.name
309
318
  ret.type = node.type
310
319
  else
311
- ret.attr = children.map{|c| [c.name, parse_object_private(br, c)]}.to_h
320
+ ret.attr = children.map {|c| [c.name, parse_object_private(br, c)]}.to_h
312
321
  if node.type == 'StreamingInfo'
313
322
  ret.value = get_stream_blob(ret['path'].value, ret['offset'].value, ret['size'].value)
314
323
  else
@@ -322,6 +331,7 @@ module Mikunyan
322
331
  def get_stream_blob(path, offset, size)
323
332
  return nil unless path && @bundle
324
333
  return nil if path.empty?
334
+
325
335
  path["archive:/#{@name}/"] = '' if path.start_with?("archive:/#{@name}/")
326
336
  @bundle.blobs[path]&.byteslice(offset, size)
327
337
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'extlz4'
4
- require 'extlzma'
4
+ require 'extlzma2'
5
5
  require 'mikunyan/asset'
6
6
  require 'mikunyan/binary_reader'
7
7
 
@@ -21,7 +21,7 @@ module Mikunyan
21
21
  # @param [String,Integer] index
22
22
  # @return [Mikunyan::Asset,nil]
23
23
  def [](index)
24
- index.is_a?(String) ? @assets.find{|e| e.name == index} : @assets[index]
24
+ index.is_a?(String) ? @assets.find {|e| e.name == index} : @assets[index]
25
25
  end
26
26
 
27
27
  # Same as assets.each
@@ -94,7 +94,8 @@ module Mikunyan
94
94
 
95
95
  br.align(16) if @format >= 7
96
96
 
97
- head = BinaryReader.new(uncompress(flags & 0x80 == 0 ? br.read(ci_block_size) : br.read_abs(ci_block_size, file_size - ci_block_size), ui_block_size, flags))
97
+ head_bin = flags & 0x80 == 0 ? br.read(ci_block_size) : br.read_abs(ci_block_size, file_size - ci_block_size)
98
+ head = BinaryReader.new(uncompress(head_bin, ui_block_size, flags))
98
99
  @guid = head.read(16)
99
100
 
100
101
  block_count = head.i32u
@@ -116,7 +117,7 @@ module Mikunyan
116
117
  end
117
118
 
118
119
  def process_asset_entries(asset_entries)
119
- @blobs = asset_entries.select(&:blob?).map{|e| [e.name, e.data]}.to_h
120
+ @blobs = asset_entries.select(&:blob?).map {|e| [e.name, e.data]}.to_h
120
121
  @assets = asset_entries.reject(&:blob?).map do |e|
121
122
  Asset.load(e.data, e.name, self)
122
123
  end
@@ -56,6 +56,7 @@ module Mikunyan
56
56
  def read(size)
57
57
  ret = @io.read(size)
58
58
  raise EOFError if ret.nil? || size && ret.bytesize < size
59
+
59
60
  ret
60
61
  end
61
62
 
@@ -75,6 +76,7 @@ module Mikunyan
75
76
  # @return [String] string
76
77
  def cstr
77
78
  raise EOFError if @io.eof?
79
+
78
80
  @io.each_byte.take_while(&:nonzero?).pack('C*')
79
81
  end
80
82
 
@@ -416,91 +416,91 @@ module Mikunyan
416
416
  [1126, 'PackedAssets'],
417
417
  [1127, 'VideoClipImporter'],
418
418
  [2000, 'ActivationLogComponent'],
419
- [100000, 'int'],
420
- [100001, 'bool'],
421
- [100002, 'float'],
422
- [100003, 'MonoObject'],
423
- [100004, 'Collision'],
424
- [100005, 'Vector3f'],
425
- [100006, 'RootMotionData'],
426
- [100007, 'Collision2D'],
427
- [100008, 'AudioMixerLiveUpdateFloat'],
428
- [100009, 'AudioMixerLiveUpdateBool'],
429
- [100010, 'Polygon2D'],
430
- [100011, 'void'],
431
- [19719996, 'TilemapCollider2D'],
432
- [41386430, 'AssetImporterLog'],
433
- [73398921, 'VFXRenderer'],
434
- [76251197, 'SerializableManagedRefTestClass'],
435
- [156049354, 'Grid'],
436
- [181963792, 'Preset'],
437
- [277625683, 'EmptyObject'],
438
- [285090594, 'IConstraint'],
439
- [293259124, 'TestObjectWithSpecialLayoutOne'],
440
- [294290339, 'AssemblyDefinitionReferenceImporter'],
441
- [334799969, 'SiblingDerived'],
442
- [342846651, 'TestObjectWithSerializedMapStringNonAlignedStruct'],
443
- [367388927, 'SubDerived'],
444
- [369655926, 'AssetImportInProgressProxy'],
445
- [382020655, 'PluginBuildInfo'],
446
- [426301858, 'EditorProjectAccess'],
447
- [468431735, 'PrefabImporter'],
448
- [478637458, 'TestObjectWithSerializedArray'],
449
- [478637459, 'TestObjectWithSerializedAnimationCurve'],
450
- [483693784, 'TilemapRenderer'],
451
- [638013454, 'SpriteAtlasDatabase'],
452
- [641289076, 'AudioBuildInfo'],
453
- [644342135, 'CachedSpriteAtlasRuntimeData'],
454
- [646504946, 'RendererFake'],
455
- [662584278, 'AssemblyDefinitionReferenceAsset'],
456
- [668709126, 'BuiltAssetBundleInfoSet'],
457
- [687078895, 'SpriteAtlas'],
458
- [877146078, 'PlatformModuleSetup'],
459
- [895512359, 'AimConstraint'],
460
- [937362698, 'VFXManager'],
461
- [994735392, 'VisualEffectSubgraph'],
462
- [994735403, 'VisualEffectSubgraphOperator'],
463
- [994735404, 'VisualEffectSubgraphBlock'],
464
- [1001480554, 'Prefab'],
465
- [1027052791, 'LocalizationImporter'],
466
- [1091556383, 'Derived'],
467
- [1111377672, 'PropertyModificationsTargetTestObject'],
468
- [1114811875, 'ReferencesArtifactGenerator'],
469
- [1152215463, 'AssemblyDefinitionAsset'],
470
- [1154873562, 'SceneVisibilityState'],
471
- [1183024399, 'LookAtConstraint'],
472
- [1223240404, 'MultiArtifactTestImporter'],
473
- [1268269756, 'GameObjectRecorder'],
474
- [1325145578, 'LightingDataAssetParent'],
475
- [1386491679, 'PresetManager'],
476
- [1392443030, 'TestObjectWithSpecialLayoutTwo'],
477
- [1403656975, 'StreamingManager'],
478
- [1480428607, 'LowerResBlitTexture'],
479
- [1542919678, 'StreamingController'],
480
- [1571458007, 'RenderPassAttachment'],
481
- [1628831178, 'TestObjectVectorPairStringBool'],
482
- [1742807556, 'GridLayout'],
483
- [1766753193, 'AssemblyDefinitionImporter'],
484
- [1773428102, 'ParentConstraint'],
485
- [1803986026, 'FakeComponent'],
486
- [1818360608, 'PositionConstraint'],
487
- [1818360609, 'RotationConstraint'],
488
- [1818360610, 'ScaleConstraint'],
489
- [1839735485, 'Tilemap'],
490
- [1896753125, 'PackageManifest'],
491
- [1896753126, 'PackageManifestImporter'],
492
- [1953259897, 'TerrainLayer'],
493
- [1971053207, 'SpriteShapeRenderer'],
494
- [1977754360, 'NativeObjectType'],
495
- [1981279845, 'TestObjectWithSerializedMapStringBool'],
496
- [1995898324, 'SerializableManagedHost'],
497
- [2058629509, 'VisualEffectAsset'],
498
- [2058629510, 'VisualEffectImporter'],
499
- [2058629511, 'VisualEffectResource'],
500
- [2059678085, 'VisualEffectObject'],
501
- [2083052967, 'VisualEffect'],
502
- [2083778819, 'LocalizationAsset'],
503
- [2089858483, 'ScriptedImporter']
419
+ [100_000, 'int'],
420
+ [100_001, 'bool'],
421
+ [100_002, 'float'],
422
+ [100_003, 'MonoObject'],
423
+ [100_004, 'Collision'],
424
+ [100_005, 'Vector3f'],
425
+ [100_006, 'RootMotionData'],
426
+ [100_007, 'Collision2D'],
427
+ [100_008, 'AudioMixerLiveUpdateFloat'],
428
+ [100_009, 'AudioMixerLiveUpdateBool'],
429
+ [100_010, 'Polygon2D'],
430
+ [100_011, 'void'],
431
+ [19_719_996, 'TilemapCollider2D'],
432
+ [41_386_430, 'AssetImporterLog'],
433
+ [73_398_921, 'VFXRenderer'],
434
+ [76_251_197, 'SerializableManagedRefTestClass'],
435
+ [156_049_354, 'Grid'],
436
+ [181_963_792, 'Preset'],
437
+ [277_625_683, 'EmptyObject'],
438
+ [285_090_594, 'IConstraint'],
439
+ [293_259_124, 'TestObjectWithSpecialLayoutOne'],
440
+ [294_290_339, 'AssemblyDefinitionReferenceImporter'],
441
+ [334_799_969, 'SiblingDerived'],
442
+ [342_846_651, 'TestObjectWithSerializedMapStringNonAlignedStruct'],
443
+ [367_388_927, 'SubDerived'],
444
+ [369_655_926, 'AssetImportInProgressProxy'],
445
+ [382_020_655, 'PluginBuildInfo'],
446
+ [426_301_858, 'EditorProjectAccess'],
447
+ [468_431_735, 'PrefabImporter'],
448
+ [478_637_458, 'TestObjectWithSerializedArray'],
449
+ [478_637_459, 'TestObjectWithSerializedAnimationCurve'],
450
+ [483_693_784, 'TilemapRenderer'],
451
+ [638_013_454, 'SpriteAtlasDatabase'],
452
+ [641_289_076, 'AudioBuildInfo'],
453
+ [644_342_135, 'CachedSpriteAtlasRuntimeData'],
454
+ [646_504_946, 'RendererFake'],
455
+ [662_584_278, 'AssemblyDefinitionReferenceAsset'],
456
+ [668_709_126, 'BuiltAssetBundleInfoSet'],
457
+ [687_078_895, 'SpriteAtlas'],
458
+ [877_146_078, 'PlatformModuleSetup'],
459
+ [895_512_359, 'AimConstraint'],
460
+ [937_362_698, 'VFXManager'],
461
+ [994_735_392, 'VisualEffectSubgraph'],
462
+ [994_735_403, 'VisualEffectSubgraphOperator'],
463
+ [994_735_404, 'VisualEffectSubgraphBlock'],
464
+ [1_001_480_554, 'Prefab'],
465
+ [1_027_052_791, 'LocalizationImporter'],
466
+ [1_091_556_383, 'Derived'],
467
+ [1_111_377_672, 'PropertyModificationsTargetTestObject'],
468
+ [1_114_811_875, 'ReferencesArtifactGenerator'],
469
+ [1_152_215_463, 'AssemblyDefinitionAsset'],
470
+ [1_154_873_562, 'SceneVisibilityState'],
471
+ [1_183_024_399, 'LookAtConstraint'],
472
+ [1_223_240_404, 'MultiArtifactTestImporter'],
473
+ [1_268_269_756, 'GameObjectRecorder'],
474
+ [1_325_145_578, 'LightingDataAssetParent'],
475
+ [1_386_491_679, 'PresetManager'],
476
+ [1_392_443_030, 'TestObjectWithSpecialLayoutTwo'],
477
+ [1_403_656_975, 'StreamingManager'],
478
+ [1_480_428_607, 'LowerResBlitTexture'],
479
+ [1_542_919_678, 'StreamingController'],
480
+ [1_571_458_007, 'RenderPassAttachment'],
481
+ [1_628_831_178, 'TestObjectVectorPairStringBool'],
482
+ [1_742_807_556, 'GridLayout'],
483
+ [1_766_753_193, 'AssemblyDefinitionImporter'],
484
+ [1_773_428_102, 'ParentConstraint'],
485
+ [1_803_986_026, 'FakeComponent'],
486
+ [1_818_360_608, 'PositionConstraint'],
487
+ [1_818_360_609, 'RotationConstraint'],
488
+ [1_818_360_610, 'ScaleConstraint'],
489
+ [1_839_735_485, 'Tilemap'],
490
+ [1_896_753_125, 'PackageManifest'],
491
+ [1_896_753_126, 'PackageManifestImporter'],
492
+ [1_953_259_897, 'TerrainLayer'],
493
+ [1_971_053_207, 'SpriteShapeRenderer'],
494
+ [1_977_754_360, 'NativeObjectType'],
495
+ [1_981_279_845, 'TestObjectWithSerializedMapStringBool'],
496
+ [1_995_898_324, 'SerializableManagedHost'],
497
+ [2_058_629_509, 'VisualEffectAsset'],
498
+ [2_058_629_510, 'VisualEffectImporter'],
499
+ [2_058_629_511, 'VisualEffectResource'],
500
+ [2_059_678_085, 'VisualEffectObject'],
501
+ [2_083_052_967, 'VisualEffect'],
502
+ [2_083_778_819, 'LocalizationAsset'],
503
+ [2_089_858_483, 'ScriptedImporter']
504
504
  ]
505
505
 
506
506
  CLASS_ID2NAME = CLASS_ID_TABLE.to_h.freeze
@@ -187,7 +187,8 @@ module Mikunyan
187
187
  # @param [Symbol] endian endianness of binary
188
188
  # @return [ChunkyPNG::Image] decoded image
189
189
  def self.decode_rgb565(width, height, bin, endian = :big)
190
- ChunkyPNG::Image.from_rgb_stream(width, height, DecodeHelper.decode_rgb565(bin, width * height, endian == :big)).flip
190
+ ChunkyPNG::Image.from_rgb_stream(width, height,
191
+ DecodeHelper.decode_rgb565(bin, width * height, endian == :big)).flip
191
192
  end
192
193
 
193
194
  # Decode image from R16 binary
@@ -197,7 +198,8 @@ module Mikunyan
197
198
  # @param [Symbol] endian endianness of binary
198
199
  # @return [ChunkyPNG::Image] decoded image
199
200
  def self.decode_r16(width, height, bin, endian = :big)
200
- ChunkyPNG::Image.from_rgb_stream(width, height, DecodeHelper.decode_r16(bin, width * height, endian == :big)).flip
201
+ ChunkyPNG::Image.from_rgb_stream(width, height,
202
+ DecodeHelper.decode_r16(bin, width * height, endian == :big)).flip
201
203
  end
202
204
 
203
205
  # Decode image from RGBA4444 binary
@@ -270,7 +272,8 @@ module Mikunyan
270
272
  # @param [Symbol] endian endianness of binary
271
273
  # @return [ChunkyPNG::Image] decoded image
272
274
  def self.decode_rhalf(width, height, bin, endian = :big)
273
- ChunkyPNG::Image.from_rgb_stream(width, height, DecodeHelper.decode_rhalf(bin, width * height, endian == :big)).flip
275
+ ChunkyPNG::Image.from_rgb_stream(width, height,
276
+ DecodeHelper.decode_rhalf(bin, width * height, endian == :big)).flip
274
277
  end
275
278
 
276
279
  # Decode image from RG Half-float binary
@@ -280,7 +283,8 @@ module Mikunyan
280
283
  # @param [Symbol] endian endianness of binary
281
284
  # @return [ChunkyPNG::Image] decoded image
282
285
  def self.decode_rghalf(width, height, bin, endian = :big)
283
- ChunkyPNG::Image.from_rgb_stream(width, height, DecodeHelper.decode_rghalf(bin, width * height, endian == :big)).flip
286
+ ChunkyPNG::Image.from_rgb_stream(width, height,
287
+ DecodeHelper.decode_rghalf(bin, width * height, endian == :big)).flip
284
288
  end
285
289
 
286
290
  # Decode image from RGBA Half-float binary
@@ -290,7 +294,8 @@ module Mikunyan
290
294
  # @param [Symbol] endian endianness of binary
291
295
  # @return [ChunkyPNG::Image] decoded image
292
296
  def self.decode_rgbahalf(width, height, bin, endian = :big)
293
- ChunkyPNG::Image.from_rgba_stream(width, height, DecodeHelper.decode_rgbahalf(bin, width * height, endian == :big)).flip
297
+ ChunkyPNG::Image.from_rgba_stream(width, height,
298
+ DecodeHelper.decode_rgbahalf(bin, width * height, endian == :big)).flip
294
299
  end
295
300
 
296
301
  # Decode image from R float binary
@@ -366,7 +371,8 @@ module Mikunyan
366
371
  # @param [Integer] bpp bit per pixel (2 or 4)
367
372
  # @return [ChunkyPNG::Image] decoded image
368
373
  def self.decode_pvrtc1(width, height, bin, bpp)
369
- raise 'bpp of PVRTC1 must be 2 or 4' unless bpp == 2 || bpp == 4
374
+ raise 'bpp of PVRTC1 must be 2 or 4' unless [2, 4].include?(bpp)
375
+
370
376
  ChunkyPNG::Image.from_rgba_stream(width, height, DecodeHelper.decode_pvrtc1(bin, width, height, bpp == 2))
371
377
  end
372
378
 
@@ -449,7 +455,8 @@ module Mikunyan
449
455
  # @param [String] bin binary to decode
450
456
  # @return [ChunkyPNG::Image] decoded image
451
457
  def self.decode_astc(width, height, blocksize, bin)
452
- ChunkyPNG::Image.from_rgba_stream(width, height, DecodeHelper.decode_astc(bin, width, height, blocksize, blocksize))
458
+ ChunkyPNG::Image.from_rgba_stream(width, height,
459
+ DecodeHelper.decode_astc(bin, width, height, blocksize, blocksize))
453
460
  end
454
461
 
455
462
  # Decode image from crunched texture binary
@@ -488,8 +495,10 @@ module Mikunyan
488
495
  fmt = object['m_TextureFormat']&.value
489
496
  bin = object['image data']&.value
490
497
  return unless width && height && fmt && bin && astc_list[fmt]
498
+
491
499
  bin = object['m_StreamData']&.value if bin.empty?
492
500
  return unless bin
501
+
493
502
  header = [0x13, 0xab, 0xa1, 0x5c, astc_list[fmt], astc_list[fmt], 1].pack('C*')
494
503
  header << [width].pack('V').byteslice(0, 3)
495
504
  header << [height].pack('V').byteslice(0, 3)
@@ -500,6 +509,7 @@ module Mikunyan
500
509
  # [0.0,1.0] -> [0,255]
501
510
  def self.f2i(val)
502
511
  return 0 unless val.finite?
512
+
503
513
  (val * 255).round.clamp(0, 255)
504
514
  end
505
515
  end
@@ -95,11 +95,11 @@ module Mikunyan
95
95
  if @type == 'pair'
96
96
  [@attr['first'].simplify, @attr['second'].simplify]
97
97
  elsif @type == 'map' && @value.is_a?(Array)
98
- @value.map{|e| [e['first'].simplify, e['second'].simplify]}.to_h
98
+ @value.map {|e| [e['first'].simplify, e['second'].simplify]}.to_h
99
99
  elsif is_struct
100
- @attr.map{|key, val| [key, val.simplify]}.to_h
100
+ @attr.transform_values(&:simplify)
101
101
  elsif @value.is_a?(Array)
102
- @value.map{|e| e.is_a?(ObjectValue) ? e.simplify : e}
102
+ @value.map {|e| e.is_a?(ObjectValue) ? e.simplify : e}
103
103
  elsif @value.is_a?(ObjectValue)
104
104
  @value.simplify
105
105
  else
@@ -20,7 +20,8 @@ module Mikunyan
20
20
  # @attr [Integer,nil] v18meta
21
21
  # @attr [Mikunyan::TypeTree::Node,nil] parent ̑
22
22
  # @attr [Array<Mikunyan::TypeTree::Node>] children
23
- Node = Struct.new(:version, :level, :array?, :type, :name, :size, :index, :flags, :v18meta, :parent, :children, keyword_init: true) do
23
+ Node = Struct.new(:version, :level, :array?, :type, :name, :size, :index, :flags, :v18meta, :parent, :children,
24
+ keyword_init: true) do
24
25
  def need_align?
25
26
  flags & 0x4000 != 0
26
27
  end
@@ -119,6 +120,7 @@ module Mikunyan
119
120
  def self.load_default(class_id, hash)
120
121
  file = File.expand_path("../typetrees/#{class_id}/#{hash.unpack1('H*')}.json", __FILE__)
121
122
  return nil unless File.file?(file)
123
+
122
124
  TypeTree.deserialize(JSON.parse(File.read(file)))
123
125
  end
124
126
 
@@ -0,0 +1 @@
1
+ {"nodes":[{"version":12,"level":0,"is_array":false,"type":"LightmapSettings","name":"Base","size":-1,"flags":32768,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"EnlightenSceneMapping","name":"m_EnlightenSceneMapping","size":-1,"flags":32768,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"vector","name":"m_Renderers","size":-1,"flags":32768,"v18meta":0},{"version":1,"level":3,"is_array":true,"type":"Array","name":"Array","size":-1,"flags":16384,"v18meta":0},{"version":1,"level":4,"is_array":false,"type":"int","name":"size","size":4,"flags":0,"v18meta":0},{"version":1,"level":4,"is_array":false,"type":"EnlightenRendererInformation","name":"data","size":48,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"PPtr<Object>","name":"renderer","size":12,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"int","name":"m_FileID","size":4,"flags":8388609,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"SInt64","name":"m_PathID","size":8,"flags":8388609,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"Vector4f","name":"dynamicLightmapSTInSystem","size":16,"flags":2097152,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"float","name":"x","size":4,"flags":2097152,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"float","name":"y","size":4,"flags":2097152,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"float","name":"z","size":4,"flags":2097152,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"float","name":"w","size":4,"flags":2097152,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"int","name":"systemId","size":4,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"Hash128","name":"instanceHash","size":16,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[0]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[1]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[2]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[3]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[4]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[5]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[6]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[7]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[8]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[9]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[10]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[11]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[12]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[13]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[14]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[15]","size":1,"flags":0,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"vector","name":"m_Systems","size":-1,"flags":32768,"v18meta":0},{"version":1,"level":3,"is_array":true,"type":"Array","name":"Array","size":-1,"flags":16384,"v18meta":0},{"version":1,"level":4,"is_array":false,"type":"int","name":"size","size":4,"flags":0,"v18meta":0},{"version":1,"level":4,"is_array":false,"type":"EnlightenSystemInformation","name":"data","size":52,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"unsigned int","name":"rendererIndex","size":4,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"unsigned int","name":"rendererSize","size":4,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"int","name":"atlasIndex","size":4,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"int","name":"atlasOffsetX","size":4,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"int","name":"atlasOffsetY","size":4,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"Hash128","name":"inputSystemHash","size":16,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[0]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[1]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[2]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[3]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[4]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[5]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[6]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[7]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[8]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[9]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[10]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[11]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[12]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[13]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[14]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[15]","size":1,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"Hash128","name":"radiositySystemHash","size":16,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[0]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[1]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[2]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[3]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[4]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[5]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[6]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[7]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[8]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[9]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[10]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[11]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[12]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[13]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[14]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[15]","size":1,"flags":0,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"vector","name":"m_Probesets","size":-1,"flags":32768,"v18meta":0},{"version":1,"level":3,"is_array":true,"type":"Array","name":"Array","size":-1,"flags":16384,"v18meta":0},{"version":1,"level":4,"is_array":false,"type":"int","name":"size","size":4,"flags":0,"v18meta":0},{"version":1,"level":4,"is_array":false,"type":"Hash128","name":"data","size":16,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"UInt8","name":"bytes[0]","size":1,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"UInt8","name":"bytes[1]","size":1,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"UInt8","name":"bytes[2]","size":1,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"UInt8","name":"bytes[3]","size":1,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"UInt8","name":"bytes[4]","size":1,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"UInt8","name":"bytes[5]","size":1,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"UInt8","name":"bytes[6]","size":1,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"UInt8","name":"bytes[7]","size":1,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"UInt8","name":"bytes[8]","size":1,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"UInt8","name":"bytes[9]","size":1,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"UInt8","name":"bytes[10]","size":1,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"UInt8","name":"bytes[11]","size":1,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"UInt8","name":"bytes[12]","size":1,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"UInt8","name":"bytes[13]","size":1,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"UInt8","name":"bytes[14]","size":1,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"UInt8","name":"bytes[15]","size":1,"flags":0,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"vector","name":"m_SystemAtlases","size":-1,"flags":32768,"v18meta":0},{"version":1,"level":3,"is_array":true,"type":"Array","name":"Array","size":-1,"flags":16384,"v18meta":0},{"version":1,"level":4,"is_array":false,"type":"int","name":"size","size":4,"flags":0,"v18meta":0},{"version":1,"level":4,"is_array":false,"type":"EnlightenSystemAtlasInformation","name":"data","size":24,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"int","name":"atlasSize","size":4,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"Hash128","name":"atlasHash","size":16,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[0]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[1]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[2]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[3]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[4]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[5]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[6]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[7]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[8]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[9]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[10]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[11]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[12]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[13]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[14]","size":1,"flags":0,"v18meta":0},{"version":1,"level":6,"is_array":false,"type":"UInt8","name":"bytes[15]","size":1,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"int","name":"firstSystemId","size":4,"flags":0,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"vector","name":"m_TerrainChunks","size":-1,"flags":32768,"v18meta":0},{"version":1,"level":3,"is_array":true,"type":"Array","name":"Array","size":-1,"flags":16384,"v18meta":0},{"version":1,"level":4,"is_array":false,"type":"int","name":"size","size":4,"flags":0,"v18meta":0},{"version":1,"level":4,"is_array":false,"type":"EnlightenTerrainChunksInformation","name":"data","size":12,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"int","name":"firstSystemId","size":4,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"int","name":"numChunksInX","size":4,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"int","name":"numChunksInY","size":4,"flags":0,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"PPtr<LightProbes>","name":"m_LightProbes","size":12,"flags":0,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"int","name":"m_FileID","size":4,"flags":8388609,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"SInt64","name":"m_PathID","size":8,"flags":8388609,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"vector","name":"m_Lightmaps","size":-1,"flags":32768,"v18meta":0},{"version":1,"level":2,"is_array":true,"type":"Array","name":"Array","size":-1,"flags":16384,"v18meta":0},{"version":1,"level":3,"is_array":false,"type":"int","name":"size","size":4,"flags":0,"v18meta":0},{"version":2,"level":3,"is_array":false,"type":"LightmapData","name":"data","size":36,"flags":0,"v18meta":0},{"version":1,"level":4,"is_array":false,"type":"PPtr<Texture2D>","name":"m_Lightmap","size":12,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"int","name":"m_FileID","size":4,"flags":8388609,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"SInt64","name":"m_PathID","size":8,"flags":8388609,"v18meta":0},{"version":1,"level":4,"is_array":false,"type":"PPtr<Texture2D>","name":"m_DirLightmap","size":12,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"int","name":"m_FileID","size":4,"flags":8388609,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"SInt64","name":"m_PathID","size":8,"flags":8388609,"v18meta":0},{"version":1,"level":4,"is_array":false,"type":"PPtr<Texture2D>","name":"m_ShadowMask","size":12,"flags":0,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"int","name":"m_FileID","size":4,"flags":8388609,"v18meta":0},{"version":1,"level":5,"is_array":false,"type":"SInt64","name":"m_PathID","size":8,"flags":8388609,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"int","name":"m_LightmapsMode","size":4,"flags":16384,"v18meta":0},{"version":2,"level":1,"is_array":false,"type":"GISettings","name":"m_GISettings","size":18,"flags":49152,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"float","name":"m_BounceScale","size":4,"flags":0,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"float","name":"m_IndirectOutputScale","size":4,"flags":0,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"float","name":"m_AlbedoBoost","size":4,"flags":0,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"unsigned int","name":"m_EnvironmentLightingMode","size":4,"flags":0,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"bool","name":"m_EnableBakedLightmaps","size":1,"flags":0,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"bool","name":"m_EnableRealtimeLightmaps","size":1,"flags":16384,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"PPtr<LightingSettings>","name":"m_LightingSettings","size":12,"flags":0,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"int","name":"m_FileID","size":4,"flags":8388609,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"SInt64","name":"m_PathID","size":8,"flags":8388609,"v18meta":0}]}
@@ -0,0 +1 @@
1
+ {"nodes":[{"version":2,"level":0,"is_array":false,"type":"NavMeshSettings","name":"Base","size":12,"flags":0,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"PPtr<NavMeshData>","name":"m_NavMeshData","size":12,"flags":0,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"int","name":"m_FileID","size":4,"flags":8388609,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"SInt64","name":"m_PathID","size":8,"flags":8388609,"v18meta":0}]}
@@ -0,0 +1 @@
1
+ {"nodes":[{"version":3,"level":0,"is_array":false,"type":"LightingSettings","name":"Base","size":-1,"flags":32768,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"string","name":"m_Name","size":-1,"flags":557057,"v18meta":0},{"version":1,"level":2,"is_array":true,"type":"Array","name":"Array","size":-1,"flags":540673,"v18meta":0},{"version":1,"level":3,"is_array":false,"type":"int","name":"size","size":4,"flags":524289,"v18meta":0},{"version":1,"level":3,"is_array":false,"type":"char","name":"data","size":1,"flags":524289,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"int","name":"m_GIWorkflowMode","size":4,"flags":0,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"bool","name":"m_EnableBakedLightmaps","size":1,"flags":0,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"bool","name":"m_EnableRealtimeLightmaps","size":1,"flags":0,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"bool","name":"m_RealtimeEnvironmentLighting","size":1,"flags":16384,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"float","name":"m_BounceScale","size":4,"flags":0,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"float","name":"m_AlbedoBoost","size":4,"flags":0,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"float","name":"m_IndirectOutputScale","size":4,"flags":0,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"bool","name":"m_UsingShadowmask","size":1,"flags":16384,"v18meta":0}]}
@@ -0,0 +1 @@
1
+ {"nodes":[{"version":2,"level":0,"is_array":false,"type":"Cubemap","name":"Base","size":-1,"flags":32768,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"string","name":"m_Name","size":-1,"flags":557057,"v18meta":0},{"version":1,"level":2,"is_array":true,"type":"Array","name":"Array","size":-1,"flags":540673,"v18meta":0},{"version":1,"level":3,"is_array":false,"type":"int","name":"size","size":4,"flags":524289,"v18meta":0},{"version":1,"level":3,"is_array":false,"type":"char","name":"data","size":1,"flags":524289,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"int","name":"m_ForcedFallbackFormat","size":4,"flags":0,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"bool","name":"m_DownscaleFallback","size":1,"flags":0,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"bool","name":"m_IsAlphaChannelOptional","size":1,"flags":16384,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"int","name":"m_Width","size":4,"flags":16,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"int","name":"m_Height","size":4,"flags":16,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"unsigned int","name":"m_CompleteImageSize","size":4,"flags":16,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"int","name":"m_MipsStripped","size":4,"flags":16,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"int","name":"m_TextureFormat","size":4,"flags":1,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"int","name":"m_MipCount","size":4,"flags":16,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"bool","name":"m_IsReadable","size":1,"flags":0,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"bool","name":"m_IsPreProcessed","size":1,"flags":1,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"bool","name":"m_IgnoreMasterTextureLimit","size":1,"flags":0,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"bool","name":"m_StreamingMipmaps","size":1,"flags":16384,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"int","name":"m_StreamingMipmapsPriority","size":4,"flags":16384,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"int","name":"m_ImageCount","size":4,"flags":16,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"int","name":"m_TextureDimension","size":4,"flags":1,"v18meta":0},{"version":2,"level":1,"is_array":false,"type":"GLTextureSettings","name":"m_TextureSettings","size":24,"flags":0,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"int","name":"m_FilterMode","size":4,"flags":0,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"int","name":"m_Aniso","size":4,"flags":0,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"float","name":"m_MipBias","size":4,"flags":0,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"int","name":"m_WrapU","size":4,"flags":0,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"int","name":"m_WrapV","size":4,"flags":0,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"int","name":"m_WrapW","size":4,"flags":0,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"int","name":"m_LightmapFormat","size":4,"flags":0,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"int","name":"m_ColorSpace","size":4,"flags":0,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"vector","name":"m_PlatformBlob","size":-1,"flags":32768,"v18meta":0},{"version":1,"level":2,"is_array":true,"type":"Array","name":"Array","size":-1,"flags":16384,"v18meta":0},{"version":1,"level":3,"is_array":false,"type":"int","name":"size","size":4,"flags":0,"v18meta":0},{"version":1,"level":3,"is_array":false,"type":"UInt8","name":"data","size":1,"flags":0,"v18meta":0},{"version":1,"level":1,"is_array":true,"type":"TypelessData","name":"image data","size":-1,"flags":16385,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"int","name":"size","size":4,"flags":1,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"UInt8","name":"data","size":1,"flags":1,"v18meta":0},{"version":2,"level":1,"is_array":false,"type":"StreamingInfo","name":"m_StreamData","size":-1,"flags":32768,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"UInt64","name":"offset","size":8,"flags":0,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"unsigned int","name":"size","size":4,"flags":0,"v18meta":0},{"version":1,"level":2,"is_array":false,"type":"string","name":"path","size":-1,"flags":32768,"v18meta":0},{"version":1,"level":3,"is_array":true,"type":"Array","name":"Array","size":-1,"flags":16385,"v18meta":0},{"version":1,"level":4,"is_array":false,"type":"int","name":"size","size":4,"flags":1,"v18meta":0},{"version":1,"level":4,"is_array":false,"type":"char","name":"data","size":1,"flags":1,"v18meta":0},{"version":1,"level":1,"is_array":false,"type":"vector","name":"m_SourceTextures","size":-1,"flags":49152,"v18meta":0},{"version":1,"level":2,"is_array":true,"type":"Array","name":"Array","size":-1,"flags":16384,"v18meta":0},{"version":1,"level":3,"is_array":false,"type":"int","name":"size","size":4,"flags":0,"v18meta":0},{"version":1,"level":3,"is_array":false,"type":"PPtr<Texture2D>","name":"data","size":12,"flags":0,"v18meta":0},{"version":1,"level":4,"is_array":false,"type":"int","name":"m_FileID","size":4,"flags":8388609,"v18meta":0},{"version":1,"level":4,"is_array":false,"type":"SInt64","name":"m_PathID","size":8,"flags":8388609,"v18meta":0}]}
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Mikunyan
4
4
  # version string
5
- VERSION = '3.9.9'
5
+ VERSION = '3.9.10'
6
6
  end
data/mikunyan.gemspec CHANGED
@@ -14,20 +14,20 @@ Gem::Specification.new do |spec|
14
14
  spec.description = 'Library to deserialize Unity assetbundles and assets.'
15
15
  spec.homepage = 'https://github.com/Ishotihadus/mikunyan'
16
16
  spec.license = 'MIT'
17
+ spec.required_ruby_version = '>= 2.6.0'
17
18
 
18
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
19
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
19
20
  f.match(%r{^(test|spec|features)/})
20
21
  end
21
22
  spec.bindir = 'exe'
22
- spec.executables = spec.files.grep(%r{^exe/}){|f| File.basename(f)}
23
+ spec.executables = spec.files.grep(%r{^exe/}) {|f| File.basename(f)}
23
24
  spec.require_paths = ['lib']
24
25
  spec.extensions = ['ext/decoders/native/extconf.rb', 'ext/decoders/crunch/extconf.rb']
25
26
 
26
27
  spec.add_dependency 'bin_utils', '~> 0'
27
28
  spec.add_dependency 'chunky_png', '~> 1'
28
29
  spec.add_dependency 'extlz4', '~> 0'
29
- spec.add_dependency 'extlzma', '~> 0'
30
- spec.add_dependency 'json', '~> 2'
30
+ spec.add_dependency 'extlzma2', '~> 2'
31
31
 
32
32
  spec.add_development_dependency 'bundler', '~> 2'
33
33
  spec.add_development_dependency 'oily_png', '~> 1'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mikunyan
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.9.9
4
+ version: 3.9.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ishotihadus
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-08-10 00:00:00.000000000 Z
11
+ date: 2022-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bin_utils
@@ -53,21 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: extlzma
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: json
56
+ name: extlzma2
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - "~>"
@@ -162,6 +148,7 @@ extensions:
162
148
  extra_rdoc_files: []
163
149
  files:
164
150
  - ".gitignore"
151
+ - ".rubocop.yml"
165
152
  - CHANGELOG.md
166
153
  - Gemfile
167
154
  - LICENSE.txt
@@ -238,7 +225,9 @@ files:
238
225
  - lib/mikunyan/typetrees/150/f123b055a61dfa7dc679d78cdaecd383.json
239
226
  - lib/mikunyan/typetrees/157/10355709bc95355f57466913ac850d0b.json
240
227
  - lib/mikunyan/typetrees/157/69b01db128625aa95f1f92fb890ff045.json
228
+ - lib/mikunyan/typetrees/157/6a51273486ff0a7ab9f6df13917bc047.json
241
229
  - lib/mikunyan/typetrees/157/b6ac05d288ffb84268e85f2738366aa7.json
230
+ - lib/mikunyan/typetrees/196/306f0c2739dc8ad54fb4a1a44d1a3880.json
242
231
  - lib/mikunyan/typetrees/198/4b5dc9892b939558afad44bc1c94cb95.json
243
232
  - lib/mikunyan/typetrees/198/4dbfaa1def6adb569b550804b19b4305.json
244
233
  - lib/mikunyan/typetrees/198/879cd82f1c9caa2bb7914c6871319fc0.json
@@ -337,7 +326,9 @@ files:
337
326
  - lib/mikunyan/typetrees/83/57a6370a001d5449abd37c2184ec5138.json
338
327
  - lib/mikunyan/typetrees/83/b23449465e3763dd19335a88ea09ae99.json
339
328
  - lib/mikunyan/typetrees/84/78e42736c01cb0f007375d925e0eb8b0.json
329
+ - lib/mikunyan/typetrees/850595691/5e9bfc993e74efde8bb9081817c5926a.json
340
330
  - lib/mikunyan/typetrees/89/1ef8dc1e91e0cd01bd07036e6665ea40.json
331
+ - lib/mikunyan/typetrees/89/3e37f1e0e678133aeabb230a8492e213.json
341
332
  - lib/mikunyan/typetrees/89/8ae46eedf9c00edaad35d0d09290bc8b.json
342
333
  - lib/mikunyan/typetrees/89/f92d618c5266ea3a8ca770b6eca728c8.json
343
334
  - lib/mikunyan/typetrees/90/06fc117ca6d965140ccc18ca840cc1a1.json
@@ -359,7 +350,7 @@ homepage: https://github.com/Ishotihadus/mikunyan
359
350
  licenses:
360
351
  - MIT
361
352
  metadata: {}
362
- post_install_message:
353
+ post_install_message:
363
354
  rdoc_options: []
364
355
  require_paths:
365
356
  - lib
@@ -367,15 +358,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
367
358
  requirements:
368
359
  - - ">="
369
360
  - !ruby/object:Gem::Version
370
- version: '0'
361
+ version: 2.6.0
371
362
  required_rubygems_version: !ruby/object:Gem::Requirement
372
363
  requirements:
373
364
  - - ">="
374
365
  - !ruby/object:Gem::Version
375
366
  version: '0'
376
367
  requirements: []
377
- rubygems_version: 3.2.17
378
- signing_key:
368
+ rubygems_version: 3.4.0.dev
369
+ signing_key:
379
370
  specification_version: 4
380
371
  summary: Unity asset deserializer for Ruby
381
372
  test_files: []