All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
Valuable::AttributeVector< VectorType > Class Template Reference

A template class for vector values. More...

#include <Valuable/AttributeVector.hpp>

Inheritance diagram for Valuable::AttributeVector< VectorType >:
Valuable::AttributeT< VectorType > Valuable::Attribute Valuable::Serializable

Public Member Functions

virtual QString asString (bool *const ok, Attribute::Layer layer) const
 Converts the value object to a string. More...
 
const VectorType & asVector () const
 Returns the internal vector object as a constant reference. More...
 
 AttributeVector (Node *host, const QByteArray &name, const VectorType &v=VectorType::null(), bool transit=false)
  More...
 
const ElementType * data () const
 Returns the data in its native format.
 
virtual void eventProcess (const QByteArray &id, Radiant::BinaryData &data)
 Process a message. More...
 
const ElementType & get (int i) const
 Returns the ith element.
 
void normalize (ElementType len=1.0)
 Normalizes the vector.
 
VectorType operator+ (const VectorType &v) const
 Addition operator.
 
AttributeVector< VectorType > & operator+= (const VectorType &v)
 Assigns by addition.
 
VectorType operator- (const VectorType &v) const
 Subtraction operator.
 
AttributeVector< VectorType > & operator-= (const VectorType &v)
 Assigns by subtraction.
 
ElementType operator[] (int i) const
 Access vector elements by their index. More...
 
virtual bool set (const StyleValue &value, Attribute::Layer layer=Attribute::USER)
 Sets the value.
 
const ElementType & x () const
 Returns the first component.
 
const ElementType & y () const
 Returns the second component.
 
- Public Member Functions inherited from Valuable::AttributeT< VectorType >
 AttributeT (Node *host, const QByteArray &name, const VectorType &v=VectorType(), bool transit=false)
 Creates a new AttributeT and stores the default and current value as a separate variables. More...
 
virtual void clearValue (Layer layout=USER)
 Unsets the value from a specific layer. More...
 
Layer currentLayer () const
 
const VectorType & defaultValue () const
 The default value (the value given in constructor) of the Attribute.
 
virtual bool deserialize (const ArchiveElement &element)
 Deserializes (reads) this object from serializer element. More...
 
virtual bool isChanged () const
 
virtual bool isValueDefinedOnLayer (Layer layer) const final
 
 operator const VectorType & () const
 Typecast operator for the wrapped value.
 
const VectorType & operator* () const
 Access the wrapped object with the dereference operator.
 
const VectorType * operator-> () const
 Use the arrow operator to access fields inside the wrapped object.
 
AttributeT< VectorType > & operator= (const VectorType &t)
 Calls setValue with USER layer. More...
 
virtual ArchiveElement serialize (Archive &archive) const
 The object is serialized using its name as a tag name. More...
 
virtual void setAsDefaults ()
 Sets the current USER attribute value as the default value and clears the USER value. More...
 
void setValue (const VectorType &t, Layer layer=USER)
 Sets a new value for a specific layer. More...
 
const VectorType & value (Layer layer) const
 
const VectorType & value () const
 
- Public Member Functions inherited from Valuable::Attribute
long addListener (ListenerFunc func, int role=CHANGE_ROLE)
 Adds a listener that is invoked whenever the value is changed. More...
 
long addListener (Node *listener, ListenerFunc func, int role=CHANGE_ROLE)
 Adds a listener that is invoked whenever the value is changed. More...
 
long addListener (v8::Persistent< v8::Function > func, int role=CHANGE_ROLE)
 Adds a JavaScript listener that is invoked whenever the value is changed. More...
 
virtual float asFloat (bool *const ok=0, Layer layer=LAYER_CURRENT) const
 Converts the value object in a floating point number. More...
 
virtual int asInt (bool *const ok=0, Layer layer=LAYER_CURRENT) const
 Converts the value object in an integer. More...
 
 Attribute (const Attribute &o)
 Create a copy of the given Attribute WITHOUT the link to host, listeners, or the attribute name. More...
 
 Attribute (Node *host, const QByteArray &name, bool transit=false)
 Constructs a new value object and attaches it to its host. More...
 
virtual Attributeattribute (const QByteArray &name) const
 Gets an Attribute with the given name. More...
 
virtual void emitChange ()
 Invokes the change valueChanged function of all listeners.
 
void eventProcessFloat (const char *id, float v)
 Utility function for sending a float message to the object.
 
void eventProcessInt (const char *id, int v)
 Utility function for sending an int message to the object.
 
void eventProcessString (const char *id, const QString &str)
 Utility function for sending string message to the object.
 
void eventProcessString (const char *id, const char *str)
 Utility function for sending string message to the object.
 
void eventProcessVector2 (const char *id, Nimble::Vector2)
 Utility function for sending a Nimble::Vector2f message to the object.
 
void eventProcessVector3 (const char *id, Nimble::Vector3)
 Utility function for sending a Vector3 message to the object.
 
void eventProcessVector4 (const char *id, Nimble::Vector4)
 Utility function for sending a Vector4 message to the object.
 
virtual bool handleShorthand (const Valuable::StyleValue &value, Radiant::ArrayMap< Valuable::Attribute *, Valuable::StyleValue > &expanded)
 If attribute supports shorthand properties, this should be used to parse those. More...
 
Nodehost () const
 The host object of the value object (is any). More...
 
