Container that allows us to directly modify model matrix of its child. Usable both in UI compositing and in world views. More...

#include <Transform.hpp>

Public Member Functions

 Transform (Instance *inst)
 
void status (iv::TableDebugView *view)
 
Transformposition (float3)
 
Transformrotation (floatQuat)
 
Transformscale (float3)
 
Transformdeformation (float4x4)
 
TransformouterAnchor (float3)
 
TransforminnerAnchor (float3)
 
TransformpropagateSize (bool)
 
Instanceinstance () const
 
- Public Member Functions inherited from iv::OneChildElem< SlotChild >
 OneChildElem (Instance *inst)
 
 ~OneChildElem ()
 
T * createChild (CArgs const &... cargs)
 
T * createChild_Instance (char const *name, CArgs const &... cargs)
 
void setChild (SlotChild *)
 
void removeChild ()
 
- Public Member Functions inherited from iv::Elem
 Elem (Instance *inst)
 
 ~Elem ()
 
void status (iv::TableDebugView *view)
 
Instanceinstance () const
 
void elem_setParent (Elem *)
 
Elemelem_getParent ()
 
virtual Cameraelem_getRoot ()
 
void first_pass (ElementRenderer *)
 
void second_pass (ElementRenderer *)
 
unsigned first_pass_frame_id ()
 
unsigned second_pass_frame_id ()
 
Elemenabled (bool val)
 
void quiet (bool)
 
bool quiet () const
 
float3 FromLocalSpaceToScreenSpace (float3 local_space)
 
float3 FromScreenSpaceToLocalSpace (float3 screen_space)
 
float2 FromScreenPlaneToLocalPlane (float2 screen_space)
 
void Add_InputNode (InputNode *node)
 
void Remove_InputNode (InputNode *node)
 
- Public Member Functions inherited from iv::InputNode
 InputNode (Instance *inst)
 
 ~InputNode ()
 
Instanceinstance () const
 
void status (iv::TableDebugView *view)
 
void inputEnabled (bool)
 
bool inputEnabled ()
 
void quiet (bool)
 
bool quiet () const
 
void input_deactivate ()
 
void input_treeRefresh ()
 
void input_setParent (InputNode *)
 
InputNodeinput_getParent ()
 
virtual InputRootinput_getRoot ()
 
bool input_trigger_visit (InputRoot *root, Input::DeviceKey key)
 
bool input_visit (InputRoot *root, Input::DeviceKey key, bool &press, bool &real, bool &offspace)
 
- Public Member Functions inherited from iv::SlotChild
 SlotChild (Elem *elem)
 
Instanceinstance () const
 
void status (iv::TableDebugView *view)
 
virtual bool picking_test (int2 input_pos) override
 
virtual bool picking_test_pixel_perfect (float2 local_pos)
 
- Public Member Functions inherited from iv::Pickable
 Pickable (Elem *elem)
 
Elemelem ()
 
const Elemelem () const
 

Public Attributes

ClientMarker cm
 
DirtyAttr< float3attr_position
 
DirtyAttr< floatQuatattr_rotation
 
DirtyAttr< float3attr_scale
 
DirtyAttr< float4x4attr_deformation
 
DirtyAttr< float3attr_outerAnchor
 
DirtyAttr< float3attr_innerAnchor
 
DirtyAttr< bool > attr_propagateSize
 
- Public Attributes inherited from iv::OneChildElem< SlotChild >
ClientMarker cm
 
- Public Attributes inherited from iv::Elem
ClientMarker cm
 
DirtyAttr< bool > attr_enabled
 
DirtyAttr< float4x4modelTransform
 
DirtyAttr< ShaderScissorscissor
 
- Public Attributes inherited from iv::InputNode
ClientMarker cm
 
- Public Attributes inherited from iv::SlotChild
ClientMarker cm
 
DirtyAttr< float3expectedSize
 
DirtyAttr< float3preferredSize
 
DirtyAttr< float3size
 
- Public Attributes inherited from iv::Pickable
ClientMarker cm
 

Protected Member Functions

virtual void first_pass_impl (ElementRenderer *er) override
 
virtual void second_pass_impl (ElementRenderer *er) override
 
- Protected Member Functions inherited from iv::OneChildElem< SlotChild >
virtual void elem_eachChild (std::function< void(Elem *) > const &) override
 
virtual void elem_childDisconnect (Elem *) override
 
