Reworked underlying implementation for turret's scanning

dev
Shariq Shah 5 years ago
parent 32b192169c
commit e8bac0eeab
  1. 1
      assets/entities/turret.symtres
  2. 2
      assets/scenes/scene_1.symtres
  3. 729
      assets/scenes/scene_2.symtres
  4. 2
      src/common/version.h
  5. 5
      src/game/editor.c
  6. 20
      src/game/enemy.c
  7. 1
      src/game/entity.h
  8. 3
      todo.txt

@ -12,6 +12,7 @@ Entity
muzzle_light_intensity_min : 1
turn_speed_when_targetting : 50.0000
max_yaw : 60.0000
default_yaw : 0.000
position : 0.000 3.000 0.000
flags : 1
enemy_type : 0

@ -13,7 +13,7 @@ Scene_Config
background_music_volume : 0.0100
debug_draw_enabled : false
debug_draw_mode : 0
next_scene : test
next_scene : scene_2
ambient_light : 0.100 0.100 0.100
}

@ -0,0 +1,729 @@
Scene_Config
{
debug_draw_color : 0.800 0.400 0.100 1.000
background_music_filename : sounds/scene_background_music_default.ogg
fog_type : 1
fog_density : 0.1000
fog_color : 0.310 0.412 0.529
debug_draw_physics : false
fog_start_distance : 10.0000
fog_max_distance : 450.0000
cleanup_func : scene_1_cleanup
init_func : scene_1_init
background_music_volume : 0.0100
debug_draw_enabled : false
debug_draw_mode : 0
next_scene : scene_2
ambient_light : 0.100 0.100 0.100
}
Player
{
type : 2
scale : 1.000 1.000 1.000
rotation : 0.000 -0.706 0.000 -0.708
player_key_mask : 0
position : 57.000 1.625 8.000
flags : 1
player_health : 100
name : Player
bounding_box_min : -1.500 -1.500 -1.000
camera_clear_color : 0.310 0.412 0.529 1.000
bounding_box_max : 1.500 1.500 1.000
}
Entity
{
type : 1
scale : 1.000 1.000 1.000
rotation : 0.000 -1.000 0.000 0.000
position : 57.000 6.000 8.000
flags : 193
name : PLAYER_START
archetype : player_start
bounding_box_min : -0.500 -0.500 -0.500
bounding_box_max : 0.500 0.500 0.500
}
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 : 0.247 0.533 0.686
radius : 20.0000
position : 46.000 5.000 7.000
flags : 1
outer_angle : 30.0000
name : Test_Light
archetype : Spot
bounding_box_min : -0.500 -0.500 -0.500
pcf_enabled : false
valid : true
bounding_box_max : 0.500 0.500 0.500
}
Entity
{
type : 5
scale : 1.000 1.000 1.000
inner_angle : 20.0000
falloff : 1.5000
light_type : 1
depth_bias : 0.0005
rotation : -0.156 -0.705 -0.150 0.675
cast_shadow : false
intensity : 0.2500
color : 0.149 0.314 0.376
radius : 20.0000
position : 0.000 11.000 0.000
flags : 1
outer_angle : 30.0000
name : Fill_Light
archetype : fill_light
bounding_box_min : -0.500 -0.500 -0.500
pcf_enabled : false
valid : true
bounding_box_max : 0.500 0.500 0.500
}
Entity
{
type : 5
scale : 1.000 1.000 1.000
inner_angle : 20.0000
falloff : 0.9500
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
radius : 14.0000
position : -9.000 6.000 -42.000
flags : 1
outer_angle : 30.0000
name : Test_Light
archetype : spot
bounding_box_min : -0.500 -0.500 -0.500
pcf_enabled : false
valid : true
bounding_box_max : 0.500 0.500 0.500
}
Entity
{
type : 6
scale : 32.000 1.000 32.000
material : 0
rotation : 0.000 0.000 0.000 1.000
diffuse_color : 1.000 1.000 1.000 1.000
geometry : floor_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : 2.000 0.000 -10.000
flags : 1
specular_strength : 62.0000
name : Floor_Tile
archetype : floor_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 7.000 3.000 1.000
material : 0
rotation : 0.000 0.000 0.000 1.000
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : 48.000 6.000 2.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 7.000 3.000 1.000
material : 0
rotation : 0.000 0.707 0.000 0.707
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : 17.500 6.000 -20.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 3.000 3.000 1.000
material : 0
rotation : 0.000 0.000 0.000 1.000
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : 0.000 6.000 -6.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 6.880 2.880 0.880
material : 0
rotation : 0.000 0.000 0.000 1.000
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : 48.000 6.000 14.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 4.000 3.000 1.000
material : 0
rotation : 0.000 -0.707 0.000 0.707
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : 62.000 6.000 8.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 4.000 3.000 1.000
material : 0
rotation : 0.000 -0.707 0.000 0.707
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : 34.000 6.000 19.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 3.000 3.000 1.000
material : 0
rotation : 0.000 -0.707 0.000 0.707
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : 34.000 6.000 -1.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 3.000 3.000 1.000
material : 0
rotation : 0.000 0.000 0.000 1.000
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : 31.000 6.000 -6.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 3.000 3.000 1.000
material : 0
rotation : 0.000 0.000 0.000 1.000
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : 31.000 6.000 -34.500
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 3.000 3.000 1.000
material : 0
rotation : 0.000 -0.707 0.000 0.707
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : 6.000 6.000 18.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 3.000 3.000 1.000
material : 0
rotation : 0.000 -0.707 0.000 0.707
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : 6.000 6.000 0.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 3.000 3.000 1.000
material : 0
rotation : 0.000 0.000 0.000 1.000
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : 12.000 6.000 -6.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 3.000 3.000 1.000
material : 0
rotation : 0.000 0.000 0.000 1.000
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : 11.500 6.000 -34.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 11.500 3.000 1.000
material : 0
rotation : 0.000 0.000 0.000 1.000
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : -35.000 6.000 -34.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 6.000 3.000 1.000
material : 0
rotation : 0.000 -0.707 0.000 0.707
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : 34.000 6.000 35.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 10.000 3.000 1.000
material : 0
rotation : 0.000 0.000 0.000 1.000
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : -32.000 6.000 -6.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 3.000 3.000 1.000
material : 0
rotation : 0.000 0.000 0.000 1.000
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : 29.000 6.000 24.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 3.000 3.000 1.000
material : 0
rotation : 0.000 0.000 0.000 1.000
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : 12.000 6.000 24.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 8.000 3.000 1.000
material : 0
rotation : 0.000 0.000 0.000 1.000
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : 18.000 6.000 47.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 16.000 3.000 1.000
material : 0
rotation : 0.000 -0.707 0.000 0.707
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : -23.000 6.000 16.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 3.000 3.000 1.000
material : 0
rotation : 0.000 -0.707 0.000 0.707
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : -23.000 6.000 -28.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 7.500 3.000 1.000
material : 0
rotation : 0.000 -0.707 0.000 0.707
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : -51.500 6.000 -19.500
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 8.000 3.000 1.000
material : 0
rotation : 0.000 0.000 0.000 1.000
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : 22.000 6.000 -56.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 6.000 3.000 1.000
material : 0
rotation : 0.000 -0.707 0.000 0.707
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : 6.000 6.000 -44.500
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 5.000 3.000 1.000
material : 0
rotation : 0.000 -0.707 0.000 0.707
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : -23.000 6.000 -43.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 6.000 3.000 1.000
material : 0
rotation : 0.000 -0.707 0.000 0.707
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : 6.000 6.000 36.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 6
scale : 7.000 3.000 1.000
material : 0
rotation : 0.000 0.707 0.000 0.707
diffuse_color : 1.000 1.000 1.000 1.000
geometry : wall_tile.symbres
specular : 0.4000
diffuse_texture : white.tga
diffuse : 1.0000
position : 25.500 6.000 -20.000
flags : 1
specular_strength : 62.0000
name : Wall_Tile
archetype : wall_tile
uv_scale : 0.300 0.200
}
Entity
{
type : 9
scale : 23.100 8.300 15.400
rotation : 0.000 0.000 0.000 1.000
trigger_mask : 1
position : -38.500 6.000 -61.000
flags : 1
trigger_type : 0
name : Scene_End_Trigger
archetype : trigger
bounding_box_min : -0.500 -0.500 -0.500
bounding_box_max : 0.500 0.500 0.500
}
Scene_Entity_Entry
{
scale : 1.000 1.000 1.000
rotation : 0.000 -1.000 0.000 -0.000
position : 20.500 1.000 24.000
filename : door_red_green
name : Door
}
Scene_Entity_Entry
{
scale : 1.000 1.000 1.000
rotation : 0.000 0.707 0.000 0.707
position : 34.000 1.000 8.000
filename : door
name : Door
}
Scene_Entity_Entry
{
scale : 1.000 1.000 1.000
rotation : 0.000 0.707 0.000 0.707
position : -46.000 1.000 17.000
filename : door_red
name : Door
}
Scene_Entity_Entry
{
scale : 1.000 1.000 1.000
rotation : 0.000 0.707 0.000 0.707
position : 6.000 1.000 9.000
filename : door_rgb
name : Door
}
Scene_Entity_Entry
{
scale : 1.000 1.000 1.000
rotation : 0.000 0.000 0.000 1.000
position : 21.000 3.000 34.000
filename : pickup_key_blue
name : Pickup_Key_Blue
}
Scene_Entity_Entry
{
scale : 1.000 1.000 1.000
rotation : 0.000 0.000 0.000 1.000
position : -8.000 3.000 39.000
filename : pickup_key_green
name : Pickup_Key_Green
}
Scene_Entity_Entry
{
scale : 1.000 1.000 1.000
rotation : 0.000 0.000 0.000 1.000
position : 21.000 3.000 -45.000
filename : pickup_key_red
name : Pickup_Key_Red
}

