Lumiverse  2.5
A framework for creating lighting control applications
Public Types | Public Member Functions | Private Attributes | List of all members
Lumiverse::ShowControl::SineWave Class Reference

This class implements a sine-wave effect. More...

#include <SineWave.h>

Inheritance diagram for Lumiverse::ShowControl::SineWave:
Inheritance graph
[legend]
Collaboration diagram for Lumiverse::ShowControl::SineWave:
Collaboration graph
[legend]

Public Types

enum  Mode { ABS, REL }
 Encodes the behavior for this effect. More...
 

Public Member Functions

 SineWave (float period=1, float magnitude=0.5, float phase=0, float offset=0.5, Mode mode=ABS)
 Creates a new SineWave effect. More...
 
 SineWave (JSONNode node)
 Loads a SineWave effect from a JSONNode. More...
 
virtual shared_ptr< LumiverseTypegetValueAtTime (string id, string paramName, LumiverseType *currentVal, size_t time, map< string, shared_ptr< Timeline > > &tls) override
 Returns the value of the requested parameter according to the sine wave parameters.
 
virtual size_t getLoopLength () override
 Returns the amount of time it takes to cycle through the sine wave once in milliseconds.
 
virtual string getTimelineTypeName () override
 Returns the name of this type of timeline.
 
virtual JSONNode toJSON () override
 Converts this timeline to a JSON node.
 
- Public Member Functions inherited from Lumiverse::ShowControl::Timeline
 Timeline ()
 Creates an empty timeline.
 
 Timeline (JSONNode data)
 Load a Timeline from JSON data. More...
 
 Timeline (const Timeline &other)
 Copies a timeline.
 
void operator= (const Timeline &other)
 
virtual ~Timeline ()
 Deletes a timeline.
 
string getTimelineKey (Device *d, string paramName)
 Gets the identifier used to refer to a device-parameter keyframe set.
 
string getTimelineKey (string id, string paramName)
 Gets the identifier used to refer to a device-parameter keyframe set.
 
Keyframe getKeyframe (string identifier, size_t time)
 Gets the keyframe for a given identifier and time. Read-only. More...
 
map< string, KeyframegetKeyframes (Device *d, size_t time)
 Gets the keyframes for a given device and time. Read-only. More...
 
map< string, map< size_t, Keyframe > > & getAllKeyframes ()
 Gets the keyframes for the entire timeline.
 
void setKeyframe (string identifier, size_t time, LumiverseType *data, bool ucs=false)
 Sets the value for the specified keyframe. More...
 
void setKeyframe (Device *d, size_t time, bool ucs=false)
 Sets the value of the keyframes for all parameters of the given device.
 
void setKeyframe (Rig *rig, size_t time, bool ucs=false)
 Stores a keyframe from a rig.
 
void setKeyframe (DeviceSet devices, size_t time, bool ucs=false)
 Stores a keyframe for a group of selected devices.
 
void setKeyframe (string identifier, size_t time, string timelineID, size_t offset=0)
 Stores a nested timeline Keyframe for a particular identifier.
 
void setKeyframe (Device *d, size_t time, string timelineID, size_t offset=0)
 Stores a nested timeline Keyframe for a device.
 
void setKeyframe (DeviceSet devices, size_t time, string timelineID, size_t offset=0)
 Stores a nested timeline Keyframe for a group of selected devices.
 
void deleteKeyframe (string identifier, size_t time)
 Deletes the keyframe with the specified identifier at the specified time.
 
void deleteKeyframe (Device *d, size_t time)
 Deletes the keyframes for the specified device at the specified time.
 
void deleteKeyframe (DeviceSet devices, size_t time)
 Deletes the keyframes for the specified devices at the specified time.
 
void moveKeyframe (string id, size_t oldTime, size_t newTime)
 Moves a keyframe from one time to a different time. If a keyframe already exists at the target time, it is overwritten.
 
void deleteKeyframesAfter (string id, size_t start)
 Deletes all keyframes for an id that occur after (>) the start time.
 
void deleteKeyframesBetween (size_t start, size_t end)
 Deletes all keyframes between (start < keyframe < end) the specified times.
 
bool addEndEvent (string id, shared_ptr< Event > e)
 Adds a new event to the end of the timeline. More...
 
void deleteEndEvent (string id)
 Deletes an end event. More...
 
bool addEvent (size_t time, shared_ptr< Event > e)
 Adds an Event to the Timeline. More...
 
void deleteEvent (size_t time, string id="")
 Deletes Events from the Timeline. More...
 
vector< shared_ptr< Event > > getEvents (size_t time, string id="")
 Gets Events at the specified time. More...
 
