Jopnal Engine  alpha 0.4
Simple Component Based 2D/3D Game Engine
Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
jop::Drawable Class Reference

#include <Drawable.hpp>

Inheritance diagram for jop::Drawable:
jop::CullerComponent jop::PhantomBody jop::Collider jop::Component jop::SafeReferenceable< Collider > jop::AnimatedSprite jop::SkyBox jop::SkySphere jop::Sprite jop::Text jop::World jop::World2D

Classes

struct  Attribute
 
struct  ProjectionInfo
 

Public Types

enum  Flag : uint32 { ReceiveLights = 1, ReceiveShadows = 1 << 1, CastShadows = 1 << 2, Reflected = 1 << 3 }
 

Public Member Functions

 Drawable (Object &object, Renderer &renderer, const RenderPass::Pass pass=RenderPass::Pass::BeforePost, const bool cull=true)
 Constructor. More...
 
 Drawable (Object &object, RenderPass &pass, const bool cull=true)
 Overloaded constructor. More...
 
virtual ~Drawable () override
 Virtual destructor. More...
 
virtual void draw (const ProjectionInfo &proj, const LightContainer &lights) const
 Draw function. More...
 
RenderergetRendrer ()
 Get the renderer this drawable is bound to. More...
 
const RenderergetRenderer () const
 Get the renderer this drawable is bound to. More...
 
DrawablesetRenderGroup (const uint8 group)
 Set the render group. More...
 
uint8 getRenderGroup () const
 Get the render group. More...
 
DrawablesetModel (const Model &model)
 Set the model. More...
 
ModelgetModel ()
 Get the model. More...
 
const ModelgetModel () const
 Get the model. More...
 
DrawablesetColor (const Color &color)
 Set the color. More...
 
const ColorgetColor () const
 Get the color. More...
 
const std::pair< glm::vec3, glm::vec3 > & getLocalBounds () const
 Get the local bounds. More...
 
std::pair< glm::vec3, glm::vec3 > getGlobalBounds () const
 Get the global bounds. More...
 
DrawablesetFlags (const uint32 flags)
 Set flags. More...
 
bool hasFlag (const uint32 flag) const
 Check if this drawable has a flag. More...
 
ShaderProgramgetShader () const
 Get the current shader. More...
 
void setOverrideShader (ShaderProgram &shader)
 Set an override shader. More...
 
void removeOverrideShader ()
 Remove the override shader if one is bound. More...
 
bool hasOverrideShader () const
 Check if using an override shader. More...
 
uint64 getAttributes () const
 Get the internal attribute field. More...
 
- Public Member Functions inherited from jop::PhantomBody
 PhantomBody (Object &object, World &world, CollisionShape &shape, const bool attachToWorld)
 Constructor. More...
 
virtual ~PhantomBody () override
 
void update (const float deltaTime) override
 Update function. More...
 
std::vector< Collider * > getOverlaps ()
 Get all the overlapping colliders. More...
 
std::vector< const Collider * > getOverlaps () const
 Get all the overlapping colliders. More...
 
unsigned int getOverlapAmount () const
 Get the number of overlapping colliders. More...
 
- Public Member Functions inherited from jop::Collider
bool checkOverlap (const Collider &other) const
 Check if this collider overlaps with another. More...
 
bool checkContact (const Collider &other) const
 Check if this collider is in contact with another. More...
 
bool checkRay (const glm::vec3 &start, const glm::vec3 &ray) const
 Check if a ray pierces this collider. More...
 
void registerListener (ContactListener &listener)
 Register a listener for this collider. More...
 
WorldgetWorld ()
 Get the world this collider belongs to. More...
 
const WorldgetWorld () const
 Get the world this collider belongs to. More...
 
void detachFromWorld ()
 Detach this body from its world. More...
 
void attachToWorld ()
 Attach this body to its world if it was previously detached. More...
 
bool isDetachedFromWorld () const
 Check if this body is currently detached from its world. More...
 
void updateWorldBounds ()
 Force update of the world space bounds. More...
 