@ -4,7 +4,7 @@
/* Auto generated version file. DO NOT MODIFY */
#define SYMMETRY_VERSION_MAJOR 0
#define SYMMETRY_VERSION_MINOR 3
#define SYMMETRY_VERSION_REVISION 374
#define SYMMETRY_VERSION_REVISION 375
#define SYMMETRY_VERSION_BRANCH "dev"
#endif

@ -2372,8 +2372,9 @@ void editor_window_property_inspector(struct nk_context* context, struct Editor*
nk_property_float(context, "Turn Speed Default", 0.f, &enemy->Turret.turn_speed_default, FLT_MAX, 0.5f, 0.1f);
nk_property_float(context, "Turn Speed Targetting", 0.f, &enemy->Turret.turn_speed_when_targetting, FLT_MAX, 0.5f, 0.1f);
nk_property_float(context, "Turn Speed Current", 0.f, &enemy->Turret.turn_speed_current, FLT_MAX, 0.5f, 0.1f);
nk_property_float(context, "Max Yaw", 0.f, &enemy->Turret.max_yaw, FLT_MAX, 0.5f, 0.1f);
nk_property_float(context, "Target Yaw", 0.f, &enemy->Turret.target_yaw, FLT_MAX, 0.5f, 0.1f);
nk_property_float(context, "Default Yaw", -FLT_MAX, &enemy->Turret.default_yaw, FLT_MAX, 0.5f, 0.1f);
nk_property_float(context, "Max Yaw", -FLT_MAX, &enemy->Turret.max_yaw, FLT_MAX, 0.5f, 0.1f);
nk_property_float(context, "Target Yaw", -FLT_MAX, &enemy->Turret.target_yaw, FLT_MAX, 0.5f, 0.1f);
nk_property_float(context, "Pulsate Speed Scale", 0.f, &enemy->Turret.pulsate_speed_scale, FLT_MAX, 0.5f, 0.1f);
nk_property_float(context, "Pulsate Height", 0.f, &enemy->Turret.pulsate_height, FLT_MAX, 0.5f, 0.1f);
nk_property_float(context, "Attack Cooldown", 0.f, &enemy->Turret.attack_cooldown, FLT_MAX, 0.5f, 0.1f);

@ -69,6 +69,7 @@ void enemy_init(struct Enemy* enemy, int type)
enemy->Turret.turn_speed_current = enemy->Turret.turn_speed_default;
enemy->Turret.max_yaw = 60.f;
enemy->Turret.target_yaw = 0.f;
enemy->Turret.default_yaw = 0.f;
enemy->Turret.pulsate_height = 1.5f;
enemy->Turret.pulsate_speed_scale = 0.1f;
enemy->Turret.attack_cooldown = 0.05f;
@ -191,6 +192,7 @@ struct Enemy* enemy_read(struct Parser_Object* object, const char* name, struct
case ENEMY_TURRET:
{
if(hashmap_value_exists(object->data, "turn_speed_default")) new_enemy->Turret.turn_speed_default = hashmap_float_get(object->data, "turn_speed_default");
if(hashmap_value_exists(object->data, "default_yaw")) new_enemy->Turret.default_yaw = hashmap_float_get(object->data, "default_yaw");
if(hashmap_value_exists(object->data, "max_yaw")) new_enemy->Turret.max_yaw = hashmap_float_get(object->data, "max_yaw");
if(hashmap_value_exists(object->data, "pulsate_speed_scale")) new_enemy->Turret.pulsate_speed_scale = hashmap_float_get(object->data, "pulsate_speed_scale");
if(hashmap_value_exists(object->data, "pulsate_height")) new_enemy->Turret.pulsate_height = hashmap_float_get(object->data, "pulsate_height");
@ -285,7 +287,6 @@ void enemy_on_scene_loaded(struct Event* event, void* enemy_ptr)
void enemy_update_physics_turret(struct Enemy* enemy, struct Game_State* game_state, float fixed_dt)
{
/* Turning/Rotation */
static vec3 yaw_axis = { 0.f, 1.f, 0.f };
if(enemy->Turret.scan)
{
float current_yaw = quat_get_yaw(&enemy->base.transform.rotation);
@ -295,21 +296,23 @@ void enemy_update_physics_turret(struct Enemy* enemy, struct Game_State* game_st
yaw *= -1.f;
current_yaw += yaw;
if(current_yaw >= enemy->Turret.max_yaw)
if(enemy->Turret.yaw_direction_positive && current_yaw >= enemy->Turret.target_yaw)
{
yaw = 0.f;
enemy->Turret.yaw_direction_positive = false;
enemy->Turret.target_yaw = enemy->Turret.default_yaw - enemy->Turret.max_yaw;
}
else if(current_yaw <= -enemy->Turret.max_yaw)
else if(!enemy->Turret.yaw_direction_positive && current_yaw <= enemy->Turret.target_yaw)
{
yaw = 0.f;
enemy->Turret.yaw_direction_positive = true;
enemy->Turret.target_yaw = enemy->Turret.default_yaw + enemy->Turret.max_yaw;
}
if(yaw != 0.f)
transform_rotate(enemy, &yaw_axis, yaw, TS_LOCAL);
transform_rotate(enemy, &UNIT_Y, yaw, TS_LOCAL);
}
else if(!enemy->Turret.scan)
else
{
float epsilon = 0.5f;
float current_yaw = quat_get_yaw(&enemy->base.transform.rotation);
@ -320,8 +323,9 @@ void enemy_update_physics_turret(struct Enemy* enemy, struct Game_State* game_st
if(current_yaw > enemy->Turret.target_yaw)
yaw *= -1.f;
transform_rotate(enemy, &yaw_axis, yaw, TS_LOCAL);
transform_rotate(enemy, &UNIT_Y, yaw, TS_LOCAL);
}
debug_vars_show_float("Difference ", difference);
}
/* Movement */
@ -482,7 +486,7 @@ void enemy_state_set_turret(struct Enemy* enemy, int state)
enemy->Turret.time_elapsed_since_attack = 0.f;
enemy->Turret.pulsate = true;
enemy->Turret.scan = false;
enemy->Turret.target_yaw = 0.f;
enemy->Turret.target_yaw = enemy->Turret.default_yaw;
enemy->Turret.turn_speed_current = enemy->Turret.turn_speed_default;
vec3 default_position = { 0.f };
transform_set_position(enemy->mesh, &default_position);
@ -493,7 +497,7 @@ void enemy_state_set_turret(struct Enemy* enemy, int state)
enemy->Turret.pulsate = false;
enemy->Turret.turn_speed_current = enemy->Turret.turn_speed_default;
enemy->Turret.scan = true;
enemy->Turret.target_yaw = enemy->Turret.yaw_direction_positive ? enemy->Turret.max_yaw : -enemy->Turret.max_yaw;
enemy->Turret.target_yaw = enemy->Turret.yaw_direction_positive ? (enemy->Turret.default_yaw + enemy->Turret.max_yaw) : (enemy->Turret.default_yaw - enemy->Turret.max_yaw);
vec4_assign(&model->material_params[MMP_DIFFUSE_COL].val_vec4, &enemy->Turret.color_alert);
enemy->Turret.time_elapsed_since_alert = 0.f;
}

@ -255,6 +255,7 @@ struct Enemy
float turn_speed_default;
float turn_speed_when_targetting;
float turn_speed_current;
float default_yaw;
float max_yaw;
float target_yaw;
bool yaw_direction_positive;

@ -8,10 +8,7 @@ Todo:
- Color grading
- Shadow mapping
- Cube mapping for sky dome etc
- Implement game gui either with a separate nuklear context or as part of existing context
- Fix rotate gizmo's origin not being set to the selected entity
- Ambient/Background music
- Player shooting
- Sky Cube maps
- Scrolling textures
- Apply the selected entity's transformation when duplicating an entity that has an entity archetype

Loading…
Cancel
Save