Brunot
Loading...
Searching...
No Matches
Transform Class Referencefinal

#include <Transform.h>

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

Public Member Functions

 Transform ()
 Transform (const Transform &)
 Transform (Transform &&) noexcept
auto operator= (const Transform &rhs) -> Transform &=default
 ~Transform () override=default
auto parentTo (GameObject *newParent) -> bool override
 Sets the GameObject as a child of another GameObject.
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 (const 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 move (float x, float y) -> void
auto move (const Vector4D &vec) -> void
auto setX (float x) -> void
auto setY (float y) -> void
auto scale () const -> const Vector4D &
 Get the local scale ( this is normally what you want).
auto scale (const Vector4D &scale) -> void
 set the local scale ( this is normally what you want to do)
auto worldScale () -> Vector4D
 get the world scale (mostly accurate)
auto worldScale (const Vector4D &scale) -> void
 set the world scale
auto translation () const -> const Point2D &
 get the local translation (this is normally what you want)
auto translation (const Vector4D &translation) -> void
 set the local translation (this is what you normally want to do)
auto worldTranslation () -> Point2D
 get the world translation
auto worldTranslation (const Point2D &translation) -> void
 set the world translation
auto rotation () const -> float
 get the local rotation in degrees (this is what you normally want to do)
auto rotation (float rotation) -> void
 set the local rotation in degrees (this is what you normally want to do)
auto worldRotation () -> float
 get the world rotation in degrees
auto worldRotation (float rotation) -> void
 set the world rotation in degrees
auto matrix () -> AffineMatrix &
 get the world modeling matrix ( this is normally what you want )
auto setMatrix (AffineMatrix &newMat) -> void
auto makeMat3Rotation (float rotation) -> Eigen::Matrix3f
auto setRotationViaMatrix (AffineMatrix &newMat) -> void
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 onSceneStart (const std::string &sceneName) -> void
 Hook that is called before the first frame a scene is run, but after the entire scene is loaded into the engine To receive the hook, simply override the function in your class.
virtual auto onSceneExit (const std::string &sceneName) -> void
 Hook that is called right before a scene is unloaded To receive the hook, simply override the function in your class.
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.
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.
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 (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 (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 (bool _shouldReceiveMessages) -> void
 set whether the GameObject should Receive Messags, and whether all of it's children should receive messages
auto setActive (bool shouldBeActive) -> void
 set the GameObject should update, render, and receive messages

Private Member Functions

auto recalculateMatrix () -> void
 helper function for recalculating internal Matrix
auto internalMatrix () -> const AffineMatrix &
auto getParentTransform () const -> Transform *
 helper for grabbing parent transform
auto calculateAbsoluteMatrix () -> bool
 computes the absolute matrix, by getting parent entity's transform
auto getWorldRotationAndScale () -> Eigen::Matrix3f
 helper for getting approximate world scale
auto setGlobalRotationAndScale (const Eigen::Matrix3f &) -> void
 helper for setting rotation and scale based on a world rotation and scale matrix

Private Attributes

Vector4D _scale
float _rotation
Point2D _translation
bool isDirty
AffineMatrix _matrix
AffineMatrix _absoluteMatrix
 A matrix that holds the absolute transform of the component, after offsetting from parent Entities.

Friends

auto to_json (json &j, const Transform &p) ->void
auto from_json (const json &j, Transform &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 , cPlayerCountScene = 965 ,
  cPlayerJoinScene = 970 , cFlags = 1000 , cSelectable = 1100 , cMenu = 1200 ,
  cActionList = 1300 , cEntityMover = 1400 , cMenuItem = 1500 , cMenuPosition = 1525 ,
  cSelector = 1600 , cButton = 1700 , cParticleGenerator = 2500
}
 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.

Constructor & Destructor Documentation

◆ Transform() [1/3]

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

◆ Transform() [2/3]

Transform::Transform ( const Transform & rhs)
Here is the call graph for this function:

◆ Transform() [3/3]

Transform::Transform ( Transform && rhs)
noexcept
Here is the call graph for this function:

◆ ~Transform()

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

Member Function Documentation

◆ calculateAbsoluteMatrix()

auto Transform::calculateAbsoluteMatrix ( ) ->bool
private

computes the absolute matrix, by getting parent entity's transform

Returns
false if can't calculate absolute matrix, true if success
Here is the call graph for this function:
Here is the caller graph for this function:

◆ clone()

auto Transform::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:
Here is the caller graph for this function:

◆ componentShowMenu()

auto Transform::componentShowMenu ( ) ->void
overridevirtual

Reimplemented from Component.

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

◆ endWindow()

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

◆ getParentTransform()

auto Transform::getParentTransform ( ) const->Transform *
private

helper for grabbing parent transform

Returns
pointer to parent transform, or nullptr if there isn't one
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getWorldRotationAndScale()

auto Transform::getWorldRotationAndScale ( ) ->Eigen::Matrix3f
private

helper for getting approximate world scale

Returns
scale representing world rotation and scale (but not translation)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ internalMatrix()

auto Transform::internalMatrix ( ) ->constAffineMatrix &
private
Returns
a reference to the internal matrix, without the offset from parent Entities
Here is the call graph for this function:

◆ load()

auto Transform::load ( const 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.

◆ makeMat3Rotation()

auto Transform::makeMat3Rotation ( float rotation) ->Eigen::Matrix3f
Here is the call graph for this function:
Here is the caller graph for this function:

◆ matrix()

auto Transform::matrix ( ) ->AffineMatrix &

get the world modeling matrix ( this is normally what you want )

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

◆ move() [1/2]

auto Transform::move ( const Vector4D & vec) ->void

◆ move() [2/2]

auto Transform::move ( float x,
float y )->void

◆ onRender()

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

◆ operator=()

auto Transform::operator= ( const Transform & rhs) ->Transform &=default
default
Here is the call graph for this function:

◆ parentTo()

auto Transform::parentTo ( GameObject * newParent) ->bool
overridevirtual

Sets the GameObject as a child of another GameObject.

calls setInternalParent() by default, but can be overriden by GameObjects complicated parent requirements, like Entity. Validates pointer and requires type to be valid

Parameters
newParentthe GameObject that this GameObject will be a child of
Returns
whether parenting succeeded

calls setInternalParent() by default, can be overriden by complicated parent requirements, like Entity. Validates pointer and requires type to be valid

Parameters
newParentthe GameObject to parent to
Returns
whether parenting succeeded

Reimplemented from GameObject.

Here is the call graph for this function:

◆ recalculateMatrix()

auto Transform::recalculateMatrix ( ) ->void
private

helper function for recalculating internal Matrix

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

◆ rotation() [1/2]

auto Transform::rotation ( ) const->float

get the local rotation in degrees (this is what you normally want to do)

Here is the caller graph for this function:

◆ rotation() [2/2]

auto Transform::rotation ( float rotation) ->void

set the local rotation in degrees (this is what you normally want to do)

Here is the call graph for this function:

◆ save()

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

◆ scale() [1/2]

auto Transform::scale ( ) const->constVector4D &

Get the local scale ( this is normally what you want).

Here is the caller graph for this function:

◆ scale() [2/2]

auto Transform::scale ( const Vector4D & scale) ->void

set the local scale ( this is normally what you want to do)

Here is the call graph for this function:

◆ setGlobalRotationAndScale()

auto Transform::setGlobalRotationAndScale ( const Eigen::Matrix3f & rotationAndScale) ->void
private

helper for setting rotation and scale based on a world rotation and scale matrix

Parameters
rotationAndScalea matrix representing the world rotation and scale to set. The function will decompose this into local rotation and scale, and set those.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setMatrix()

auto Transform::setMatrix ( AffineMatrix & newMat) ->void
Here is the call graph for this function:

◆ setRotationViaMatrix()

auto Transform::setRotationViaMatrix ( AffineMatrix & newMat) ->void
Here is the call graph for this function:

◆ setX()

auto Transform::setX ( float x) ->void

◆ setY()

auto Transform::setY ( float y) ->void

◆ translation() [1/2]

auto Transform::translation ( ) const->constPoint2D &

get the local translation (this is normally what you want)

Here is the caller graph for this function:

◆ translation() [2/2]

auto Transform::translation ( const Vector4D & translation) ->void

set the local translation (this is what you normally want to do)

Here is the call graph for this function:

◆ worldRotation() [1/2]

auto Transform::worldRotation ( ) ->float

get the world rotation in degrees

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

◆ worldRotation() [2/2]

auto Transform::worldRotation ( float rotation) ->void

set the world rotation in degrees

Here is the call graph for this function:

◆ worldScale() [1/2]

auto Transform::worldScale ( ) ->Vector4D

get the world scale (mostly accurate)

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

◆ worldScale() [2/2]

auto Transform::worldScale ( const Vector4D & scale) ->void

set the world scale

Here is the call graph for this function:

◆ worldTranslation() [1/2]

auto Transform::worldTranslation ( ) ->Point2D

get the world translation

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

◆ worldTranslation() [2/2]

auto Transform::worldTranslation ( const Point2D & translation) ->void

set the world translation

Here is the call graph for this function:

◆ from_json

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

◆ to_json

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

Member Data Documentation

◆ _absoluteMatrix

AffineMatrix Transform::_absoluteMatrix
private

A matrix that holds the absolute transform of the component, after offsetting from parent Entities.

◆ _matrix

AffineMatrix Transform::_matrix
private

◆ _rotation

float Transform::_rotation
private

◆ _scale

Vector4D Transform::_scale
private

◆ _translation

Point2D Transform::_translation
private

◆ isDirty

bool Transform::isDirty
private

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