Brunot
Loading...
Searching...
No Matches
sys::OpenGL Class Reference

#include <opengl.h>

Inheritance diagram for sys::OpenGL:
[legend]
Collaboration diagram for sys::OpenGL:
[legend]

Public Member Functions

 OpenGL ()
 ~OpenGL () override
auto clone () const -> std::unique_ptr< GameObject > override
 makes a copy a GameObject even if it's held polymorphically
auto onUpdate (float dt) -> void override
 called once every frame.
auto endWindow () -> void override
 currently unused, but intended to but was assumed to be necessary for a proper ImGui editor
auto onRender () -> void override
 called every frame after update has been called for every object.
auto onEnterEngine () -> void override
 hook that is called when a GameObject enters the Engine tree.
auto load (Stream &stream) -> void override
 Implementations will load the state of a GameObject from a th::Json Object.
auto save (Stream &stream) const -> void override
 Implementations will load the state of a GameObject to a th::Json object.
auto getWindow () const -> GLFWwindow *
auto getTextureID () const -> GLuint
auto bindFrameBuffer () -> void
 bind framebuffer for ImGui Viewport
auto unbindFrameBuffer () -> void
 unbind framebuffer for ImGui Viewport
auto createFrameBuffer () -> void
 create framebuffer for ImGui Viewport
auto rescaleFrameBuffer () -> void
 rescale framebuffer for ImGui Viewport based on sys::opengl width and height
auto finishFrame () const -> void
auto getWidth () const -> int
auto getHeight () const -> int
auto setWidth (int width) -> void
auto setHeight (int height) -> void
Public Member Functions inherited from System
auto showMenu () -> void override
 Called before update each frame, for calling ImGui editor code relevant to the gameObject.
auto getKey () const -> Key override
 Generates a unique Key that corresponds to the GameObject.
auto getParent () const -> GameObject *override
 Gets the parent of a GameObject.
Public Member Functions inherited from GameObject
 GameObject (std::string typeName, gobj::Type parentType, gobj::Type type)
 constructor for gameobject.
virtual ~GameObject ()
 destructor for GameObject.
 GameObject (const GameObject &other)
 Copy Constructor.
auto operator= (const GameObject &other) -> GameObject &
 copy assignment operator
 GameObject (GameObject &&other) noexcept
 Move constructor.
auto operator= (GameObject &&other) noexcept -> GameObject &
 Move assignment operator.
virtual auto update (float dt) -> void
 called once every frame.
virtual auto render () -> void
 called every frame after update has been called for every object.
virtual auto destroy () -> void
 Marks an GameObject to be destroyed.
virtual auto for_each (std::function< void(GameObject &)> func) -> void
 applies a function to every child.
virtual auto for_each (std::function< void(const GameObject &)> func) const -> void
 applies a const function to every child.
virtual auto parentTo (GameObject *newParent) -> bool
 Sets the GameObject as a child of another GameObject.
auto getInternalParent () const -> GameObject *
 returns the actual owning parent of the GameObject
virtual auto addChild (std::unique_ptr< GameObject > newChild) -> bool
 Adds a child to a GameObject.
auto destroyed () const -> bool
auto getUUID () const -> gobj::UUID
auto isUUID (gobj::UUID compareUUID) const -> bool
auto getName () const -> const std::string &
 Gets the type of the object as a string.
auto getNickname () const -> const std::string &
 Gets the nickname (custom, writable name) of a GameObject.
void calculateFormattedName () const
auto getFormattedName () const -> const std::string &
 combines a GameObjects Type, Nickname, and UUID into one string, for use with logging.
auto nameEquals (const std::string &compareString) const -> bool
 check whether a GameObjects typeName is equivilent to a given string.
auto isType (gobj::Type otherType) const -> bool
 check whether the GameObject is the same as a given type.
auto getObjectType () const -> gobj::Type
 gets the internal type of the GameObject, as an enum
auto setNickname (const std::string &newNickname) -> void
 sets the GameObjects nickname.
