Unigine::WidgetSpriteVideo Class
Header: | #include <UnigineWidgets.h> |
Inherits from: | WidgetSprite |
This class is used to create a virtual monitor that plays a video file (currently only *.OGV files are supported). It can be synchrozied with playback of the ambient sound or the directional sound source.
The following example illustrates how to play a video-file on the system GUI or a GUI object using the WidgetSpriteVideo class.
You can copy the code below and paste it to the AppWorldLogic.cpp source file of your project:
#include "AppWorldLogic.h"
#include <UnigineUserInterface.h>
#include <UnigineObjects.h>
#include <UnigineEditor.h>
// injecting Unigine and Math namespaces
using namespace Unigine;
using namespace Math;
// path to the video file to play (only *.OGV type is supported)
const char *file_name = "<YOUR_VIDEO_FILE_NAME>.ogv";
// GUI object to play the video on
ObjectGuiPtr GUIobject;
// sprite video widgets
WidgetSpriteVideoPtr TVscreen;
WidgetSpriteVideoPtr MAINscreen;
AppWorldLogic::AppWorldLogic()
{
}
AppWorldLogic::~AppWorldLogic()
{
}
int AppWorldLogic::init() {
// creating a GUI object with the following size: 1.0f x 0.5f
GUIobject = ObjectGui::create(1.0f, 0.5f);
// setting transformation and other parameters of the GUI object
GUIobject->setWorldTransform(Mat4(translate(-0.5f, 1.0f, 1.5f) * rotateX(90.0f)));
GUIobject->setMaterial("gui_base", "*");
GUIobject->setMaterialState("mode", 1, 0);
// creating the first sprite video widget that plays a file_name video file on the GUI object
TVscreen = WidgetSpriteVideo::create(GUIobject->getGui(), file_name, 1);
// adding the sprite video widge to the GUI object
GUIobject->getGui()->addChild(TVscreen, Gui::ALIGN_OVERLAP | Gui::ALIGN_BACKGROUND);
// setting looped playback mode
TVscreen->setLoop(1);
// launching playback
TVscreen->play();
// creating the second sprite video widget that plays a file_name video file on the system GUI
MAINscreen = WidgetSpriteVideo::create(Gui::get(), file_name, 1);
// setting size and position of the second sprite video widget on the screen
MAINscreen->setPosition(100, 100);
MAINscreen->setWidth(400);
MAINscreen->setHeight(225);
MAINscreen->arrange();
// adding the sprite video widge to the system GUI
Gui::get()->addChild(MAINscreen, Gui::ALIGN_OVERLAP | Gui::ALIGN_BACKGROUND);
// setting looped playback mode
MAINscreen->setLoop(1);
// launching playback
MAINscreen->play();
return 1;
}
int AppWorldLogic::shutdown() {
// clearing pointers
TVscreen.clear();
MAINscreen.clear();
GUIobject.clear();
return 1;
}
int AppWorldLogic::update()
{
return 1;
}
int AppWorldLogic::postUpdate()
{
return 1;
}
int AppWorldLogic::updatePhysics()
{
return 1;
}
int AppWorldLogic::save(const Unigine::StreamPtr &stream)
{
UNIGINE_UNUSED(stream);
return 1;
}
int AppWorldLogic::restore(const Unigine::StreamPtr &stream)
{
UNIGINE_UNUSED(stream);
return 1;
}
See Also#
- A set of UnigineScript API samples located in the <UnigineSDK>/data/samples/widgets/ folder:
- video_00
- video_01
WidgetSpriteVideo Class
Members
static WidgetSpriteVideoPtr create ( const Ptr<Gui> & gui, const char * name = 0, int mode = 1 ) #
Constructor. Creates a new sprite that plays video and adds it to the specified GUI.Arguments
- const Ptr<Gui> & gui - GUI, to which the new sprite will belong.
- const char * name - Path to a video file.
- int mode - YUV flag: 1 if conversion to RGB should be performed by the GPU, 0 - if by the CPU.
static WidgetSpriteVideoPtr create ( const char * name = 0, int mode = 1 ) #
Constructor. Creates a new sprite that plays video and adds it to the Engine GUI.Arguments
- const char * name - Path to a video file.
- int mode - YUV flag: 1 if conversion to RGB should be performed by the GPU, 0 - if by the CPU.
void setAmbientSource ( const Ptr<AmbientSource> & source ) #
Synchronizes video playback to the ambient sound source playback.Arguments
- const Ptr<AmbientSource> & source - Ambient sound source according to which video playback will be synchronized.
Ptr<AmbientSource> getAmbientSource ( ) const#
Returns the ambient sound source according to which video playback is synchronized.Return value
Ambient sound source.void setLoop ( int loop ) #
Sets a value indicating if the video should be looped.Arguments
- int loop - Positive number to loop the video, 0 to play it only once.
int getLoop ( ) const#
Returns a value indicating if the video is looped.Return value
Positive number if the video is looped; otherwise, 0.bool isPlaying ( ) const#
Returns a value indicating if the video is being played at the moment.Return value
1 if the video is being played; otherwise, 0.void setSoundSource ( const Ptr<SoundSource> & source ) #
Synchronizes video playback to the sound source playback.Arguments
- const Ptr<SoundSource> & source - Sound source according to which video playback will be synchronized.
Ptr<SoundSource> getSoundSource ( ) const#
Returns the sound source according to which video playback is synchronized.Return value
Sound source.bool isStopped ( ) const#
Returns a value indicating if the video is stopped at the moment.Return value
1 if the video is stopped; otherwise, 0.void setVideoTime ( float time ) #
Rewinds or fast-forwards the video to a given time.Arguments
- float time - Time in seconds.
float getVideoTime ( ) const#
Returns the time of the currently played frame.Return value
Time in seconds.void setYUV ( int yuv ) #
Sets a flag for YUV conversion.Arguments
- int yuv - Mode flag: 1 if conversion to RGB should be performed by the GPU, 0 if it is converted by the CPU.
int getYUV ( ) const#
Returns a flag for YUV conversion.Return value
1 if conversion to RGB is performed by the GPU, 0 if it is converted by the CPU.void play ( ) #
Starts playing video.void stop ( ) #
Stops playing video. This function saves the playback position so that playing of the file can be resumed from the same point.Last update:
2021-12-13
Help improve this article
Was this article helpful?
(or select a word/phrase and press Ctrl+Enter)