Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
Divide::Character Class Reference

#include <Character.h>

+ Inheritance diagram for Divide::Character:

Public Types

enum class  CharacterType : U8 { CHARACTER_TYPE_PLAYER = 0 , CHARACTER_TYPE_NPC , COUNT }
 Currently supported character types. More...
 
- Public Types inherited from Divide::Unit
using AttributeMap = hashMap< U32, I32 >
 

Public Member Functions

 Character (CharacterType type)
 
virtual void update (U64 deltaTimeUS)
 
virtual void setPosition (const vec3< F32 > &newPosition)
 Set the current position of this charater.
 
virtual void setVelocity (const vec3< F32 > &newVelocity)
 Update character velocity.
 
virtual vec3< F32getPosition () const
 The current position of this character.
 
virtual vec3< F32getLookingDirection ()
 The direction in which the character is currently looking.
 
virtual void lookAt (const vec3< F32 > &targetPos)
 Rotate the character to look at another character.
 
const vec3< F32 > & getRelativeLookingDirection () const noexcept
 
void setRelativeLookingDirection (const vec3< F32 > &direction) noexcept
 
void playAnimation (U32 index) const
 
void playNextAnimation () const
 
void playPreviousAnimation () const
 
void pauseAnimation (bool state) const
 
 PROPERTY_RW (CharacterType, characterType, CharacterType::COUNT)
 
- Public Member Functions inherited from Divide::Unit
 Unit (UnitType type)
 
virtual bool moveTo (const vec3< F32 > &targetPosition, const U64 deltaTimeUS)
 
virtual bool moveToX (F32 targetPosition, const U64 deltaTimeUS)
 Move along the X axis.
 
virtual bool moveToY (F32 targetPosition, const U64 deltaTimeUS)
 Move along the Y axis.
 
virtual bool moveToZ (F32 targetPosition, const U64 deltaTimeUS)
 Move along the Z axis.
 
virtual bool teleportTo (const vec3< F32 > &targetPosition)
 teleportTo instantly places the unit at the desired position
 
const vec3< F32 > & getCurrentPosition () const
 
const vec3< F32 > & getTargetPosition () const
 Get the unit's target coordinates in the world.
 
virtual void setMovementSpeed (const F32 movementSpeed)
 
virtual void setAcceleration (const F32 acceleration)
 Set the unit's acceleration in metres per second squared.
 
virtual F32 getMovementSpeed () const
 Get the unit's current movement speed.
 
virtual F32 getAcceleration () const
 Get the unit's acceleration rate.
 
void setMovementTolerance (const F32 movementTolerance)
 Set destination tolerance.
 
F32 getMovementTolerance () const
 Get the units current movement tolerance.
 
SceneGraphNodegetBoundNode () const
 Get bound node.
 
virtual void setAttribute (U32 attributeID, I32 initialValue)
 
virtual I32 getAttribute (U32 attributeID) const
 
 PROPERTY_RW (UnitType, type, UnitType::COUNT)
 
- Public Member Functions inherited from Divide::GUIDWrapper
 GUIDWrapper () noexcept
 
 GUIDWrapper (const GUIDWrapper &old) noexcept
 
 GUIDWrapper (GUIDWrapper &&old) noexcept
 
virtual ~GUIDWrapper ()=default
 
FORCE_INLINE I64 getGUID () const noexcept
 
GUIDWrapperoperator= (const GUIDWrapper &old)=delete
 
GUIDWrapperoperator= (GUIDWrapper &&other)=delete
 

Protected Member Functions

void setParentNode (SceneGraphNode *node) override
 
virtual void setParentNode (SceneGraphNode *node)
 

Private Attributes

vec3< F32_lookingDirection
 
vec3< F32_newPosition
 
vec3< F32_oldPosition
 
vec3< F32_curPosition
 
vec3< F32_newVelocity
 
vec3< F32_curVelocity
 
std::atomic_bool _positionDirty
 
std::atomic_bool _velocityDirty
 

Additional Inherited Members

- Static Public Member Functions inherited from Divide::GUIDWrapper
static I64 generateGUID () noexcept
 
- Protected Attributes inherited from Divide::Unit
F32 _moveSpeed
 Movement speed (meters per second)
 
