Eris 1.3.16
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Friends

Eris::Avatar Class Reference

The player's avatar representation. More...

#include <Avatar.h>

List of all members.

Public Member Functions

const std::string & getId () const
 Get the Entity id of this Avatar.
EntityPtr getEntity () const
 Get the Entity this Avatar refers to.
ViewgetView () const
ConnectiongetConnection () const
double getWorldTime ()
 get the current local approximation of world time.
const EntityRefgetWielded () const
void drop (Entity *entity, const WFMath::Point< 3 > &pos, const WFMath::Quaternion &orientation, const std::string &loc)
 Drop an entity in the Avatar's inventory at the given location.
void drop (Entity *entity, const WFMath::Vector< 3 > &offset=WFMath::Vector< 3 >(0, 0, 0), const WFMath::Quaternion &orientation=WFMath::Quaternion())
 Drop an entity in the Avatar's inventory at the Avatar's feet (or actually in the parent entity of the Avatar).
void take (Entity *)
 Move an entity into the Avatar's inventory.
void touch (Entity *)
 Touch an entity.
void say (const std::string &)
 Say something (in-game)
void emote (const std::string &)
 Emote something (in-game)
void moveToPoint (const WFMath::Point< 3 > &)
 Have the character move towards a position.
void moveInDirection (const WFMath::Vector< 3 > &)
 Set the character's velocity.
void moveInDirection (const WFMath::Vector< 3 > &, const WFMath::Quaternion &)
 Set the character's velocity and orientation.
void place (Entity *entity, Entity *container, const WFMath::Point< 3 > &pos, const WFMath::Quaternion &orientation=WFMath::Quaternion())
 Place an entity inside another one.
void wield (Entity *entity)
 Wield an entity which is inside the Avatar's inventory.
void useOn (Entity *entity, const WFMath::Point< 3 > &position, const std::string &op)
 Use the currently wielded entity (tool) on another entity.
void attack (Entity *entity)
 Attach the specified entity.
void useStop ()
 Stop the current task, if one is in progress.
void deactivate ()
void setIsAdmin (bool isAdmin)
 Sets whether the current avatar is an admin character.
bool getIsAdmin ()
 Gets whether the current avatar is an admin character.

Public Attributes

sigc::signal< void, Entity * > GotCharacterEntity
 Emitted when the character entity of this Avatar is valid (and presumably, visible).
sigc::signal< void, Entity * > InvAdded
 An object was added to the inventory.
sigc::signal< void, Entity * > InvRemoved
 An object was removed from the inventory.
sigc::signal< void, Entity
*, const
Atlas::Objects::Operation::RootOperation & > 
Hear
 emitted when this Avatar hears something.

Protected Member Functions

 Avatar (Account &pl, const std::string &entId)
 Create a new Avatar object.
void updateWorldTime (double t)
 called by the IG router for each op it sees with a valid 'seconds' attribute set.
void onEntityAppear (Entity *ent)
void onCharacterChildAdded (Entity *child)
void onCharacterChildRemoved (Entity *child)
void onCharacterWield (const Atlas::Message::Element &)
void onWieldedChanged ()
void logoutResponse (const Atlas::Objects::Operation::RootOperation &)

Protected Attributes

Accountm_account
std::string m_entityId
EntityPtr m_entity
WFMath::TimeStamp m_stampAtLastOp
double m_lastOpTime
IGRouterm_router
Viewm_view
EntityRef m_wielded
sigc::connection m_entityAppearanceCon
bool m_isAdmin

Friends

class Account
class AccountRouter
class IGRouter

Detailed Description

The player's avatar representation.


Constructor & Destructor Documentation

Eris::Avatar::Avatar ( Account pl,
const std::string &  entId 
) [protected]

Create a new Avatar object.

Parameters:
plThe player that owns the Avatar

References Eris::View::getEntity().


Member Function Documentation

void Eris::Avatar::attack ( Entity entity)

Attach the specified entity.

Parameters:
entityThe entity to be attacked

References Eris::Entity::getId(), and Eris::Connection::send().

