@@ -25,25 +25,25 @@ use structopt::StructOpt;
25
25
struct Opt {
26
26
#[ structopt( parse( from_os_str) ) ]
27
27
file : PathBuf ,
28
-
29
28
#[ structopt( parse( from_os_str) ) ]
30
29
output : PathBuf ,
31
-
32
30
#[ structopt( long, possible_values = & [ "lossy" , "lossless" ] , default_value = "lossy" ) ]
33
31
simplify : String ,
34
-
35
32
#[ structopt( short, long, default_value = "1" ) ]
36
- scale : f32
33
+ scale : f32 ,
34
+ #[ structopt( short, long, possible_values = & [ "micro" , "normal" ] , default_value = "normal" ) ]
35
+ bricktype : String ,
37
36
}
38
37
39
38
fn main ( ) {
40
39
let opt = Opt :: from_args ( ) ;
40
+ println ! ( "{:?}" , opt) ;
41
41
let mut octree = generate_octree ( & opt) ;
42
42
43
43
match opt. output . extension ( ) {
44
44
Some ( extension) => {
45
45
match extension. to_str ( ) {
46
- Some ( "brs" ) => write_brs_data ( & mut octree, opt. output , opt. simplify ) ,
46
+ Some ( "brs" ) => write_brs_data ( & mut octree, opt. output , opt. simplify , opt . bricktype ) ,
47
47
// Implement new file types
48
48
Some ( extension) => panic ! ( "Output file type {} is not supported" , extension) ,
49
49
None => panic ! ( "Invalid output file type" )
@@ -105,23 +105,45 @@ fn generate_octree(opt: &Opt) -> VoxelTree<Vector4<u8>> {
105
105
}
106
106
107
107
println ! ( "Voxelizing..." ) ;
108
- voxelize ( & mut models, & material_images, opt. scale )
108
+ voxelize ( & mut models, & material_images, opt. scale , opt . bricktype . clone ( ) )
109
109
}
110
110
111
- fn write_brs_data ( mut octree : & mut VoxelTree :: <Vector4 :: < u8 > >, output : PathBuf , simplify_algo : String ) {
112
- let blank_data = match File :: open ( "blank.brs" ) {
113
- Err ( e) => panic ! ( "Error encountered when loading blank.brs file: {:}" , e. to_string( ) ) ,
111
+ fn write_brs_data( mut octree: & mut VoxelTree :: <Vector4 :: < u8 > >, output : PathBuf , simplify_algo : String , bricktype : String ) {
112
+ let reference_save = match File :: open ( "reference.brs" ) {
113
+ Err ( e) => panic ! ( "Error encountered when loading microbrick.brs file: {:}" , e. to_string( ) ) ,
114
+ Ok ( data) => data ,
115
+ } ;
116
+
117
+ let reference_save = match brs:: Reader :: new ( reference_save ) {
118
+ Err ( e) => panic ! ( "Error encountered when reading microbrick.brs: {:}" , e. to_string( ) ) ,
114
119
Ok ( data) => data ,
115
120
} ;
116
121
117
- let mut write_data = brs:: Reader :: new ( blank_data) . unwrap ( ) . read_header1 ( ) . unwrap ( ) . read_header2 ( ) . unwrap ( ) . into_write_data ( ) . unwrap ( ) ;
118
- write_data. bricks . clear ( ) ;
122
+ let smallguy = brs:: User {
123
+ name : "Smallguy" . to_string( ) ,
124
+ id : brs:: uuid:: Uuid :: parse_str( "8efaeb23-5e82-428e-b575-0dd30270146e" ) . unwrap( ) ,
125
+ } ;
126
+
127
+ let mut write_data = brs:: WriteData {
128
+ author : smallguy. clone( ) ,
129
+ brick_assets: reference_save. brick_assets( ) . to_vec( ) ,
130
+ brick_owners: vec ! [ smallguy] ,
131
+ bricks: vec ! [ ] ,
132
+ colors: reference_save. colors( ) . to_vec( ) ,
133
+ description: "generated with obj2brs" . to_string( ) ,
134
+ map: reference_save. map( ) . to_string( ) ,
135
+ materials: reference_save. materials( ) . to_vec( ) ,
136
+ mods: vec ! [ ] ,
137
+ save_time: brs:: chrono:: DateTime :: from( std:: time:: SystemTime :: now( ) ) ,
138
+ } ;
139
+
140
+ println ! ( "{:?}" , write_data. brick_assets) ;
119
141
120
142
println ! ( "Simplifying {:?}..." , simplify_algo) ;
121
143
if simplify_algo == "lossless" {
122
- simplify_lossless ( & mut octree, & mut write_data) ;
144
+ simplify_lossless( & mut octree, & mut write_data, bricktype ) ;
123
145
} else {
124
- simplify ( & mut octree, & mut write_data) ;
146
+ simplify( & mut octree, & mut write_data, bricktype ) ;
125
147
}
126
148
127
149
// Write file
0 commit comments