F32 _acceleration
 Acceleration (meters per second squared.
 
F32 _moveTolerance
 acceptable distance from target
 
vec3< F32_currentPosition
 Unit position in world.
 
vec3< F32_currentTargetPosition
 Current destination point cached.
 
SceneGraphNode_node
 
AttributeMap _attributes
 
SharedMutex _unitUpdateMutex
 
- Protected Attributes inherited from Divide::GUIDWrapper
const I64 _guid
 

Detailed Description

Basic character class. Use the internally calculated position to update the attached node's transform!

Definition at line 79 of file Character.h.

Member Enumeration Documentation

◆ CharacterType

enum class Divide::Character::CharacterType : U8
strong

Currently supported character types.

Enumerator
CHARACTER_TYPE_PLAYER 

user controlled character

CHARACTER_TYPE_NPC 

non-user(player) character

COUNT 

placeholder

Definition at line 82 of file Character.h.

Constructor & Destructor Documentation

◆ Character()

Divide::Character::Character ( CharacterType  type)
explicit

Definition at line 11 of file Character.cpp.

Member Function Documentation

◆ getLookingDirection()

vec3< F32 > Divide::Character::getLookingDirection ( )
virtual

The direction in which the character is currently looking.

Definition at line 76 of file Character.cpp.

◆ getPosition()

vec3< F32 > Divide::Character::getPosition ( ) const
virtual

The current position of this character.

Definition at line 72 of file Character.cpp.

◆ getRelativeLookingDirection()

const vec3< F32 > & Divide::Character::getRelativeLookingDirection ( ) const
inlinenoexcept

Definition at line 119 of file Character.h.

◆ lookAt()

void Divide::Character::lookAt ( const vec3< F32 > &  targetPos)
virtual

Rotate the character to look at another character.

Definition at line 86 of file Character.cpp.

◆ pauseAnimation()

void Divide::Character::pauseAnimation ( bool  state) const

Definition at line 162 of file Character.cpp.

◆ playAnimation()

void Divide::Character::playAnimation ( U32  index) const

Definition at line 97 of file Character.cpp.

◆ playNextAnimation()

void Divide::Character::playNextAnimation ( ) const

Definition at line 124 of file Character.cpp.

◆ playPreviousAnimation()

void Divide::Character::playPreviousAnimation ( ) const

Definition at line 143 of file Character.cpp.

◆ PROPERTY_RW()

Divide::Character::PROPERTY_RW ( CharacterType  ,
characterType  ,
CharacterType::COUNT   
)

◆ setParentNode()

void Divide::Character::setParentNode ( SceneGraphNode node)
overrideprotectedvirtual

Reimplemented from Divide::Unit.

Reimplemented in Divide::Player.

Definition at line 22 of file Character.cpp.

◆ setPosition()

void Divide::Character::setPosition ( const vec3< F32 > &  newPosition)
virtual

Set the current position of this charater.

Definition at line 62 of file Character.cpp.

◆ setRelativeLookingDirection()

void Divide::Character::setRelativeLookingDirection ( const vec3< F32 > &  direction)
inlinenoexcept

Definition at line 120 of file Character.h.

◆ setVelocity()

void Divide::Character::setVelocity ( const vec3< F32 > &  newVelocity)
virtual

Update character velocity.

Definition at line 67 of file Character.cpp.

◆ update()

void Divide::Character::update ( U64  deltaTimeUS)
virtual

Update this character for drawing a new frame. Updates one tick in the render loop. In order for the agents to be updated, you first need to call the detourCrowd update function. What is updated specifically is up to a specific implementation of Character, but at the very least the position in the scene should be updated to reflect the detour agent position (possibly with additional physics engine clipping and collision testing).

Reimplemented in Divide::NPC.

Definition at line 33 of file Character.cpp.

Member Data Documentation

◆ _curPosition

vec3<F32> Divide::Character::_curPosition
private

Definition at line 134 of file Character.h.

◆ _curVelocity

vec3<F32> Divide::Character::_curVelocity
private

Definition at line 135 of file Character.h.

◆ _lookingDirection

vec3<F32> Divide::Character::_lookingDirection
private

Definition at line 133 of file Character.h.

◆ _newPosition

vec3<F32> Divide::Character::_newPosition
private

Definition at line 134 of file Character.h.

◆ _newVelocity

vec3<F32> Divide::Character::_newVelocity
private

Definition at line 135 of file Character.h.

◆ _oldPosition

vec3<F32> Divide::Character::_oldPosition
private

Definition at line 134 of file Character.h.

◆ _positionDirty

std::atomic_bool Divide::Character::_positionDirty
private

Definition at line 136 of file Character.h.

◆ _velocityDirty

std::atomic_bool Divide::Character::_velocityDirty
private

Definition at line 137 of file Character.h.


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