Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/avi_play/src/lib/graphics/importer/movie_player.cc @ 6290

Last change on this file since 6290 was 6290, checked in by hdavid, 18 years ago

branches\avi_play: work on the movie_player

File size: 2.4 KB
Line 
1/*
2   orxonox - the future of 3D-vertical-scrollers
3
4   Copyright (C) 2004 orx
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 2, or (at your option)
9   any later version.
10
11### File Specific:
12   main-programmer: David Hasenfratz
13   co-programmer:
14*/
15
16
17
18/* this is for debug output. It just says, that all calls to PRINT() belong to the DEBUG_MODULE_MEDIA module
19   For more information refere to https://www.orxonox.net/cgi-bin/trac.cgi/wiki/DebugOutput
20*/
21#define DEBUG_MODULE_MEDIA
22
23
24/* include your own header */
25#include "movie_player.h"
26
27/* header for debug output */
28#include "debug.h"
29
30
31/**
32 * Default constructor
33 */
34MoviePlayer::MoviePlayer(const char* filename)
35{
36  media_container = new MediaContainer(filename);
37
38  this->init();
39}
40
41MoviePlayer::MoviePlayer()
42{
43  media_container = new MediaContainer();
44
45  this->init();
46}
47
48/**
49 * Default destructor
50 */
51MoviePlayer::~MoviePlayer()
52{
53  delete media_container;
54}
55
56void MoviePlayer::init()
57{
58  status = STOP;
59
60  tex = new Texture();
61  material = new Material;
62
63  material->setDiffuseMap("maps/radialTransparency.png");
64
65  model = new PrimitiveModel(PRIM_PLANE, 10.0);
66
67  LightManager* lightMan = LightManager::getInstance();
68  lightMan->setAmbientColor(.1,.1,.1);
69  (new Light())->setAbsCoor(5.0, 10.0, 40.0);
70  (new Light())->setAbsCoor(-10, -20, -100);
71}
72
73void MoviePlayer::loadMovie(const char* filename)
74{
75  media_container->loadMedia(filename);
76}
77
78void MoviePlayer::printInformation()
79{
80  media_container->printMediaInformation();
81}
82
83void MoviePlayer::start(unsigned int start_frame)
84{
85  status = PLAY;
86}
87
88void MoviePlayer::resume()
89{
90  status = PLAY;
91}
92
93void MoviePlayer::pause()
94{
95  status = PAUSE;
96}
97
98void MoviePlayer::stop()
99{
100  status = STOP;
101}
102
103void MoviePlayer::tick(float time)
104{
105  surface = media_container->getNextFrame();
106
107  if(surface == NULL)
108    texture = NULL;
109  else
110  {
111    bool hasAlpha;
112    SDL_Surface* newSurf = tex->prepareSurface(surface, hasAlpha);
113    if (newSurf != NULL)
114      texture = Texture::loadTexToGL(newSurf);
115    else
116      texture = NULL;
117  }
118}
119
120const void MoviePlayer::draw()
121{
122  material->select();
123  glBindTexture(GL_TEXTURE_2D, texture);
124  model->draw();
125
126  LightManager::getInstance()->draw();
127}
128
129void MoviePlayer::setSpeed(float speed)
130{
131
132}
133
134float MoviePlayer::getSpeed()
135{
136  return speed;
137}
138
139const MP_STATUS MoviePlayer::getStatus()
140{
141  return status;
142}
Note: See TracBrowser for help on using the repository browser.