basic npc
[carveJwlIkooP6JGAAIwe30JlM.git] / world_entity.c
index 3602530ff99a70d8eac814e32a616afde6fd6363..725c8989dda8b57f919849d31af3a0d9d9dd8da0 100644 (file)
@@ -214,7 +214,8 @@ void world_gen_entities_init( world_instance *world )
       { k_ent_objective, &world->ent_objective },
       { k_ent_volume, &world->ent_volume },
       { k_ent_challenge, &world->ent_challenge },
-      { k_ent_glider, &world->ent_glider }
+      { k_ent_glider, &world->ent_glider },
+      { k_ent_npc, &world->ent_npc }
    };
 
    for( u32 i=0; i<vg_list_size(indexables); i++ )
@@ -510,6 +511,11 @@ void entity_bh_expand_bound( void *user, boxf bound, u32 item_index )
       m4x3_expand_aabb_aabb( transform, bound,
                             (boxf){{-1.0f,-1.0f,-1.0f},{ 1.0f, 1.0f, 1.0f}} );
    }
+   else if( type == k_ent_npc )
+   {
+      ent_npc *npc = mdl_arritm( &world->ent_npc, index );
+      box_addpt( bound, npc->transform.co );
+   }
    else{
       vg_fatal_error( "Programming error\n" );
    }
@@ -535,15 +541,23 @@ float entity_bh_centroid( void *user, u32 item_index, int axis )
       ent_volume *volume = mdl_arritm( &world->ent_volume, index );
       return volume->transform.co[axis];
    }
-   else if( type == k_ent_challenge ){
+   else if( type == k_ent_challenge )
+   {
       ent_challenge *challenge = mdl_arritm( &world->ent_challenge, index );
       return challenge->transform.co[axis];
    }
-   else if( type == k_ent_glider ){
+   else if( type == k_ent_glider )
+   {
       ent_glider *glider = mdl_arritm( &world->ent_glider, index );
       return glider->transform.co[axis];
    }
-   else {
+   else if( type == k_ent_npc )
+   {
+      ent_npc *npc = mdl_arritm( &world->ent_npc, index );
+      return npc->transform.co[axis];
+   }
+   else 
+   {
       vg_fatal_error( "Programming error\n" );
       return INFINITY;
    }