ELEC2645 (2018/19) / Mbed 2 deprecated el17cd

Dependencies:   mbed

Cube/Cube.h

Committer:
el17cd
Date:
2019-04-05
Revision:
32:9c250eda7f3f
Parent:
25:3995271e411c
Child:
34:5cb9b4d01f5c

File content as of revision 32:9c250eda7f3f:

#include "mbed.h"
#ifndef FACE_H
#define FACE_H
#include "Face.h"
#endif

/** Cube class
*@brief A class used to instantiate a cube object, this is the obstacle in the game
*@author Christopher Doel
*@date April, 2019
*/
class Cube {
  private:
    float verticies[8][3];
    Face faces[6];
    float xPos, yPos, zPos;
    void updateFacesVerticies(float (&vert)[8][3]);
    /** @brief sets the verticies of all the cubes faces depending on the location and size of the cube
    *@param The memory address of the two dimentional float array which stores all x, y, z coordinates for each 8 verticies
    */
    void assignFacesVerticies(float (&face0Points)[4][3],
    float (&face1Points)[4][3], float (&face2Points)[4][3],
    float (&face3Points)[4][3], float (&face4Points)[4][3],
    float (&face5Points)[4][3]);
    /** @brief sets the verticies of an individual face of the cube
    *@param The memory address of the two dimentional float array which stores all x, y, z coordinates for the first face verticies
    *@param The memory address of the two dimentional float array which stores all x, y, z coordinates for the second face verticies
    *@param The memory address of the two dimentional float array which stores all x, y, z coordinates for the third face verticies
    *@param The memory address of the two dimentional float array which stores all x, y, z coordinates for the fourth face verticies
    *@param The memory address of the two dimentional float array which stores all x, y, z coordinates for the fifth face verticies
    *@param The memory address of the two dimentional float array which stores all x, y, z coordinates for the sixth faces verticies
    */
  public:
    Cube();
    /**brief The constructor of the Cube class which instantiates the cube object.
    *No parameters are required as the cube is initially created with a size of 5 and a position at the origin.
    */
    Face getFace(int index);
    /** @brief An accessor method which gets a face of the cube depending on the index provided
    *@param The integer index of the face required
    *@returns A face object corresponding to the index provided
    */
    void setVisible();
    /** @brief Sets the faces of the cube to be visible so that they will be rendered
    */
    bool tooClose();
    /** @brief Returns whether the cube is too close to the perspective of the user
    *@returns a boolean indicating whether it is too close or not
    */
    void rotateX(float angle);
    /** @brief Performs a rotation in the X axis about the cubes centre
    *@param The angle in which to rotate the cube in terms of radians, provided as a float
    */
    void rotateY(float angle);
    /** @brief Performs a rotation in the Y axis about the cubes centre
    *@param The angle in which to rotate the cube in terms of radians, provided as a float
    */
    void rotateZ(float angle);
    /** @brief Performs a rotation in the Z axis about the cubes centre
    *@param The angle in which to rotate the cube in terms of radians, provided as a float
    */
    void translate(float x, float y, float z);
    /** @brief Performs a translation in all axis
    *@param The x offset
    *@param The y offset
    *@param The z offset
    */
    void resetPos();
    /** @brief Resets the position of the cube to the origin
    */
    bool despawn();
    /** @brief Returns whether the cube is behind the users perspective
    *@returns a boolean value as to whether it should be despawned or not
    */
};