|
|
|
@ -55,6 +55,39 @@ loadLights(RenderState* rs) |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool |
|
|
|
|
|
|
|
loadSpaceShip(RenderState* rs) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
Model* ship = getModelByPath(&rs->assets, "../data/spaceship.gltf"); |
|
|
|
|
|
|
|
if (!ship) |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ShaderProgram* shader_lit = getShaderByName("full_lighting", rs->gl_ctx); |
|
|
|
|
|
|
|
if (!shader_lit) |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// load model into gl
|
|
|
|
|
|
|
|
RenderGroup* rg = getFreeRenderGroup(rs); |
|
|
|
|
|
|
|
assert(rs); |
|
|
|
|
|
|
|
initRenderGroup(rg, rs->rg_arena, shader_lit, 256, "ships"); |
|
|
|
|
|
|
|
Entity* e = getFreeEntity(rg); |
|
|
|
|
|
|
|
assert(e); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (initEntity(e, rs->gl_ctx, |
|
|
|
|
|
|
|
rs->rg_arena, |
|
|
|
|
|
|
|
ship, |
|
|
|
|
|
|
|
shader_lit->num_vertex_attribs, |
|
|
|
|
|
|
|
shader_lit->attrib_mappings, |
|
|
|
|
|
|
|
"ship 01")) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
setEntityPosition(e, glm::vec3(0, -10, -15)); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool |
|
|
|
bool |
|
|
|
loadScene(RenderState* rs) |
|
|
|
loadScene(RenderState* rs) |
|
|
|
{ |
|
|
|
{ |
|
|
|
@ -107,6 +140,12 @@ loadScene(RenderState* rs) |
|
|
|
scaleEntity(e, 3); |
|
|
|
scaleEntity(e, 3); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// NOTE: testing an entity with multiple meshes
|
|
|
|
|
|
|
|
#if 0 |
|
|
|
|
|
|
|
if (!loadSpaceShip(rs)) |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
// NOTE: initilize the 'camera'
|
|
|
|
// NOTE: initilize the 'camera'
|
|
|
|
glm::vec3 cam_pos = { 0, 15, 40 }; |
|
|
|
glm::vec3 cam_pos = { 0, 15, 40 }; |
|
|
|
glm::vec3 look_pos = { 0, 0, 0 }; |
|
|
|
glm::vec3 look_pos = { 0, 0, 0 }; |
|
|
|
|