@@ -26,6 +26,7 @@ pub struct CStats {
2626enum Mode {
2727 SceneBundle = 0 ,
2828 AssetBundle = 1 ,
29+ AssetBundleShallow = 2 ,
2930}
3031impl Mode {
3132 fn needs_typetree_generator ( & self ) -> bool {
@@ -100,7 +101,8 @@ fn export_inner(
100101 let mode = match mode {
101102 0 => Mode :: SceneBundle ,
102103 1 => Mode :: AssetBundle ,
103- _ => bail ! ( "Expected 0=SceneBundle or 1=AssetBundle, got {mode}" ) ,
104+ 2 => Mode :: AssetBundleShallow ,
105+ _ => bail ! ( "Expected 0=SceneBundle, 1=AssetBundle or 2=AssetBundleShallow, got {mode}" ) ,
104106 } ;
105107
106108 let tpk_raw = TpkTypeTreeBlob :: embedded ( ) ;
@@ -115,6 +117,8 @@ fn export_inner(
115117
116118 let disable = true ;
117119
120+ let mut out = Cursor :: new ( Vec :: new ( ) ) ;
121+
118122 let game_files = GameFiles :: probe ( game_dir) ?;
119123 let mut env = Environment :: new ( game_files, tpk) ;
120124 let unity_version = env. unity_version ( ) ?;
@@ -147,7 +151,18 @@ fn export_inner(
147151 monobehaviour_node,
148152 ) ,
149153 } ;
150- } ;
154+ }
155+
156+ if let Mode :: AssetBundleShallow = mode {
157+ let stats = unity_scene_repacker:: pack_to_shallow_asset_bundle (
158+ & env,
159+ & mut out,
160+ name,
161+ repack_settings,
162+ compression,
163+ ) ?;
164+ return Ok ( ( stats, out. into_inner ( ) ) ) ;
165+ }
151166
152167 let mut repack_scenes = unity_scene_repacker:: repack_scenes (
153168 & env,
@@ -156,8 +171,6 @@ fn export_inner(
156171 matches ! ( mode, Mode :: AssetBundle ) ,
157172 ) ?;
158173
159- let mut out = Cursor :: new ( Vec :: new ( ) ) ;
160-
161174 let stats = match mode {
162175 Mode :: SceneBundle => {
163176 let ( stats, header, files) = unity_scene_repacker:: pack_to_scene_bundle (
@@ -190,6 +203,7 @@ fn export_inner(
190203 repack_scenes,
191204 compression,
192205 ) ?,
206+ Mode :: AssetBundleShallow => unreachable ! ( ) ,
193207 } ;
194208
195209 Ok ( ( stats, out. into_inner ( ) ) )
0 commit comments