shared_ptr< EventgetEndEvent (string id)
 Gets an end Event. More...
 
multimap< size_t, shared_ptr< Event > > & getAllEvents ()
 Returns the multimap containing the Events for this Timeline.
 
map< string, shared_ptr< Event > > & getAllEndEvents ()
 Returns the end Events for this Timeline.
 
virtual void executeEvents (size_t prevTime, size_t currentTime)
 Executes the events between the specified times. More...
 
virtual void executeEndEvents ()
 Executes all end events in the timeline's list.
 
virtual int getLoops ()
 Returns the looping setting for this timeline. More...
 
virtual void setLoops (int loops)
 Set the number of loops the timeline should execute. More...
 
virtual size_t getLength ()
 Gets the length of the timeline based on stored keyframes. More...
 
virtual bool isDone (size_t time, map< string, shared_ptr< Timeline > > &tls)
 Indicates if the Timeline has no more keyframes after the specified time. More...
 
virtual void setCurrentState (map< string, map< string, LumiverseType * > > &state, shared_ptr< Timeline > active, size_t time)
 Takes a state from the layer and updates the keyframes marked with "Use Current State". More...
 
Keyframe getPreviousKeyframe (string identifier, size_t time)
 Gets the keyframe closest to happen at or before the given time. More...
 
virtual size_t getLoopTime (size_t time)
 Returns the time adjusted for the number of loops the timeline can perfrom.
 

Private Attributes

float _period
 Period of the sine wave.
 
float _magnitude
 Magnitude of the sine wave.
 
float _phase
 Phase of the sine wave.
 
float _offset
 Vertical offset of the sine wave.
 
Mode _mode
 Sine wave mode.
 

Additional Inherited Members

- Protected Member Functions inherited from Lumiverse::ShowControl::Timeline
void updateKeyframeState (string id, string paramName, LumiverseType *param, shared_ptr< Timeline > tl, size_t time)
 Updates the Keyframes marked as "Use Current State" in the Timeline's data.
 
void loadJSON (JSONNode node)
 Initializes the timeline with the given JSONNode's data.
 
- Protected Attributes inherited from Lumiverse::ShowControl::Timeline
size_t _length
 Stores the length of the timeline. More...
 
size_t _loopLength
 Stores the loop length of the timleine. More...
 
int _loops
 Describes how many times the timeline should loop. More...
 
bool _lengthIsUpdated
 Indicates if the timeline's length is updated.
 
bool _loopLengthIsUpdated
 Indicates if the timeline's loop length is updated.
 
map< string, map< size_t, Keyframe > > _timelineData
 Map from unique identifier to timeline keyframes. More...
 
multimap< size_t, shared_ptr< Event > > _events
 List of events and times that the events happen.
 
map< string, shared_ptr< Event > > _endEvents
 List of events to call at the end. More...
 

Detailed Description

This class implements a sine-wave effect.

A demonstration of how to extend timelines to make different kinds of effects.

This class is intended for use as a sub-timeline as an effect. The function for this class is: f(t) = magnitude * sin(2 pi * _period * (t + _phase)) + _offset. Note that this current sine-wave effect class works on proportional values, meaning that if you have two different floats with different ranges, say for instance [0,1] and [0,100], the sine wave with magnitude 0.5 will have a magnitude of 0.5 and 50 respectively.

This type of timelines does not support colors. Any attempt to use a LumiverseColor with this class will result with getValueAtTime() returning a nullptr.

Member Enumeration Documentation

Encodes the behavior for this effect.

ABS = Absolute. Value from the sine function will fully override the current value for the device. REL = Relative. Value from the side function will be added to the the current value for the device.

Constructor & Destructor Documentation

Lumiverse::ShowControl::SineWave::SineWave ( float  period = 1,
float  magnitude = 0.5,
float  phase = 0,
float  offset = 0.5,
Mode  mode = ABS 
)

Creates a new SineWave effect.

The default sine wave is a wave that has a 1s period, magnitude of 0.5 (which makes for an amplitude of 1.0), no phase, and is offset so the range of the sine wave is from [0,1].

Parameters
periodPeriod of the sine wave, in seconds
magnitudeMagnitude of the sine wave. Note that the total height for the sine wave is doubled
phasePhase of the sine wave. Adjusts the starting point on the curve.
offsetVertical offset of the sinewave.
modeEffect mode.
Lumiverse::ShowControl::SineWave::SineWave ( JSONNode  node)

Loads a SineWave effect from a JSONNode.

If there are missing values in the JSONNode, the default values will be filled in.


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