bool layerForSerialization (SerializationOptions flags, Layer &layer) const
 
const QByteArray & name () const
 Returns the name of the object.
 
const Attributeoperator= (const Attribute &)
 Create a copy of the given Attribute WITHOUT the link to host, listeners, or the attribute name. More...
 
AttributeownerShorthand () const
 
QByteArray path () const
 Returns the path (separated by '/'s) from the root.
 
void removeHost ()
 Sets the host pointer to zero and removes this object from the host. More...
 
bool removeListener (Node *listener, int role=ALL_ROLES)
 Removes a listener from the listener list. More...
 
bool removeListener (long id)
 Removes a listener from the listener list. More...
 
void removeListeners (int role=ALL_ROLES)
 Removes listeners from the listener list.
 
virtual bool set (float v, Layer layer=USER, ValueUnit unit=VU_UNKNOWN)
 Sets the value of the object.
 
virtual bool set (int v, Layer layer=USER, ValueUnit unit=VU_UNKNOWN)
 Sets the value of the object.
 
virtual bool set (const QString &v, Layer layer=USER, ValueUnit unit=VU_UNKNOWN)
 Sets the value of the object.
 
virtual bool set (const Nimble::Vector2f &v, Layer layer=USER, QList< ValueUnit > units=QList< ValueUnit >())
 Sets the value of the object.
 
virtual bool set (const Nimble::Vector3f &v, Layer layer=USER, QList< ValueUnit > units=QList< ValueUnit >())
 Sets the value of the object.
 
virtual bool set (const Nimble::Vector4f &v, Layer layer=USER, QList< ValueUnit > units=QList< ValueUnit >())
 Sets the value of the object.
 
void setName (const QByteArray &s)
 Sets the name of the object.
 
void setOwnerShorthand (Attribute *owner)
 
virtual QByteArray type () const
 Get the type id of the attribute. More...
 
- Public Member Functions inherited from Valuable::Serializable
virtual bool deserializeXML (const DOMElement &element)
 Deserializes (reads) this object from an XML element. More...
 
bool isSerializable () const
 
void setSerializable (bool v)
 

Additional Inherited Members

- Public Types inherited from Valuable::Attribute
enum  Layer {
  DEFAULT = 0, STYLE, USER, STYLE_IMPORTANT,
  LAYER_COUNT, LAYER_CURRENT
}
 Attribute has multiple independent attribute values on LAYER_COUNT different layers. More...
 
typedef std::function< void()> ListenerFunc
 Callback function type in the listener API.
 
enum  ListenerRole { DELETE_ROLE = 1 << 0, CHANGE_ROLE = 1 << 1, ALL_ROLES = (CHANGE_ROLE << 1) -1 }
 Different listener roles, used when adding a new listener.
 
enum  ValueUnit {
  VU_UNKNOWN, VU_PXS, VU_PERCENTAGE, VU_EMS,
  VU_EXS
}
 Units of a value. More...
 
- Protected Member Functions inherited from Valuable::Attribute
virtual void emitDelete ()
 Invokes the change valueDeleted function of all listeners.
 
- Protected Attributes inherited from Valuable::AttributeT< VectorType >
Layer m_current
 
VectorType m_values [LAYER_COUNT]
 
bool m_valueSet [LAYER_COUNT]
 

Detailed Description

template<class VectorType>
class Valuable::AttributeVector< VectorType >

A template class for vector values.

This class is used to implement all the normal vector value objects.

Constructor & Destructor Documentation

template<class VectorType>
Valuable::AttributeVector< VectorType >::AttributeVector ( Node host,
const QByteArray &  name,
const VectorType &  v = VectorType::null(),
bool  transit = false 
)
inline

Member Function Documentation

template<class VectorType >
QString Valuable::AttributeVector< VectorType >::asString ( bool *const  ok,
Attribute::Layer  layer 
) const
virtual

Converts the value object to a string.

Parameters
okIf non-null, *ok is set to true/false on success/error
Returns
Object as a string, the default implementation returns an empty string

Implements Valuable::AttributeT< VectorType >.

template<class VectorType>
const VectorType& Valuable::AttributeVector< VectorType >::asVector ( ) const
inline

Returns the internal vector object as a constant reference.

Returns
The wrapped vector value
template<class T >
void Valuable::AttributeVector< T >::eventProcess ( const QByteArray &  id,
Radiant::BinaryData data 
)
virtual

Process a message.

This method is a key element in the event-passing system. It is used to deliver information between objects. The information contains two parts:

  1. Identifier: A character string that gives the address for the adjustment
  2. Data: A binary blob that contains information for the message

This function is overridden in number of classes that need to receive and process events. In a typical case, when overriding this function, you should either process the message, or call the function of the parent class.

void MyClass::eventProcess(const QByteArray & type, Radiant::BinaryData & data)
{
if(type == "jump")
doJump();
else if(type == "crawl") {
bool ok;
int speed = data.readInt32(&ok);
if(ok)
doCrawl(speed);
}
else
Parent::eventProcess(type, data);
}
Parameters
idThe indentifier for the message. Typically this is quite human-readable
dataBinary blob that contains the argument data in easily parseable format.

Reimplemented from Valuable::Attribute.

template<class VectorType>
ElementType Valuable::AttributeVector< VectorType >::operator[] ( int  i) const
inline

Access vector elements by their index.

Parameters
iIndex, starting from zero
Returns
Returns the ith element.