auto updates () const -> bool
auto renders () const -> bool
auto receivesMessages () const -> bool
auto isActive () const -> bool
virtual auto setShouldUpdate (const bool _shouldUpdate) -> void
 set whether the GameObject should update every frame, and whether all of it's children should update every frame
virtual auto setShouldRender (const bool _shouldRender) -> void
 set whether the GameObject should render every frame, and whether all of it's children should render every frame
virtual auto setShouldReceiveMessages (const bool _shouldReceiveMessages) -> void
 set whether the GameObject should Receive Messags, and whether all of it's children should receive messages
auto setActive (const bool shouldBeActive) -> void
 set the GameObject should update, render, and receive messages

Static Public Member Functions

static auto getEnum () -> Type
 function required by all systems

Protected Member Functions

auto systemShowMenu () -> void override
 Specific systems should override this function to show their specific menu for the system.
Protected Member Functions inherited from System
 System (const std::string &typeName, Type systemType)
Protected Member Functions inherited from GameObject
auto setInternalParent (GameObject *parent) -> bool
 sets the internal parent of a GameObject directly, avoiding abstractions provided by ParentTo().
auto getGameObjectJson () const -> json
 Used for serializing GameObjects.
auto setGameObjectJson (const json &stream) -> void
 used for deserializing GameObjects
