Implemented reading player data from scene file and marked unnecessary entities as transient to avoid saving themto file when saving the scene. Implmented hiding editor related entities in scene hierarchy

dev
Shariq Shah 6 years ago
parent 7150aff216
commit 6629078c3e
  1. 969
      assets/scenes/default.symtres
  2. 5
      src/game/editor.c
  3. 4
      src/game/entity.h
  4. 2
      src/game/game.c
  5. 4
      src/game/player.c
  6. 33
      src/game/scene.c
  7. 1
      todo.txt

@ -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
}

@ -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;

@ -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

@ -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;
}

@ -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);

@ -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)
{

@ -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

Loading…
Cancel
Save