Upload
maren
View
16
Download
0
Embed Size (px)
DESCRIPTION
SE Team 9 GlobalFlyer. Cole Hoosier Ryan Hannebaum Leanne Gray Alex Stampbach. Project Statement. GlobalFlyer allows a player to fly a Wright brothers-style airplane in 3D space using the OGRE graphic rendering engine and the FMOD sound system. Iteration Plans. Fixup - PowerPoint PPT Presentation
Citation preview
SE Team 9GlobalFlyer
Cole HoosierRyan Hannebaum
Leanne GrayAlex Stampbach
Project Statement
• GlobalFlyer allows a player to fly a Wright brothers-style airplane in 3D space using the OGRE graphic rendering engine and the FMOD sound system.
Iteration PlansFixup
1: Get music and sound effects working again2: Get collision detection with buildings working3: Get the propellor showing up again
Visual Environment1: Add hovering objects to the world2: Add proximity detection to hovering objects3: Modify texture of hovering objects based on proximityIcing: Create multiple levels, progressing in difficulty
User Interface1: Add mouse control of camera2: Add visually-appealing digital readouts of data the user might want3: Add the ability to toggle sound, gui, etc.
OCL planAreas that lend themselves well to OCL specifications
•Collision detection of plane with ground/objects
•No re-initialization of sound system
•Placement of bubbles/buildings on terrain(must be within the boundaries of the world)
•Checking win-condition for a level(must have “touched” all bubbles)
UML Models
FrameStarted Sequence Diag
Class DiagramOverview
The FrameListener
The Camera
The Plane
The Physics
The Sound
Old New
Source Code
Floating Bubbles!
Lots and lots of bubbles…
Bubbly SourceballNode = mSceneMgr->getRootSceneNode ()->createChildSceneNode (
StringConverter::toString (i), Vector3 (Math::RangeRandom (1000, 14000),Math::RangeRandom(500,1000),Math::RangeRandom (1000, 14000)));
ballEntity = mSceneMgr->createEntity (StringConverter::toString (i), "sphere.mesh");
//ballEntity->setMaterialName("GlobalFlyer/YellowSphere");ballEntity->setMaterialName("GlobalFlyer/RedSphere");//ballEntity->setMaterialName("GlobalFlyer/BlueSphere");ballEntity->setCastShadows(true);
ballNode->attachObject(ballEntity);
sample_application.cpp
Bubbly Source
FileSystem=../../new_media/materials/scriptsFileSystem=../../new_media/materials/textures
resources.cfg
Bubbly Source
Texture_spheremap.png
Bubbly Sourcematerial GlobalFlyer/RedSphere{ technique
{ pass{ ambient 0.5 0 0
diffuse 1 0 0texture_unit{ texture spheremap.png
env_map sphericalrotate_anim 0.1
}}}}
gf.material
Sound, glorious sound
Sound Sourcebool CFmod::initialized = false;
bool CFmod::InitSoundSystem(){ if (!initialized) { if (!FSOUND_Init(44100, 32, FSOUND_INIT_GLOBALFOCUS)) { DisplayError(); return false; } initialized = true; } return true;}
fmod.cpp
Sound Source
void CFmod::FreeSoundSystem(){
FSOUND_Close();initialized = false;
}
fmod.cpp
Sound Sourcevoid CFmod::SetLoop(bool loop, int start, int end){ if (m_pSound != NULL) { if (loop) { FSOUND_Sample_SetMode ( m_pSound, FSOUND_LOOP_NORMAL ); if( start >= 0 && end >= 0) { FSOUND_Sample_SetLoopPoints( m_pSound, start, end); } } else { FSOUND_Sample_SetMode ( m_pSound, FSOUND_LOOP_OFF ); } }}
fmod.cpp
Sound Source// in constructorCFmod::InitSoundSystem();musicSound.Load("../../new_media/audio/GlobalFlyer.mp3");musicSound.SetLoop(true, -1, -1);musicSound.Play();engineSound.Load("../../new_media/audio/engine.wav");engineSound.SetLoop(true, 5000, 70000);engineSound.Play();crashSound.Load("../../new_media/audio/crash.wav");
…
// at crash // at restartengineSound.Pause(); crashSound.Stop();crashSoundStarted = true; crashSoundStarted = false;crashSound.Play(); engineSound.Pause();
ogre_character.cpp
MouseLook
•MouseListener, MouseMotionListenerMouseListener, MouseMotionListener• void mouseDragged(MouseEvent* e)void mouseDragged(MouseEvent* e)• mEventProcessor?!mEventProcessor?!
EventProcessor
• ExampleFrameListener.hExampleFrameListener.h– mEventProcessor always instantiatesmEventProcessor always instantiates
• SampleListener.cppSampleListener.cpp– Initialize mEventProcessorInitialize mEventProcessor– Add mouse-related event listenersAdd mouse-related event listeners– Start processing eventsStart processing events
mouseDragged()
void SampleListener::mouseDragged(MouseEvent* e) {//mChar->getCameraNode()->setAutoTracking(false);//mChar->getSightNode()->yaw(Degree(-e->getX()*mRotate));//mChar->getSightNode()->pitch(Degree(-e->getY()*mRotate));if (mExCamera) {
mExCamera->instantUpdate(mChar->getCameraNode()->getWorldPosition(), mChar->getCameraNode()->getWorldPosition() + (100*(Vector3(-e->getX(), -e->getY(), e->getZ()))));// mExCamera->mouseLook(-e->getRelX(), -e->getRelY(), mRotate);}
}
Analysis of Iteration 1
Date BCWS BCWP ACWP BAC EV SPI SV CPI CV
2/2/2007 0 0 0828
0 0.00% -- 0 -- 0
2/9/2007 0 1020 720828
012.32
% inf102
0141.67
% 300
2/16/2007 0 1680 1110
8280
20.29% inf
1680
151.35% 570
2/23/2007 0 2460 2820
8280
29.71% inf
2460 87.23% -360
3/2/2007 2460 2460 2820828
029.71
%100.00
% 0 87.23% -360
Table of Measurements
Earned Value
• The sum of the planned values for all completed tasks
• Shows that tasks were completed at regular intervals up until the 27th when Iteration 1 was schedule to be completed
0.00%
5.00%
10.00%
15.00%
20.00%
25.00%
30.00%
35.00%
Schedule Performance Index
• Budgeted Cost of Work Performed over Budgeted Cost of Work Scheduled
0
0.2
0.4
0.6
0.8
1
1.2
Schedule Variance
• Budgeted Cost of Work Performed less the Budgeted Cost of work Scheduled
0
500
1000
1500
2000
2500
3000
Cost Performance Index
• Budgeted Cost of Work Performed over Actual Cost of Work Performed
• For the first 2 weeks, over estimated
• For the last 2 week, under estimated
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
Cost Variance
• Budgeted Cost of Work Performed over Actual Cost of Work Performed
• Same as Cost Performance Index
-600
-400
-200
0
200
400
600
800
Members Comparison
Time
Cole
Leanne
Ryan
Alex
Lines of Code
Cole
Leanne
Ryan
Alex
Plan for Iteration 2
Who has Questions?
-Images from texasbestgrok.mu.nu/images/GF2.jpg