virtual void input_eachChild (std::function< void(InputNode *) > const &f) override
 
virtual void input_childDisconnect (InputNode *child) override
 
- Protected Member Functions inherited from iv::InputNode
virtual bool input_trigger_process (InputRoot *root, Input::DeviceKey key)
 
virtual void input_process (InputRoot *root, Input::DeviceKey key, bool &press, bool &real, bool &offspace)
 

Additional Inherited Members

- Protected Attributes inherited from iv::OneChildElem< SlotChild >
DirtyAttr< SlotChild * > child
 

Detailed Description

Container that allows us to directly modify model matrix of its child. Usable both in UI compositing and in world views.

Works in two modes, depending on value of Transform::propagateSize:

  1. When Transform::propagateSize is set to true, then Transform behaves basically like Slot that can have only one child and it can apply transform to child without either parent or the child really knowing about it. Transform does not step into SlotChild::size negotiation between parent and child node. This mode is useful for UI composition.
  2. When Transform::propagateSize is set to false, then Transform does not even try to fit child into parent container. SlotChild::preferredSize 0 is requested from parent and child gets its requested SlotChild::preferredSize. This mode is useful in world views, when child node does not necessarily need to fit inside parent node.

Definition at line 19 of file Transform.hpp.

Constructor & Destructor Documentation

◆ Transform()

iv::Transform::Transform ( Instance inst)

Definition at line 8 of file Transform.cpp.

Member Function Documentation

◆ status()

void iv::Transform::status ( iv::TableDebugView view)

Definition at line 25 of file Transform.cpp.

◆ position()

Transform * iv::Transform::position ( float3  val)

Definition at line 165 of file Transform.cpp.

◆ rotation()

Transform * iv::Transform::rotation ( floatQuat  val)

Definition at line 171 of file Transform.cpp.

◆ scale()

Transform * iv::Transform::scale ( float3  val)

Definition at line 177 of file Transform.cpp.

◆ deformation()

Transform * iv::Transform::deformation ( float4x4  val)

Definition at line 183 of file Transform.cpp.

◆ outerAnchor()

Transform * iv::Transform::outerAnchor ( float3  val)

Definition at line 189 of file Transform.cpp.

◆ innerAnchor()

Transform * iv::Transform::innerAnchor ( float3  val)

Definition at line 195 of file Transform.cpp.

◆ propagateSize()

Transform * iv::Transform::propagateSize ( bool  val)

Definition at line 201 of file Transform.cpp.

◆ first_pass_impl()

void iv::Transform::first_pass_impl ( ElementRenderer er)
overrideprotectedvirtual

Implements iv::Elem.

Definition at line 41 of file Transform.cpp.

◆ second_pass_impl()

void iv::Transform::second_pass_impl ( ElementRenderer er)
overrideprotectedvirtual

Reimplemented from iv::Elem.

Definition at line 105 of file Transform.cpp.

◆ instance()

Instance * iv::Elem::instance

Definition at line 57 of file Elem.cpp.

Member Data Documentation

◆ cm

ClientMarker iv::Transform::cm

Definition at line 22 of file Transform.hpp.

◆ attr_position

DirtyAttr< float3 > iv::Transform::attr_position

Definition at line 30 of file Transform.hpp.

◆ attr_rotation

DirtyAttr< floatQuat > iv::Transform::attr_rotation

Definition at line 31 of file Transform.hpp.

◆ attr_scale

DirtyAttr< float3 > iv::Transform::attr_scale

Definition at line 32 of file Transform.hpp.

◆ attr_deformation

DirtyAttr< float4x4 > iv::Transform::attr_deformation

Definition at line 33 of file Transform.hpp.

◆ attr_outerAnchor

DirtyAttr< float3 > iv::Transform::attr_outerAnchor

Definition at line 35 of file Transform.hpp.

◆ attr_innerAnchor

DirtyAttr< float3 > iv::Transform::attr_innerAnchor

Definition at line 36 of file Transform.hpp.

◆ attr_propagateSize

DirtyAttr< bool > iv::Transform::attr_propagateSize

Default is false, which means that transform prefsize is 0 and child will get its preferred size. Transform may still have size higher than 0, therefore outer_anchor still has a meaning. True means that transform will have prefsize the same as its child prefsize and child will get size of transform.

Definition at line 43 of file Transform.hpp.


The documentation for this class was generated from the following files: