Simulant  21.12-574
A portable game engine for Windows, OSX, Linux, Dreamcast, and PSP
Public Member Functions | Public Attributes | List of all members
smlt::Geom Class Reference

The Geom class. More...

#include <geom.h>

Inheritance diagram for smlt::Geom:
smlt::TypedDestroyableObject< Geom, Stage > smlt::StageNode smlt::Boundable smlt::generic::Identifiable< GeomID > smlt::AudioSource smlt::HasMutableRenderPriority smlt::ChainNameable< Geom > smlt::Nameable smlt::TwoPhaseConstructed smlt::HasAutoID< StageNode > smlt::Organism smlt::BoundableEntity smlt::Updateable smlt::Transformable smlt::Printable smlt::Nameable smlt::TreeNode smlt::DestroyableObject smlt::DestroyableObject

Public Member Functions

 Geom (Stage *stage, SoundDriver *sound_driver, MeshID mesh, const Vec3 &position=Vec3(), const Quaternion rotation=Quaternion(), const Vec3 &scale=Vec3(1, 1, 1), GeomCullerOptions culler_options=GeomCullerOptions())
 
const AABBaabb () const override
 
void clean_up () override
 
bool init () override
 
void _get_renderables (batcher::RenderQueue *render_queue, const CameraPtr camera, const DetailLevel detail_level) override
 
- Public Member Functions inherited from smlt::TypedDestroyableObject< Geom, Stage >
 TypedDestroyableObject (Stage *owner)
 
bool destroy () override
 
bool destroy_immediately () override
 
- Public Member Functions inherited from smlt::DestroyableObject
 DEFINE_SIGNAL (DestroyedSignal, signal_destroyed)
 
bool is_destroyed () const
 
- Public Member Functions inherited from smlt::StageNode
AncestorIteratorPair each_ancestor ()
 
DescendentIteratorPair each_descendent ()
 
SiblingIteratorPair each_sibling ()
 
ChildIteratorPair each_child ()
 
std::string repr () const override
 
 StageNode (Stage *stage, StageNodeType node_type)
 
StageNodeType node_type () const
 
void link_position (StageNode *other)
 
void move_to_absolute (const Vec3 &position)
 
void move_to_absolute (float x, float y, float z)
 
void rotate_to_absolute (const Quaternion &rotation)
 
void rotate_to_absolute (const Degrees &degrees, float x, float y, float z)
 
Vec3 absolute_position () const
 
Quaternion absolute_rotation () const
 
Vec3 absolute_scaling () const
 
Mat4 absolute_transformation () const
 
bool is_visible () const
 
bool is_intended_visible () const
 
void set_visible (bool visible)
 
template<typename T >
void set_parent (const UniqueID< T > &id)
 
void set_parent (TreeNode *node)
 
smlt::Promise< void > destroy_after (const Seconds &seconds)
 
void update (float dt) override
 
void late_update (float dt) override
 
void fixed_update (float step) override
 
bool parent_is_stage () const
 
void clean_up () override
 
const AABB transformed_aabb () const override
 
ShadowCast shadow_cast () const
 
void set_shadow_cast (ShadowCast cast)
 
ShadowReceive shadow_receive () const
 
void set_shadow_receive (ShadowReceive receive)
 
StageNodefind_descendent_with_name (const std::string &name)
 
void set_cullable (bool v)
 
bool is_cullable () const
 
UniqueIDKey key () const
 
- Public Member Functions inherited from smlt::TreeNode
void set_parent (TreeNode *node)
 
void add_child (TreeNode *node)
 
void remove_from_parent ()
 
bool is_root () const
 
bool is_leaf () const
 
TreeNodeparent () const
 
uint32_t child_count () const
 
TreeNodefirst_child () const
 
TreeNodenext_node () const
 
TreeNodeprevious_node () const
 
TreeNodechild_at (std::size_t i) const
 
- Public Member Functions inherited from smlt::Nameable
void set_name (const std::string &name)
 
const std::string & name () const
 
bool has_name () const
 
- Public Member Functions inherited from smlt::Transformable
smlt::Vec3 position () const
 
smlt::Vec2 position_2d () const
 
smlt::Quaternion rotation () const
 
smlt::Vec3 scale () const
 
virtual void move_to (const smlt::Vec3 &pos)
 
virtual void move_to (const smlt::Vec2 &pos)
 
virtual void move_to (float x, float y, float z)
 
virtual void move_to (float x, float y)
 
virtual void move_by (const smlt::Vec3 &pos)
 
virtual void move_by (const smlt::Vec2 &pos)
 
virtual void move_by (float x, float y, float z)
 
virtual void move_by (float x, float y)
 
virtual void move_forward_by (float amount)
 
virtual void move_right_by (float amount)
 
virtual void move_up_by (float amount)
 
virtual void rotate_to (const smlt::Degrees &angle, float axis_x, float axis_y, float axis_z)
 
virtual void rotate_to (const smlt::Degrees &angle, const smlt::Vec3 &axis)
 
virtual void rotate_to (const smlt::Quaternion &rotation)
 
virtual void rotate_x_by (const smlt::Degrees &angle)
 
virtual void rotate_y_by (const smlt::Degrees &angle)
 
virtual void rotate_z_by (const smlt::Degrees &angle)
 
virtual void rotate_by (const smlt::Degrees &angle_x, const smlt::Degrees &angle_y, const smlt::Degrees &angle_z)
 
virtual void rotate_by (const smlt::Vec3 &angles)
 
virtual void scale_x_by (const float scale)
 
virtual void scale_y_by (const float scale)
 
virtual void scale_z_by (const float scale)
 
virtual void scale_by (float x)
 
virtual void scale_by (const Vec3 &x)
 
virtual void scale_to (const float x, const float y, const float z)
 
virtual void rotate_around (const smlt::Vec3 &axis, const smlt::Degrees &degrees)
 
void rotate_global_x_by (const smlt::Degrees &degrees)
 
void rotate_global_y_by (const smlt::Degrees &degrees)
 
void rotate_global_z_by (const smlt::Degrees &degrees)
 
virtual void look_at (const smlt::Vec3 &target, const Vec3 &up=Vec3::POSITIVE_Y)
 
virtual void look_at (float x, float y, float z, const Vec3 &up=Vec3::POSITIVE_Y)
 
Vec3 right () const
 
Vec3 up () const
 
Vec3 forward () const
 
void constrain_to_aabb (const AABB &region)
 
bool is_constrained () const
 
void remove_constraint ()
 
- Public Member Functions inherited from smlt::Updateable
virtual void _update_thunk (float dt)
 
virtual void _late_update_thunk (float dt)
 
virtual void _fixed_update_thunk (float step)
 
- Public Member Functions inherited from smlt::BoundableEntity
virtual const Vec3 centre () const
 
- Public Member Functions inherited from smlt::Boundable
virtual float width () const
 
virtual float height () const
 
virtual float depth () const
 
virtual float half_width () const
 
virtual float half_height () const
 
virtual float half_depth () const
 
virtual float diameter () const
 
virtual float radius () const
 
- Public Member Functions inherited from smlt::Organism
template<typename T >
bool has_behaviour () const
 
template<typename T >
T * behaviour () const
 
template<typename T >
T * new_behaviour ()
 
template<typename T , typename ... Params>
T * new_behaviour (Params &&... params)
 
void fixed_update_behaviours (float step)
 
void update_behaviours (float dt)
 
void late_update_behaviours (float dt)
 
- Public Member Functions inherited from smlt::HasAutoID< StageNode >
uint64_t auto_id () const
 
- Public Member Functions inherited from smlt::generic::Identifiable< GeomID >
 Identifiable (GeomID id)
 
GeomID id () const
 
virtual bool operator== (const Identifiable< GeomID > &rhs) const
 
virtual bool operator< (const Identifiable< GeomID > &rhs) const
 
void _bind_id_pointer (ResourceTypePtr ptr)
 
void _overwrite_id (GeomID new_id)
 
- Public Member Functions inherited from smlt::AudioSource
 AudioSource (Window *window)
 
 AudioSource (Stage *stage, StageNode *this_as_node, SoundDriver *driver)
 
PlayingSoundPtr play_sound (SoundPtr sound_id, AudioRepeat repeat=AUDIO_REPEAT_NONE, DistanceModel model=DISTANCE_MODEL_DEFAULT)
 
bool stop_sound (PlayingSoundID sound_id)
 
uint8_t playing_sound_count () const
 
uint8_t played_sound_count () const
 
bool is_sound_playing () const
 
sig::signal< void()> & signal_stream_finished ()
 
void update_source (float dt)
 
- Public Member Functions inherited from smlt::HasMutableRenderPriority
void set_render_priority (RenderPriority priority)
 
virtual RenderPriority render_priority () const
 
- Public Member Functions inherited from smlt::ChainNameable< Geom >
Geomset_name_and_get (const std::string &name)
 

Public Attributes

Property< decltype(&Geom::culler_)> culler = {this, &Geom::culler_}
 
- Public Attributes inherited from smlt::TypedDestroyableObject< Geom, Stage >
friend Owner
 
- Public Attributes inherited from smlt::StageNode
Property< generic::DataCarrier StageNode::* > data = { this, &StageNode::data_ }
 
Property< Stage *StageNode::* > stage = { this, &StageNode::stage_ }
 
- Public Attributes inherited from smlt::AudioSource
Stagestage_ = nullptr
 
Windowwindow_ = nullptr
 
SoundDriverdriver_ = nullptr
 
StageNodenode_ = nullptr
 
std::list< PlayingSound::ptr > instances_
 
sig::signal< void()> signal_stream_finished_
 
thread::Mutex mutex_
 

Additional Inherited Members

- Public Types inherited from smlt::generic::Identifiable< GeomID >
typedef GeomID id_type
 
- Static Public Member Functions inherited from smlt::AudioSource
static void source_update_thread ()
 
- Protected Member Functions inherited from smlt::StageNode
Stageget_stage () const
 
void on_transformation_changed () override
 
void on_parent_set (TreeNode *oldp, TreeNode *newp) override
 
virtual void update_transformation_from_parent ()
 
void recalc_bounds_if_necessary () const
 
void mark_transformed_aabb_dirty ()
 
void mark_absolute_transformation_dirty ()
 
- Protected Member Functions inherited from smlt::TreeNode
TreeNodedetach ()
 
TreeNodelast_child () const
 
- Protected Member Functions inherited from smlt::Transformable
void set_position (const Vec3 &p)
 
void set_rotation (const Quaternion &q)
 
void set_scaling (const Vec3 &s)
 
virtual void on_transformation_change_attempted ()
 
- Protected Member Functions inherited from smlt::AudioSource
SoundDriver_sound_driver () const
 
- Protected Attributes inherited from smlt::DestroyableObject
bool destroyed_ = false
 
- Protected Attributes inherited from smlt::TreeNode
TreeNoderoot_ = nullptr
 
TreeNodeparent_ = nullptr
 
TreeNodefirst_child_ = nullptr
 
TreeNodeprev_ = this
 
TreeNodenext_ = this
 
- Protected Attributes inherited from smlt::Transformable
Vec3 position_
 
Quaternion rotation_
 
Vec3 scaling_ = Vec3(1, 1, 1)
 
std::unique_ptr< AABBconstraint_
 

Detailed Description

The Geom class.

A Geom is a fixed piece of geometry, like Actors they are constructed from a mesh, but unlike actors they are completely immovable during their lifetime. This gives partitioners the freedom to split the geometry as necessary for improved performance or even store entirely cached versions of the geometry.

Also unlike an actor, a mesh is a requirement.


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