Newer
Older
#pragma once
#include "cgp/cgp.hpp"
#include "environment.hpp"
#include "key_positions_structure.hpp"
#include "ball.hpp"
#include "bird.hpp"
#include "chain.hpp"
#include "bats.hpp"
#include "projectiles.hpp"
// This definitions allow to use the structures: mesh, mesh_drawable, etc. without mentionning explicitly cgp::
using cgp::mesh;
using cgp::mesh_drawable;
using cgp::vec3;
using cgp::numarray;
using cgp::timer_basic;
struct gui_parameters {
bool display_frame = true;
bool display_wireframe = false;
};
// The structure of the custom scene
struct scene_structure : cgp::scene_inputs_generic {
// ****************************** //
// Elements and shapes of the scene
// ****************************** //
camera_controller_first_person_euler camera_control;
camera_projection_perspective camera_projection;
window_structure window;
mesh_drawable global_frame; // The standard global frame
environment_structure environment; // Standard environment controler
input_devices inputs; // Storage for inputs status (mouse, keyboard, window dimension)
gui_parameters gui; // Standard GUI element storage
// ****************************** //
// Elements and shapes of the scene
// ****************************** //
cgp::mesh_drawable terrain;
cgp::mesh_drawable cyl;
cgp::mesh_drawable cone;
cgp::mesh_drawable tree;
cgp::mesh_drawable grass;
// Timer used for the animation
timer_basic timer_chain;
ball bouncing;
bird bird1;
chain chain1;
bats bats;
projectiles projectiles;
// ****************************** //
// Functions
// ****************************** //
void initialize(); // Standard initialization to be called before the animation loop
void display_frame(); // The frame display to be called within the animation loop
void display_gui(); // The display of the GUI, also called within the animation loop
void display_chain(vec3 end_pos);
//void display_bird(vec3 p);
void display_bats();
void mouse_move_event();
void mouse_click_event();
void keyboard_event();
void idle_frame();
bool scene_structure::test_dead(vec3 p);