virtual auto getChildren () const -> std::shared_ptr< std::vector< GameObject * > >
 gets a vector of a GameObjects public (i.e.
auto checkAddToSceneHook () -> void
 Determine if the GameObject was recently added to the engine, and if it was, call onEngineEnter.

Private Member Functions

auto createMesh () -> void
auto setShaderUniforms () const -> void
auto linkMessages () -> void
 linking message
auto receiveToggleWindowedFullScreen (const Message *message) -> Message
 message for toggling fullscreen

Static Private Member Functions

static auto lookAt (const Eigen::Vector3f &eye, Eigen::Vector3f center, Eigen::Vector3f up) -> Eigen::Matrix4f
static auto draw (GLuint shader, float scale, float rotation, Eigen::Vector4f position, GLuint mesh, int vertexCount, GLuint texture)

Private Attributes

GLFWwindow * windowHandle
GLFWmonitor * monitorHandle {nullptr}
 monitor handle if it is in null its in windowed mode and if its not it will go into fullscreen its just
const GLFWvidmode * videoMode
int width {default_window_width}
int height {default_window_height}
std::unique_ptr< GLFWimage > windowIcon
GLuint colorShader = 0
 The following are test variables for test opengl.
GLuint textureShader = 0
 ID for the shader which handleds textures.
GLuint meshID = 0
 ID for the mesh.
GLuint meshVertexBufferID = 0
 ID for the vertex buffer associated with the mesh.
int meshVertexCount = 0
 number of vertices in the mesh
GLuint textureID = 0
 ID for the texture for custom frameBuffer.
GLuint frameBuffer = 0
 ID for the custom framebuffer.
GLuint renderBuffer = 0
 ID for the custom renderBuffer.
Eigen::Vector4f cardPosition {150.f, -20.f, 0.f, 1.f}
const char * ColorShaderFile = "source/Shaders/Frag/color.frag"
const char * TextureShaderFile = "source/Shaders/Frag/texture.frag"
const char * VertexShaderFile = "source/Shaders/Vert/default.vert"
const char * cardFile = "Assets/cards/40x60_card.png"
float backgroundRedVal = 0.1f
float backgroundGreenVal = 0.1f
float backgroundBlueVal = 0.1f

Additional Inherited Members

Public Types inherited from System
enum class  Type : unsigned short {
  system_error_type = 0 , newSystemStub = 100 , OpenGL = 200 , Input = 300 ,
  Editor = 400 , Messaging = 500 , Camera = 600 , Logging = 700 ,
  AudioSystem = 750 , Scoring = 800 , HandSystem = 900 , SceneManager = 1000 ,
  ActionList = 1100 , DebugDraw = 1150 , TestRunner = 1200 , ColliderSystem = 1300
}
Public Attributes inherited from GameObject
friend Entity
friend Node
friend ChildrenHandeler
friend Engine

Constructor & Destructor Documentation

◆ OpenGL()

sys::OpenGL::OpenGL ( )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ~OpenGL()

sys::OpenGL::~OpenGL ( )
override
Here is the call graph for this function:

Member Function Documentation

◆ bindFrameBuffer()

auto sys::OpenGL::bindFrameBuffer ( ) ->void

bind framebuffer for ImGui Viewport

◆ clone()

auto sys::OpenGL::clone ( ) const->std::unique_ptr< GameObject >
overridevirtual

makes a copy a GameObject even if it's held polymorphically

Warning
When overriding this function, make sure to set the parents object to this
Returns
a unique_ptr to a new stack allocated object that is a copy of the object

Implements GameObject.

Here is the call graph for this function:

◆ createFrameBuffer()

auto sys::OpenGL::createFrameBuffer ( ) ->void

create framebuffer for ImGui Viewport

Here is the call graph for this function:
Here is the caller graph for this function:

◆ createMesh()

auto sys::OpenGL::createMesh ( ) ->void
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ draw()

auto sys::OpenGL::draw ( GLuint shader,
float scale,
float rotation,
Eigen::Vector4f position,
GLuint mesh,
int vertexCount,
GLuint texture )
staticprivate
Here is the call graph for this function:
Here is the caller graph for this function:

◆ endWindow()

auto sys::OpenGL::endWindow ( ) ->void
inlineoverridevirtual

currently unused, but intended to but was assumed to be necessary for a proper ImGui editor

Implements GameObject.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ finishFrame()

auto sys::OpenGL::finishFrame ( ) const->void

◆ getEnum()

auto sys::OpenGL::getEnum ( ) ->Type
inlinestatic

function required by all systems

◆ getHeight()

auto sys::OpenGL::getHeight ( ) const->int
nodiscard
Here is the caller graph for this function:

◆ getTextureID()

auto sys::OpenGL::getTextureID ( ) const->GLuint

◆ getWidth()

auto sys::OpenGL::getWidth ( ) const->int
nodiscard
Here is the caller graph for this function:

◆ getWindow()

auto sys::OpenGL::getWindow ( ) const->GLFWwindow *

◆ linkMessages()

auto sys::OpenGL::linkMessages ( ) ->void
private

linking message

Here is the call graph for this function:
Here is the caller graph for this function:

◆ load()

auto sys::OpenGL::load ( Stream & stream) ->void
overridevirtual

Implementations will load the state of a GameObject from a th::Json Object.

Unimplemented in GameObject

Parameters
streamth::Json Object

Implements GameObject.

◆ lookAt()

auto sys::OpenGL::lookAt ( const Eigen::Vector3f & eye,
Eigen::Vector3f center,
Eigen::Vector3f up )->Eigen::Matrix4f
staticprivate

◆ onEnterEngine()

auto sys::OpenGL::onEnterEngine ( ) ->void
overridevirtual

hook that is called when a GameObject enters the Engine tree.

The hook is called immedietly after a gameobject's parent is called. Functionality may not be correct if an object was removed from the engine then re-added

Reimplemented from GameObject.

Here is the call graph for this function:

◆ onRender()

auto sys::OpenGL::onRender ( ) ->void
overridevirtual

called every frame after update has been called for every object.

Generally used for rendering an object to the screen, when applicable. Unimplemented in GameObject

Implements GameObject.

Here is the call graph for this function:

◆ onUpdate()

auto sys::OpenGL::onUpdate ( float dt) ->void
overridevirtual

called once every frame.

Generally used for timers, movement, condition checks, etc. Unimplemented in GameObject

Parameters
dtthe time in seconds that has elapsed

Implements GameObject.

Here is the call graph for this function:

◆ receiveToggleWindowedFullScreen()

auto sys::OpenGL::receiveToggleWindowedFullScreen ( const Message * message) ->Message
private

message for toggling fullscreen

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rescaleFrameBuffer()

auto sys::OpenGL::rescaleFrameBuffer ( ) ->void

rescale framebuffer for ImGui Viewport based on sys::opengl width and height

Here is the call graph for this function:

◆ save()

auto sys::OpenGL::save ( Stream & stream) const->void
overridevirtual

Implementations will load the state of a GameObject to a th::Json object.

Unimplemented in GameObject

Parameters
streamth::Json Object

Implements GameObject.

◆ setHeight()

auto sys::OpenGL::setHeight ( int height) ->void

◆ setShaderUniforms()

auto sys::OpenGL::setShaderUniforms ( ) const->void
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setWidth()

auto sys::OpenGL::setWidth ( int width) ->void

◆ systemShowMenu()

auto sys::OpenGL::systemShowMenu ( ) ->void
overrideprotectedvirtual

Specific systems should override this function to show their specific menu for the system.

Reimplemented from System.

Here is the call graph for this function:

◆ unbindFrameBuffer()

auto sys::OpenGL::unbindFrameBuffer ( ) ->void

unbind framebuffer for ImGui Viewport

Member Data Documentation

◆ backgroundBlueVal

float sys::OpenGL::backgroundBlueVal = 0.1f
private

◆ backgroundGreenVal

float sys::OpenGL::backgroundGreenVal = 0.1f
private

◆ backgroundRedVal

float sys::OpenGL::backgroundRedVal = 0.1f
private

◆ cardFile

const char* sys::OpenGL::cardFile = "Assets/cards/40x60_card.png"
private

◆ cardPosition

Eigen::Vector4f sys::OpenGL::cardPosition {150.f, -20.f, 0.f, 1.f}
private

◆ colorShader

GLuint sys::OpenGL::colorShader = 0
private

The following are test variables for test opengl.

ID for the shader taht only applies color

◆ ColorShaderFile

const char* sys::OpenGL::ColorShaderFile = "source/Shaders/Frag/color.frag"
private

◆ frameBuffer

GLuint sys::OpenGL::frameBuffer = 0
private

ID for the custom framebuffer.

◆ height

int sys::OpenGL::height {default_window_height}
private

◆ meshID

GLuint sys::OpenGL::meshID = 0
private

ID for the mesh.

◆ meshVertexBufferID

GLuint sys::OpenGL::meshVertexBufferID = 0
private

ID for the vertex buffer associated with the mesh.

◆ meshVertexCount

int sys::OpenGL::meshVertexCount = 0
private

number of vertices in the mesh

◆ monitorHandle

GLFWmonitor* sys::OpenGL::monitorHandle {nullptr}
private

monitor handle if it is in null its in windowed mode and if its not it will go into fullscreen its just

◆ renderBuffer

GLuint sys::OpenGL::renderBuffer = 0
private

ID for the custom renderBuffer.

◆ textureID

GLuint sys::OpenGL::textureID = 0
private

ID for the texture for custom frameBuffer.

◆ textureShader

GLuint sys::OpenGL::textureShader = 0
private

ID for the shader which handleds textures.

◆ TextureShaderFile

const char* sys::OpenGL::TextureShaderFile = "source/Shaders/Frag/texture.frag"
private

◆ VertexShaderFile

const char* sys::OpenGL::VertexShaderFile = "source/Shaders/Vert/default.vert"
private

◆ videoMode

const GLFWvidmode* sys::OpenGL::videoMode
private

◆ width

int sys::OpenGL::width {default_window_width}
private

◆ windowHandle

GLFWwindow* sys::OpenGL::windowHandle
private

◆ windowIcon

std::unique_ptr<GLFWimage> sys::OpenGL::windowIcon
private

The documentation for this class was generated from the following files:
  • /home/egrazil/sites/Brunot/The House/source/System/opengl.h
  • /home/egrazil/sites/Brunot/The House/source/System/opengl.cpp