void setCollisionShape (CollisionShape &shape)
 Set the collision shape. More...
 
const CollisionShapegetCollisionShape () const
 Get the collision shape. More...
 
- Public Member Functions inherited from jop::Component
virtual ~Component ()=0
 Virtual destructor. More...
 
Message::Result sendMessage (const Message &message)
 Send a message to this component. More...
 
uint32 getID () const
 Get the identifier. More...
 
void setID (const uint32 ID)
 Set the identifier. More...
 
WeakReference< ObjectgetObject ()
 Get the object this component is bound to. More...
 
WeakReference< const ObjectgetObject () const
 Get the object this component is bound to. More...
 
bool isActive () const
 Check if this component is active. More...
 
void removeSelf ()
 Remove this component from its object. More...
 
- Public Member Functions inherited from jop::SafeReferenceable< Collider >
WeakReference< CollidergetReference () const
 Get a weak reference to the bound object. More...
 

Protected Member Functions

 JOP_GENERIC_COMPONENT_CLONE (Drawable)
 
virtual Message::Result receiveMessage (const Message &message) override
 Receive a message. More...
 
- Protected Member Functions inherited from jop::CullerComponent
 JOP_GENERIC_COMPONENT_CLONE (CullerComponent)
 
 CullerComponent (Object &object, World &world, const Type type, const bool attach)
 
- Protected Member Functions inherited from jop::PhantomBody
 JOP_GENERIC_COMPONENT_CLONE (PhantomBody)
 
- Protected Member Functions inherited from jop::Collider
 Collider (Object &object, World &world, const uint32 ID)
 Constructor. More...
 
 Collider (const Collider &other, Object &newObj)
 Copy constructor. More...
 
virtual ~Collider () override=0
 Virtual destructor. More...
 
void setAllowSleep (const bool allow)
 Set whether the collider is allowed to sleep. More...
 
bool isSleepAllowed () const
 Check if sleep is allowed. More...
 
- Protected Member Functions inherited from jop::Component
 Component (Object &object, const uint32 ID)
 Constructor. More...
 
 Component (const Component &other, Object &newObj)
 Copy constructor. More...
 
- Protected Member Functions inherited from jop::SafeReferenceable< Collider >
 SafeReferenceable (Collider *ref)
 Constructor. More...
 
 SafeReferenceable (SafeReferenceable< Collider > &&other)
 Move constructor. More...
 
SafeReferenceableoperator= (SafeReferenceable< Collider > &&other)
 Move assignment operator. More...
 
 ~SafeReferenceable ()
 Protected destructor. More...
 

Protected Attributes

uint64 m_attributes
 Attribute flags. More...
 
- Protected Attributes inherited from jop::Collider
std::unique_ptr< btCollisionObject > m_body
 Body data. More...
 
Worldm_worldRef
 Reference to the world. More...
 
std::set< ContactListener * > m_listeners
 Listeners registered for this collider. More...
 
bool m_detached
 Is this body detached from the world? More...
 
bool m_allowSleep
 Is sleep allowed? More...
 

Friends

class ShaderAssembler
 

Additional Inherited Members

- Protected Types inherited from jop::CullerComponent
enum  Type { Type::Drawable, Type::Camera, Type::LightSource, Type::EnvironmentRecorder }
 

Detailed Description

Definition at line 48 of file Drawable.hpp.

Member Enumeration Documentation

Drawable flags

Enumerator
ReceiveLights 

Receive lights?

ReceiveShadows 

Receive shadows?

CastShadows 

Cast shadows?

Reflected 

Reflect on dynamic environment maps?

Definition at line 60 of file Drawable.hpp.

Constructor & Destructor Documentation

jop::Drawable::Drawable ( Object object,
Renderer renderer,
const RenderPass::Pass  pass = RenderPass::Pass::BeforePost,
const bool  cull = true 
)

Constructor.

Parameters
objectReference to the object this drawable will be bound to
rendererReference to the renderer
cullShould this drawable be culled?
passThe render pass
jop::Drawable::Drawable ( Object object,
RenderPass pass,
const bool  cull = true 
)