void Eris::Avatar::drop ( Entity entity,
const WFMath::Vector< 3 > &  offset = WFMath::Vector<3>(0, 0, 0),
const WFMath::Quaternion &  orientation = WFMath::Quaternion() 
)

Drop an entity in the Avatar's inventory at the Avatar's feet (or actually in the parent entity of the Avatar).

Parameters:
entityThe entity to drop.
posThe position within the location to place the entity at (if possible by the server).
orientationThe orientation of the new entity. This will only be used if the quaternion sent is valid.

References drop(), Eris::Entity::getId(), Eris::Entity::getLocation(), and Eris::Entity::getPosition().

void Eris::Avatar::drop ( Entity entity,
const WFMath::Point< 3 > &  pos,
const WFMath::Quaternion &  orientation,
const std::string &  loc 
)

Drop an entity in the Avatar's inventory at the given location.

Parameters:
entityThe entity to drop.
posThe position within the location to place the entity at (if possible by the server).
orientationThe orientation of the new entity. This will only be used if the quaternion sent is valid.
locThe new location, as an entity id.

References Eris::Entity::getId(), Eris::Entity::getLocation(), and Eris::Connection::send().

Referenced by drop().

bool Eris::Avatar::getIsAdmin ( )

Gets whether the current avatar is an admin character.

As an "admin" character the avatar has greater ability to alter the state of the server. This is often done by sending Atlas ops to the entity itself, thus bypassing the normal routing rules on the server.

It's up to the client to determine which avatars are admin, and call setIsAdmin as soon as possible after the Avatar has been created.

Referenced by place().

double Eris::Avatar::getWorldTime ( )

get the current local approximation of world time.

void Eris::Avatar::place ( Entity entity,
Entity container,
const WFMath::Point< 3 > &  pos,
const WFMath::Quaternion &  orientation = WFMath::Quaternion() 
)

Place an entity inside another one.

Note:
Use this method both when you want to move an entity from one container to another, or just want to update the position or orientation of an entity without changing its container.
Parameters:
entityThe entity to place.
containerThe container for the entity.
posThe position of the entity within the container.
orientationAn optional orientation of the entity.

References Eris::Entity::getId(), getIsAdmin(), and Eris::Connection::send().

void Eris::Avatar::setIsAdmin ( bool  isAdmin)

Sets whether the current avatar is an admin character.

As an "admin" character the avatar has greater ability to alter the state of the server. This is often done by sending Atlas ops to the entity itself, thus bypassing the normal routing rules on the server.

It's up to the client to determine which avatars are admin, and set this flag as soon as possible after the Avatar has been created.

void Eris::Avatar::updateWorldTime ( double  t) [protected]

called by the IG router for each op it sees with a valid 'seconds' attribute set.

We use this to synchronize the local world time up.

void Eris::Avatar::useOn ( Entity entity,
const WFMath::Point< 3 > &  position,
const std::string &  op 
)

Use the currently wielded entity (tool) on another entity.

Parameters:
entityA pointer to the entity you wish to use your tool on.
positionA position where you perform the operation.
opThe operation of the tool to perform, or an empty string to use the default.

If position is invalid the "pos" parameter will not be set on the USE operation.

See also:
WFMath::Point< 3 >::Point(), WFMath::Point< 3 >::setValid(), WFMath::Point< 3 >::isValid()

References Eris::Entity::getId(), and Eris::Connection::send().

void Eris::Avatar::useStop ( )

Stop the current task, if one is in progress.

This could be either a useOn or attack.

References Eris::Connection::send().


Member Data Documentation

Emitted when the character entity of this Avatar is valid (and presumably, visible).

This will happen some time after the InGame signal is emitted. A client might wish to show some kind of 'busy' animation, eg an hour-glass, while waiting for this signal.

sigc::signal<void, Entity*, const Atlas::Objects::Operation::RootOperation&> Eris::Avatar::Hear

emitted when this Avatar hears something.

Passes the source of the sound, and the operation that was heard, for example a Talk.

Referenced by Eris::ViewEntity::onSoundAction(), and Eris::ViewEntity::onTalk().


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