Brunot
Loading...
Searching...
No Matches
Sprite Class Reference

A component that renders an image on an entity, or text. More...

#include <Sprite.h>

Inheritance diagram for Sprite:
[legend]
Collaboration diagram for Sprite:
[legend]

Public Member Functions

 Sprite ()
 Sprite (const std::string &shaderName, const std::string &textureName="", const std::string &meshName="1x1_mesh")
 create a sprite based on which files to load
 Sprite (const Sprite &)=default
 ~Sprite () override=default
auto clone () const -> std::unique_ptr< GameObject > override
 makes a copy a GameObject even if it's held polymorphically
auto componentShowMenu () -> void override
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 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 show () -> void
auto hide () -> void
auto shown () const -> bool
auto showWireframe () -> void
auto hideWireframe () -> void
auto isWireframe () const -> bool
auto showFaces () -> void
auto hideFaces () -> void
auto isFaces () const -> bool
auto setFrameIndex (unsigned int index) -> void
auto color () -> Vector4D &
auto color () const -> const Vector4D &
auto getText () const -> std::string
auto setText (std::string text) -> void
auto setMesh (Mesh *newMesh) -> void
auto setShader (Shader *newShader) -> void
auto setTexture (Texture *newTexture) -> void
auto getMesh () const -> const Mesh *
auto getShader () const -> const Shader *
auto getTexture () const -> const Texture *
Public Member Functions inherited from Component
auto getType () const -> ComponentTypeEnum
auto getKey () const -> Key override
 Generates a unique Key that corresponds to the GameObject.
auto showMenu () -> void override
 Called before update each frame, for calling ImGui editor code relevant to the gameObject.
auto getEntityParent () const -> Entity *
 gets the parent as an Entity.
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 onEnterEngine () -> void
 hook that is called when a GameObject enters the Engine tree.
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 getParent () const -> GameObject *
 Gets the parent of a GameObject.
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

Private Member Functions

auto drawDebugLines (AffineMatrix transform) -> void
 helper functions to draw bounding boxes for sprites
auto drawMeshStandard (const AffineMatrix &transform) -> void
 helper function to render mesh normaly
auto drawMeshText (Transform &transform) const -> void
 helper functions to draw the sprite in text mode.

Private Attributes

bool visible {true}
bool renderLines {false}
bool renderFaces {true}
unsigned int frameIndex {0}
Vector4D multColor {1.f, 1.f, 1.f, 1.f}
Meshmesh = nullptr
Shadershader = nullptr
Texturetexture = nullptr
std::string text
unsigned maxLineCharLength = 30

Friends

auto to_json (json &j, const Sprite &p) ->void
auto from_json (const json &j, Sprite &p) ->void

Additional Inherited Members

Public Types inherited from Component
enum  ComponentTypeEnum : unsigned short {
  cErrorType = 0 , cPhysics = 100 , cAnimation = 200 , cTransform = 300 ,
  cCollider = 400 , cSprite = 500 , cBehavior = 600 , cTable = 650 ,
  cCard = 700 , cDeck = 750 , cPlayer = 800 , cBoard = 850 ,
  cScene = 900 , cPauseScene = 915 , cMainScene = 920 , cMainMenuScene = 925 ,
  cConfirmDestructiveActionScene = 930 , cOptionsScene = 935 , cCreditsScene = 940 , cTutorialScene = 945 ,
  cBackground = 950 , cSplashScreenScene = 955 , cWinScreenScene = 960 , cFlags = 1000 ,
  cSelectable = 1100 , cMenu = 1200 , cActionProxy = 1300 , cEntityMover = 1400 ,
  cMenuItem = 1500 , cMenuPosition = 1525 , cSelector = 1600 , cButton = 1700
}
 This enum lists out every type of component we have. More...
Public Attributes inherited from GameObject
friend Entity
friend Node
friend ChildrenHandeler
friend Engine
Protected Member Functions inherited from Component
 Component (ComponentTypeEnum type, const char *typeName)
auto getComponentJson () const -> json
auto getChildren () const -> std::shared_ptr< std::vector< GameObject * > > override
 override for component to return a vector of no children
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
auto checkAddToSceneHook () -> void
 Determine if the GameObject was recently added to the engine, and if it was, call onEngineEnter.

Detailed Description

A component that renders an image on an entity, or text.

To render text, set the texture to a font texture, (start with a volkhorn) and set the mesh to 16x6 mesh, then type into the text field in ImGui. You might want to toggle keyboard input off in the Input system (in ImGui) to not trigger any keybindings while typing

