diff --git a/assets/scenes/default.symtres b/assets/scenes/default.symtres new file mode 100755 index 0000000..7ac6c75 --- /dev/null +++ b/assets/scenes/default.symtres @@ -0,0 +1,969 @@ +Scene_Config +{ + debug_draw_color : 0.800 0.400 0.100 1.000 + fog_type : 1 + fog_density : 0.1000 + fog_color : 0.170 0.490 0.630 + debug_draw_physics : false + fog_start_distance : 10.0000 + fog_max_distance : 450.0000 + debug_draw_enabled : false + debug_draw_mode : 0 + ambient_light : 0.100 0.100 0.100 +} + +Player +{ + type : 2 + scale : 1.000 1.000 1.000 + rotation : 0.000 0.000 0.000 1.000 + active : true + position : 5.970 1.130 16.740 + name : Player +} + +Entity +{ + type : 5 + scale : 1.000 1.000 1.000 + inner_angle : 20.0000 + falloff : 1.5000 + light_type : 2 + depth_bias : 0.0005 + rotation : 0.000 0.000 0.000 1.000 + cast_shadow : false + intensity : 1.0000 + color : 1.000 0.000 0.000 + active : true + radius : 20.0000 + position : 0.000 3.000 0.000 + outer_angle : 30.0000 + name : Suz_Light + pcf_enabled : false + valid : true +} + +Entity +{ + type : 7 + scale : 1.000 1.000 1.000 + volume : 1.0000 + rolloff_factor : 0.9500 + rotation : 0.000 0.000 0.000 1.000 + loop : true + sound_min_distance : 0.0000 + active : true + playing : true + position : 0.000 3.000 0.000 + source_filename : sounds/teh_beatz.wav + sound_type : 1 + sound_max_distance : 10.0000 + name : Beats + sound_attenuation_type : 2 +} + +Entity +{ + type : 6 + scale : 200.000 1.000 200.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 1.000 1.000 1.000 + geometry : default.pamesh + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 0.000 0.000 0.000 + specular_strength : 1.0000 + name : Ground_Mesh +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 10.000 5.000 5.000 + specular_strength : 1.0000 + name : Suzanne_0 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 11.000 5.000 6.000 + specular_strength : 1.0000 + name : Suzanne_1 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 12.000 5.000 7.000 + specular_strength : 1.0000 + name : Suzanne_2 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 13.000 5.000 8.000 + specular_strength : 1.0000 + name : Suzanne_3 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 14.000 5.000 9.000 + specular_strength : 1.0000 + name : Suzanne_4 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 15.000 5.000 10.000 + specular_strength : 1.0000 + name : Suzanne_5 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 16.000 5.000 11.000 + specular_strength : 1.0000 + name : Suzanne_6 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 17.000 5.000 12.000 + specular_strength : 1.0000 + name : Suzanne_7 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 18.000 5.000 13.000 + specular_strength : 1.0000 + name : Suzanne_8 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 19.000 5.000 14.000 + specular_strength : 1.0000 + name : Suzanne_9 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 20.000 5.000 15.000 + specular_strength : 1.0000 + name : Suzanne_10 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 21.000 5.000 16.000 + specular_strength : 1.0000 + name : Suzanne_11 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 22.000 5.000 17.000 + specular_strength : 1.0000 + name : Suzanne_12 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 23.000 5.000 18.000 + specular_strength : 1.0000 + name : Suzanne_13 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 24.000 5.000 19.000 + specular_strength : 1.0000 + name : Suzanne_14 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 25.000 5.000 20.000 + specular_strength : 1.0000 + name : Suzanne_15 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 26.000 5.000 21.000 + specular_strength : 1.0000 + name : Suzanne_16 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 27.000 5.000 22.000 + specular_strength : 1.0000 + name : Suzanne_17 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 28.000 5.000 23.000 + specular_strength : 1.0000 + name : Suzanne_18 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 29.000 5.000 24.000 + specular_strength : 1.0000 + name : Suzanne_19 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 30.000 5.000 25.000 + specular_strength : 1.0000 + name : Suzanne_20 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 31.000 5.000 26.000 + specular_strength : 1.0000 + name : Suzanne_21 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 32.000 5.000 27.000 + specular_strength : 1.0000 + name : Suzanne_22 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 33.000 5.000 28.000 + specular_strength : 1.0000 + name : Suzanne_23 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 34.000 5.000 29.000 + specular_strength : 1.0000 + name : Suzanne_24 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 35.000 5.000 30.000 + specular_strength : 1.0000 + name : Suzanne_25 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 36.000 5.000 31.000 + specular_strength : 1.0000 + name : Suzanne_26 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 37.000 5.000 32.000 + specular_strength : 1.0000 + name : Suzanne_27 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 38.000 5.000 33.000 + specular_strength : 1.0000 + name : Suzanne_28 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 39.000 5.000 34.000 + specular_strength : 1.0000 + name : Suzanne_29 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 40.000 5.000 35.000 + specular_strength : 1.0000 + name : Suzanne_30 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 41.000 5.000 36.000 + specular_strength : 1.0000 + name : Suzanne_31 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 42.000 5.000 37.000 + specular_strength : 1.0000 + name : Suzanne_32 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 43.000 5.000 38.000 + specular_strength : 1.0000 + name : Suzanne_33 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 44.000 5.000 39.000 + specular_strength : 1.0000 + name : Suzanne_34 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 45.000 5.000 40.000 + specular_strength : 1.0000 + name : Suzanne_35 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 46.000 5.000 41.000 + specular_strength : 1.0000 + name : Suzanne_36 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 47.000 5.000 42.000 + specular_strength : 1.0000 + name : Suzanne_37 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 48.000 5.000 43.000 + specular_strength : 1.0000 + name : Suzanne_38 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 49.000 5.000 44.000 + specular_strength : 1.0000 + name : Suzanne_39 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 50.000 5.000 45.000 + specular_strength : 1.0000 + name : Suzanne_40 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 51.000 5.000 46.000 + specular_strength : 1.0000 + name : Suzanne_41 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 52.000 5.000 47.000 + specular_strength : 1.0000 + name : Suzanne_42 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 53.000 5.000 48.000 + specular_strength : 1.0000 + name : Suzanne_43 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 54.000 5.000 49.000 + specular_strength : 1.0000 + name : Suzanne_44 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 55.000 5.000 50.000 + specular_strength : 1.0000 + name : Suzanne_45 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 56.000 5.000 51.000 + specular_strength : 1.0000 + name : Suzanne_46 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 57.000 5.000 52.000 + specular_strength : 1.0000 + name : Suzanne_47 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 58.000 5.000 53.000 + specular_strength : 1.0000 + name : Suzanne_48 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 59.000 5.000 54.000 + specular_strength : 1.0000 + name : Suzanne_49 +} + +Entity +{ + type : 6 + scale : 1.000 1.000 1.000 + material : 0 + rotation : 0.000 0.000 0.000 1.000 + diffuse_color : 1.000 0.000 1.000 1.000 + geometry : suzanne.symbres + specular : 1.0000 + active : true + diffuse_texture : white.tga + diffuse : 0.5000 + position : 0.000 5.000 5.000 + specular_strength : 1.0000 + name : Suz +} + +Entity +{ + type : 5 + scale : 1.000 1.000 1.000 + inner_angle : 20.0000 + falloff : 1.5000 + light_type : 2 + depth_bias : 0.0005 + rotation : 0.000 0.000 0.000 1.000 + cast_shadow : false + intensity : 1.0000 + color : 1.000 1.000 1.000 + active : true + radius : 20.0000 + position : 0.000 5.000 0.000 + outer_angle : 30.0000 + name : Test_Light + pcf_enabled : false + valid : true +} + diff --git a/src/game/editor.c b/src/game/editor.c index e087ba1..2fd3c64 100755 --- a/src/game/editor.c +++ b/src/game/editor.c @@ -158,13 +158,14 @@ void editor_init(struct Editor* editor) event_manager_subscribe(event_manager, EVT_KEY_RELEASED, &editor_on_key_release); editor->cursor_entity = scene_static_mesh_create(game_state_get()->scene, "EDITOR_SELECTED_ENTITY_WIREFRAME", NULL, "sphere.symbres", MAT_UNSHADED); + editor->cursor_entity->base.flags |= EF_TRANSIENT | EF_HIDE_IN_EDITOR_SCENE_HIERARCHY; } void editor_init_camera(struct Editor* editor, struct Hashmap* cvars) { struct Camera* editor_camera = &game_state_get()->scene->cameras[CAM_EDITOR]; entity_rename(editor_camera, "Editor_Camera"); - editor_camera->base.flags |= EF_ACTIVE; + editor_camera->base.flags |= EF_ACTIVE | EF_TRANSIENT; editor_camera->clear_color.x = 0.3f; editor_camera->clear_color.y = 0.6f; editor_camera->clear_color.z = 0.9f; @@ -1509,7 +1510,7 @@ bool editor_widget_v3(struct nk_context* context, vec3* value, const char* name_ void editor_show_entity_in_list(struct Editor* editor, struct nk_context* context, struct Scene* scene, struct Entity* entity) { - if(!(entity->flags & EF_ACTIVE)) return; + if(!(entity->flags & EF_ACTIVE) || (entity->flags & EF_HIDE_IN_EDITOR_SCENE_HIERARCHY)) return; nk_layout_row_dynamic(context, 20, 1); int selected = entity->flags & EF_SELECTED_IN_EDITOR; diff --git a/src/game/entity.h b/src/game/entity.h index e09a99e..97c7379 100755 --- a/src/game/entity.h +++ b/src/game/entity.h @@ -51,8 +51,8 @@ enum Entity_Flags EF_ACTIVE = 1 << 0, EF_SELECTED_IN_EDITOR = 1 << 1, EF_MARKED_FOR_DELETION = 1 << 2, - EF_SERIALIZE_IN_SCENE = 1 << 3, - EF_SHOW_IN_EDITOR_SCENE_HIERARCHY = 1 << 4 + EF_TRANSIENT = 1 << 3, + EF_HIDE_IN_EDITOR_SCENE_HIERARCHY = 1 << 4 }; struct Transform diff --git a/src/game/game.c b/src/game/game.c index 41815bd..3ab7ed0 100755 --- a/src/game/game.c +++ b/src/game/game.c @@ -114,7 +114,7 @@ bool game_init(struct Window* window, struct Hashmap* cvars) } /* Debug scene setup */ - game_scene_setup(); + //game_scene_setup(); game_state->is_initialized = true; return game_state->is_initialized; } diff --git a/src/game/player.c b/src/game/player.c index 17e7586..9761930 100755 --- a/src/game/player.c +++ b/src/game/player.c @@ -36,6 +36,10 @@ void player_init(struct Player* player, struct Scene* scene) player_camera->clear_color.w = 1.f; player->camera_node = player_camera; + // Mark player camera and mesh as transient for now. We don't need to save them to file since we recreate them here anyway + player->camera_node->base.flags |= EF_TRANSIENT; + player->mesh->base.flags |= EF_TRANSIENT; + int render_width = hashmap_int_get(config, "render_width"); int render_height = hashmap_int_get(config, "render_height"); camera_attach_fbo(player_camera, render_width, render_height, true, true, true); diff --git a/src/game/scene.c b/src/game/scene.c index deb32ac..22b51f9 100755 --- a/src/game/scene.c +++ b/src/game/scene.c @@ -111,7 +111,9 @@ bool scene_load(struct Scene* scene, const char* filename, int directory_type) for(int i = 0; i < array_len(parsed_file->objects); i++) { struct Parser_Object* object = &parsed_file->objects[i]; - if(object->type == PO_SCENE_CONFIG) + switch(object->type) + { + case PO_SCENE_CONFIG: { struct Hashmap* scene_data = object->data; struct Render_Settings* render_settings = &game_state_get()->renderer->settings; @@ -128,12 +130,14 @@ bool scene_load(struct Scene* scene, const char* filename, int directory_type) if(hashmap_value_exists(scene_data, "debug_draw_physics")) render_settings->debug_draw_physics = hashmap_bool_get(scene_data, "debug_draw_physics"); num_objects_loaded++; } - else if(object->type == PO_ENTITY) + break; + case PO_ENTITY: { if(entity_read(object, &scene->root_entity)) num_objects_loaded++; } - else if(object->type == PO_SCENE_ENTITY_ENTRY) + break; + case PO_SCENE_ENTITY_ENTRY: { struct Hashmap* entity_entry_data = object->data; if(hashmap_value_exists(object->data, "filename")) @@ -159,8 +163,27 @@ bool scene_load(struct Scene* scene, const char* filename, int directory_type) } } } - else + break; + case PO_PLAYER: { + struct Hashmap* player_data = object->data; + vec3 position = { 0.f, 0.f, 0.f }; + quat rotation = { 0.f, 0.f, 0.f, 1.f }; + vec3 scale = { 1.f, 1.f, 1.f }; + + if(hashmap_value_exists(player_data, "position")) position = hashmap_vec3_get(player_data, "position"); + if(hashmap_value_exists(player_data, "rotation")) rotation = hashmap_quat_get(player_data, "rotation"); + if(hashmap_value_exists(player_data, "scale")) scale = hashmap_vec3_get(player_data, "scale"); + + struct Player* player = &scene->player; + transform_set_position(player, &position); + transform_scale(player, &scale); + quat_assign(&player->base.transform.rotation, &rotation); + transform_update_transmat(player); + num_objects_loaded++; + } + break; + default: log_warning("Unknown object type '%s' in scene file %s", parser_object_type_to_str(object->type), filename); continue; } @@ -257,7 +280,7 @@ void scene_write_entity_list(struct Scene* scene, int entity_type, struct Parser //((char*)entity) += stride * count; ((char*)entity) += stride; - if(entity->flags & EF_ACTIVE) + if(!(entity->flags & EF_TRANSIENT) && (entity->flags & EF_ACTIVE)) { if(entity->archetype_index != -1) { diff --git a/todo.txt b/todo.txt index 0d9d6af..6e4d973 100644 --- a/todo.txt +++ b/todo.txt @@ -332,3 +332,4 @@ Done: entity archetypes * Console command to read/write scene to/from file * Implemented flags that specify whether an entity should be written to file or not for example to avoid writing cameras and player to file + * In editor, only show entities with specific flags