void Rotateable::SetRotation(float x,float y,float z) { SetRotationX(x); SetRotationY(y); SetRotationZ(z); }
void Initialize(void) { /* Set background (clear) color to dark blue */ glClearColor(0.0, 0.0, 0.4, 0.0); /* Enable depth testing */ glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LESS); /* Transform matrix for the bar in the middle*/ /*copy objects into buffer*/ memcpy(vertex_buffer_data1, vertex_octagon, sizeof(vertex_octagon)); memcpy(vertex_buffer_data2, vertex_pyramid, sizeof(vertex_pyramid)); memcpy(vertex_buffer_data3, vertex_mainBar, sizeof(vertex_mainBar)); memcpy(vertex_buffer_data4, vertex_cube, sizeof(vertex_cube)); memcpy(vertex_buffer_data5, vertex_cube, sizeof(vertex_cube)); memcpy(vertex_buffer_data6, vertex_cube, sizeof(vertex_cube)); memcpy(vertex_buffer_data7, vertex_cube, sizeof(vertex_cube)); /* memcpy(color_buffer_data1, color_octagon, sizeof(color_octagon)); memcpy(color_buffer_data2, color_pyramid, sizeof(color_pyramid)); memcpy(color_buffer_data3, color_mainBar, sizeof(color_mainBar)); memcpy(color_buffer_data4, color_cube, sizeof(color_cube)); memcpy(color_buffer_data5, color_cube, sizeof(color_cube)); memcpy(color_buffer_data6, color_cube, sizeof(color_cube)); memcpy(color_buffer_data7, color_cube, sizeof(color_cube)); */ memcpy(index_buffer_data1, index_octagon, sizeof(index_octagon)); memcpy(index_buffer_data2, index_pyramid, sizeof(index_pyramid)); memcpy(index_buffer_data3, index_mainBar, sizeof(index_mainBar)); memcpy(index_buffer_data4, index_cube, sizeof(index_cube)); memcpy(index_buffer_data5, index_cube, sizeof(index_cube)); memcpy(index_buffer_data6, index_cube, sizeof(index_cube)); memcpy(index_buffer_data7, index_cube, sizeof(index_cube)); /* Setup vertex, color, and index buffer objects */ SetupDataBuffers(); /* Setup shaders and shader program */ CreateShaderProgram(); /* Initialize matrices */ SetIdentityMatrix(ProjectionMatrix); SetIdentityMatrix(ViewMatrix); int i = 0; for(;i<OBJECTS;i++) { SetIdentityMatrix(ModelMatrix[i]); } printf("DEBUG: adding light-source ...\n"); /* Add lighting source to the code */ glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE); glEnable(GL_LIGHTING); glEnable(GL_COLOR_MATERIAL); glEnable(GL_LIGHT0); // adds first light-source to the scene GLfloat ambientLight[] = {0.2, 0.2, 0.2, 1.0}; GLfloat diffuseLight[] = {0.8, 0.8, 0.8, 1.0}; GLfloat specularLight[]= {1.0, 1.0, 1.0, 1.0}; GLfloat positionLight[]= {5.0, 0.0, 0.0, 0.0}; //glShadeModel(GL_SMOOTH); glLightfv(GL_LIGHT0, GL_AMBIENT, ambientLight); glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseLight); glLightfv(GL_LIGHT0, GL_SPECULAR, specularLight); glLightfv(GL_LIGHT0, GL_POSITION, positionLight); GLfloat black[] = {0.0, 0.0, 0.0, 1.0}; GLfloat green[] = {0.0, 1.0, 0.0, 1.0}; GLfloat white[] = {1.0, 1.0, 1.0, 1.0}; glMaterialfv(GL_FRONT, GL_AMBIENT, green); glMaterialfv(GL_FRONT, GL_DIFFUSE, green); glMaterialfv(GL_FRONT, GL_SPECULAR, white); glMaterialf(GL_FRONT, GL_SHININESS, 60.0); printf("DEBUG: finished adding light-source\n"); /* Set projection transform */ float fovy = 45.0; float aspect = 1.0; float nearPlane = 1.0; float farPlane = 50.0; SetPerspectiveMatrix(fovy, aspect, nearPlane, farPlane, ProjectionMatrix); /* Set viewing transform */ float camera_disp = -10.0; SetTranslation(0.0, 0.0, camera_disp, ViewMatrix); /* Translate and rotate cube */ SetTranslation(0, 0, 0, TranslateOrigin); SetRotationX(0.0, RotateX); SetRotationZ(0.0, RotateZ); /* Translate down */ SetTranslation(0, -sqrtf(sqrtf(2.0) * 1.0), 0, TranslateDown); /* Initial transformation matrix */ MultiplyMatrix(RotateX, TranslateOrigin, InitialTransform); MultiplyMatrix(RotateZ, InitialTransform, InitialTransform); }
// Makes the track go backward to give the impression of movement void RaceTrack::MovementOfTrack() { SetRotationZ(GetRotationZ() + 5.0f * gTimer->GetDeltaTime()); SetPosition(GetPosition().x, GetPosition().y, GetPosition().z - 2000.0f * gTimer->GetDeltaTime()); }
void Rotateable::Roll(float val) { SetRotationZ(rotation.z + val); }
void Actor::HandleCommand( const ParsedCommand &command ) { HandleParams; const CString& sName = sParam(0); // Commands that go in the tweening queue: if ( sName=="sleep" ) Sleep( fParam(1) ); else if( sName=="linear" ) BeginTweening( fParam(1), TWEEN_LINEAR ); else if( sName=="accelerate" ) BeginTweening( fParam(1), TWEEN_ACCELERATE ); else if( sName=="decelerate" ) BeginTweening( fParam(1), TWEEN_DECELERATE ); else if( sName=="bouncebegin" ) BeginTweening( fParam(1), TWEEN_BOUNCE_BEGIN ); else if( sName=="bounceend" ) BeginTweening( fParam(1), TWEEN_BOUNCE_END ); else if( sName=="spring" ) BeginTweening( fParam(1), TWEEN_SPRING ); else if( sName=="stoptweening" ) { StopTweening(); BeginTweening( 0.0001f, TWEEN_LINEAR ); } // Why BeginT again? -Chris else if( sName=="finishtweening" ) FinishTweening(); else if( sName=="hurrytweening" ) HurryTweening( fParam(1) ); else if( sName=="x" ) SetX( fParam(1) ); else if( sName=="y" ) SetY( fParam(1) ); else if( sName=="z" ) SetZ( fParam(1) ); else if( sName=="addx" ) SetX( GetDestX()+fParam(1) ); else if( sName=="addy" ) SetY( GetDestY()+fParam(1) ); else if( sName=="addz" ) SetZ( GetDestZ()+fParam(1) ); else if( sName=="zoom" ) SetZoom( fParam(1) ); else if( sName=="zoomx" ) SetZoomX( fParam(1) ); else if( sName=="zoomy" ) SetZoomY( fParam(1) ); else if( sName=="zoomz" ) SetZoomZ( fParam(1) ); else if( sName=="zoomtowidth" ) ZoomToWidth( fParam(1) ); else if( sName=="zoomtoheight" ) ZoomToHeight( fParam(1) ); else if( sName=="stretchto" ) StretchTo( RectF( fParam(1), fParam(2), fParam(3), fParam(4) ) ); else if( sName=="cropleft" ) SetCropLeft( fParam(1) ); else if( sName=="croptop" ) SetCropTop( fParam(1) ); else if( sName=="cropright" ) SetCropRight( fParam(1) ); else if( sName=="cropbottom" ) SetCropBottom( fParam(1) ); else if( sName=="fadeleft" ) SetFadeLeft( fParam(1) ); else if( sName=="fadetop" ) SetFadeTop( fParam(1) ); else if( sName=="faderight" ) SetFadeRight( fParam(1) ); else if( sName=="fadebottom" ) SetFadeBottom( fParam(1) ); else if( sName=="fadecolor" ) SetFadeDiffuseColor( cParam(1) ); else if( sName=="diffuse" ) SetDiffuse( cParam(1) ); else if( sName=="diffuseleftedge" ) SetDiffuseLeftEdge( cParam(1) ); else if( sName=="diffuserightedge" ) SetDiffuseRightEdge( cParam(1) ); else if( sName=="diffusetopedge" ) SetDiffuseTopEdge( cParam(1) ); else if( sName=="diffusebottomedge" ) SetDiffuseBottomEdge( cParam(1) ); /* Add left/right/top/bottom for alpha if needed. */ else if( sName=="diffusealpha" ) SetDiffuseAlpha( fParam(1) ); else if( sName=="diffusecolor" ) SetDiffuseColor( cParam(1) ); else if( sName=="glow" ) SetGlow( cParam(1) ); else if( sName=="glowmode" ) { if(!sParam(1).CompareNoCase("whiten")) SetGlowMode( GLOW_WHITEN ); else if(!sParam(1).CompareNoCase("brighten")) SetGlowMode( GLOW_BRIGHTEN ); else ASSERT(0); } else if( sName=="rotationx" ) SetRotationX( fParam(1) ); else if( sName=="rotationy" ) SetRotationY( fParam(1) ); else if( sName=="rotationz" ) SetRotationZ( fParam(1) ); else if( sName=="heading" ) AddRotationH( fParam(1) ); else if( sName=="pitch" ) AddRotationP( fParam(1) ); else if( sName=="roll" ) AddRotationR( fParam(1) ); else if( sName=="shadowlength" ) SetShadowLength( fParam(1) ); else if( sName=="horizalign" ) SetHorizAlign( sParam(1) ); else if( sName=="vertalign" ) SetVertAlign( sParam(1) ); else if( sName=="diffuseblink" ) SetEffectDiffuseBlink(); else if( sName=="diffuseshift" ) SetEffectDiffuseShift(); else if( sName=="glowblink" ) SetEffectGlowBlink(); else if( sName=="glowshift" ) SetEffectGlowShift(); else if( sName=="rainbow" ) SetEffectRainbow(); else if( sName=="wag" ) SetEffectWag(); else if( sName=="bounce" ) SetEffectBounce(); else if( sName=="bob" ) SetEffectBob(); else if( sName=="pulse" ) SetEffectPulse(); else if( sName=="spin" ) SetEffectSpin(); else if( sName=="vibrate" ) SetEffectVibrate(); else if( sName=="stopeffect" ) SetEffectNone(); else if( sName=="effectcolor1" ) SetEffectColor1( cParam(1) ); else if( sName=="effectcolor2" ) SetEffectColor2( cParam(1) ); else if( sName=="effectperiod" ) SetEffectPeriod( fParam(1) ); else if( sName=="effectoffset" ) SetEffectOffset( fParam(1) ); else if( sName=="effectdelay" ) SetEffectDelay( fParam(1) ); else if( sName=="effectclock" ) SetEffectClock( sParam(1) ); else if( sName=="effectmagnitude" ) SetEffectMagnitude( RageVector3(fParam(1),fParam(2),fParam(3)) ); else if( sName=="scaletocover" ) { RectI R(iParam(1), iParam(2), iParam(3), iParam(4)); ScaleToCover(R); } else if( sName=="scaletofit" ) { RectI R(iParam(1), iParam(2), iParam(3), iParam(4)); ScaleToFitInside(R); } // Commands that take effect immediately (ignoring the tweening queue): else if( sName=="animate" ) EnableAnimation( bParam(1) ); else if( sName=="setstate" ) SetState( iParam(1) ); else if( sName=="texturewrapping" ) SetTextureWrapping( bParam(1) ); else if( sName=="additiveblend" ) SetBlendMode( bParam(1) ? BLEND_ADD : BLEND_NORMAL ); else if( sName=="blend" ) SetBlendMode( sParam(1) ); else if( sName=="zbuffer" ) SetUseZBuffer( bParam(1) ); else if( sName=="ztest" ) SetZTestMode( bParam(1)?ZTEST_WRITE_ON_PASS:ZTEST_OFF ); else if( sName=="ztestmode" ) SetZTestMode( sParam(1) ); else if( sName=="zwrite" ) SetZWrite( bParam(1) ); else if( sName=="clearzbuffer" ) SetClearZBuffer( bParam(1) ); else if( sName=="backfacecull" ) SetCullMode( bParam(1) ? CULL_BACK : CULL_NONE ); else if( sName=="cullmode" ) SetCullMode( sParam(1) ); else if( sName=="hidden" ) SetHidden( bParam(1) ); else if( sName=="hibernate" ) SetHibernate( fParam(1) ); else if( sName=="draworder" ) SetDrawOrder( iParam(1) ); else if( sName=="playcommand" ) PlayCommand( sParam(1) ); else if( sName=="queuecommand" ) { ParsedCommand newcommand = command; newcommand.vTokens.erase( newcommand.vTokens.begin() ); QueueCommand( newcommand ); return; // don't do parameter number checking } /* These are commands intended for a Sprite commands, but they will get * sent to all sub-actors (which aren't necessarily Sprites) on * GainFocus and LoseFocus. So, don't run CheckHandledParams * on these commands. */ else if( sName=="customtexturerect" || sName=="texcoordvelocity" || sName=="scaletoclipped" || sName=="stretchtexcoords" || sName=="position" || sName=="loop" || sName=="play" || sName=="pause" || sName=="rate" ) return; else { CString sError = ssprintf( "Actor::HandleCommand: Unrecognized command name '%s'.", sName.c_str() ); LOG->Warn( sError ); Dialog::OK( sError ); } CheckHandledParams; }