Constructor & Destructor Documentation

◆ Sprite() [1/3]

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

◆ Sprite() [2/3]

Sprite::Sprite ( const std::string & shaderName,
const std::string & textureName = "",
const std::string & meshName = "1x1_mesh" )

create a sprite based on which files to load

Parameters
shaderNamethe name of the shader to load
textureNamethe name of the texture to load, leave blank for "": no texture
meshNamethe name of the mesh to load. leave blank for 1x1_mesh
Here is the call graph for this function:

◆ Sprite() [3/3]

Sprite::Sprite ( const Sprite & )
default
Here is the call graph for this function:

◆ ~Sprite()

Sprite::~Sprite ( )
overridedefault
Here is the call graph for this function:

Member Function Documentation

◆ clone()

auto Sprite::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:

◆ color() [1/2]

auto Sprite::color ( ) ->Vector4D &
Here is the caller graph for this function:

◆ color() [2/2]

auto Sprite::color ( ) const->constVector4D &
nodiscard

◆ componentShowMenu()

auto Sprite::componentShowMenu ( ) ->void
overridevirtual
Todo
: it edits both of the sprites at the same time

Reimplemented from Component.

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

◆ drawDebugLines()

auto Sprite::drawDebugLines ( AffineMatrix transform) ->void
private

helper functions to draw bounding boxes for sprites

Parameters
transformtransform of the object to draw bounding boxes around
Here is the call graph for this function:
Here is the caller graph for this function:

◆ drawMeshStandard()

auto Sprite::drawMeshStandard ( const AffineMatrix & transform) ->void
private

helper function to render mesh normaly

Here is the caller graph for this function:

◆ drawMeshText()

auto Sprite::drawMeshText ( Transform & transform) const->void
private

helper functions to draw the sprite in text mode.

activated if text is not null

Parameters
transformreference to the transform component of the Entity
Here is the call graph for this function:
Here is the caller graph for this function:

◆ endWindow()

auto Sprite::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:

◆ getMesh()

auto Sprite::getMesh ( ) const->constMesh *

◆ getShader()

auto Sprite::getShader ( ) const->constShader *

◆ getText()

auto Sprite::getText ( ) const->std::string
nodiscard

◆ getTexture()

auto Sprite::getTexture ( ) const->constTexture *

◆ hide()

auto Sprite::hide ( ) ->void

◆ hideFaces()

auto Sprite::hideFaces ( ) ->void

◆ hideWireframe()

auto Sprite::hideWireframe ( ) ->void

◆ isFaces()

auto Sprite::isFaces ( ) const->bool
nodiscard

◆ isWireframe()

auto Sprite::isWireframe ( ) const->bool
nodiscard

◆ load()

auto Sprite::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.

◆ onRender()

auto Sprite::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 Sprite::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 caller graph for this function:

◆ save()

auto Sprite::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.

◆ setFrameIndex()

auto Sprite::setFrameIndex ( unsigned int index) ->void

◆ setMesh()

auto Sprite::setMesh ( Mesh * newMesh) ->void

◆ setShader()

auto Sprite::setShader ( Shader * newShader) ->void

◆ setText()

auto Sprite::setText ( std::string text) ->void

◆ setTexture()

auto Sprite::setTexture ( Texture * newTexture) ->void
Here is the caller graph for this function:

◆ show()

auto Sprite::show ( ) ->void

◆ showFaces()

auto Sprite::showFaces ( ) ->void

◆ shown()

auto Sprite::shown ( ) const->bool
nodiscard

◆ showWireframe()

auto Sprite::showWireframe ( ) ->void

◆ from_json

auto from_json ( const json & j,
Sprite & p )->void
friend

◆ to_json

auto to_json ( json & j,
const Sprite & p )->void
friend

Member Data Documentation

◆ frameIndex

unsigned int Sprite::frameIndex {0}
private

◆ maxLineCharLength

unsigned Sprite::maxLineCharLength = 30
private

◆ mesh

Mesh* Sprite::mesh = nullptr
private

◆ multColor

Vector4D Sprite::multColor {1.f, 1.f, 1.f, 1.f}
private

◆ renderFaces

bool Sprite::renderFaces {true}
private

◆ renderLines

bool Sprite::renderLines {false}
private

◆ shader

Shader* Sprite::shader = nullptr
private

◆ text

std::string Sprite::text
private

◆ texture

Texture* Sprite::texture = nullptr
private

◆ visible

bool Sprite::visible {true}
private

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