Overloaded constructor.

Parameters
objectReference to the object this drawable will be bound to
passThe render pass to bind this drawable into
cullShould this drawable be culled?
virtual jop::Drawable::~Drawable ( )
overridevirtual

Virtual destructor.

Member Function Documentation

virtual void jop::Drawable::draw ( const ProjectionInfo proj,
const LightContainer lights 
) const
virtual

Draw function.

Parameters
projThe projection info
lightsThe light container

Reimplemented in jop::World, jop::World2D, jop::SkySphere, jop::SkyBox, and jop::Sprite.

uint64 jop::Drawable::getAttributes ( ) const

Get the internal attribute field.

This is for internal use only.

Returns
The attribute field
const Color& jop::Drawable::getColor ( ) const

Get the color.

Returns
Reference to the color
See also
setColor()
std::pair<glm::vec3, glm::vec3> jop::Drawable::getGlobalBounds ( ) const

Get the global bounds.

This will apply the current transformation to the local bounds and then return them.

Returns
The global bounds
const std::pair<glm::vec3, glm::vec3>& jop::Drawable::getLocalBounds ( ) const

Get the local bounds.

This is the same as calling getModel().getMesh()->getBounds().

Returns
The local bounds
Model& jop::Drawable::getModel ( )

Get the model.

Returns
Reference to the model
const Model& jop::Drawable::getModel ( ) const

Get the model.

Returns
Reference to the model
const Renderer& jop::Drawable::getRenderer ( ) const

Get the renderer this drawable is bound to.

Returns
Reference to the renderer
uint8 jop::Drawable::getRenderGroup ( ) const

Get the render group.

Returns
The render group
Renderer& jop::Drawable::getRendrer ( )

Get the renderer this drawable is bound to.

Returns
Reference to the renderer
ShaderProgram& jop::Drawable::getShader ( ) const

Get the current shader.

Returns
Reference to the shader
bool jop::Drawable::hasFlag ( const uint32  flag) const

Check if this drawable has a flag.

Parameters
flagThe flag to check
Returns
True if this drawable has the flag
See also
Flag
bool jop::Drawable::hasOverrideShader ( ) const

Check if using an override shader.

Returns
True if using an override shader
jop::Drawable::JOP_GENERIC_COMPONENT_CLONE ( Drawable  )
protected
virtual Message::Result jop::Drawable::receiveMessage ( const Message message)
overrideprotectedvirtual

Receive a message.

Override this to handle messages sent to this. Don't forget to call the base class' method as well to ensure that the message gets forwarded correctly.

Parameters
messageThe message
Returns
The message result

Reimplemented from jop::Component.

Reimplemented in jop::World.

void jop::Drawable::removeOverrideShader ( )

Remove the override shader if one is bound.

See also
setOverrideShader()
Drawable& jop::Drawable::setColor ( const Color color)

Set the color.

This sets the drawable-specific color to be used as a base. If the bound material has a texture, the color will be used as a multiplier. The default color is white with an alpha of 1.

Parameters
colorThe color to set
Returns
Reference to self
Drawable& jop::Drawable::setFlags ( const uint32  flags)

Set flags.

Parameters
flagsThe flags to set
Returns
Reference to self
See also
Flag
Drawable& jop::Drawable::setModel ( const Model model)

Set the model.

The model will be copied.

Parameters
modelReference to the model
Returns
Reference to self
This method is exposed as command named setModel
void jop::Drawable::setOverrideShader ( ShaderProgram shader)

Set an override shader.

Parameters
shaderThe override shader
See also
removeOverrideShader()
Drawable& jop::Drawable::setRenderGroup ( const uint8  group)

Set the render group.

The value will be clamped between 0 and 31.

Parameters
groupThe new group to set
This method is exposed as command named setRenderGroup

Friends And Related Function Documentation

friend class ShaderAssembler
friend

Definition at line 54 of file Drawable.hpp.

Member Data Documentation

uint64 jop::Drawable::m_attributes
protected

Attribute flags.

Definition at line 276 of file Drawable.hpp.


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