//-------------------------------------------------------------------------- void EnvironmentDialog::notifyEditTextChange(MyGUI::EditBox* _sender) { if (_sender == mStartFog) { mStart = MyGUI::utility::parseFloat(mStartFog->getCaption()); SetFog(); } else if (_sender == mEndFog) { mEnd = MyGUI::utility::parseFloat(mEndFog->getCaption()); SetFog(); } else { MyGUI::EditBox* edit = static_cast<MyGUI::EditBox*>(_sender); size_t cursor = edit->getTextCursor(); size_t num = MyGUI::utility::parseSizeT(edit->getCaption()); if (num > 255) num = 255; edit->setCaption(MyGUI::utility::toString(num)); if (cursor < edit->getTextLength()) edit->setTextCursor(cursor); mFogColour = ColourValue( MyGUI::utility::parseFloat(mEditRed->getCaption()) / 255.0f, MyGUI::utility::parseFloat(mEditGreen->getCaption()) / 255.0f, MyGUI::utility::parseFloat(mEditBlue->getCaption()) / 255.0f); SetFog(); } }
/// <summary> /// カメラ、ライト、フォグ、画質の設定を初期設定に戻します。 /// </summary> /// <returns> /// なし /// </returns> inline void ResetScene() { SetAmbientLight(ColorF(0.1)); SetAmbientLightForward(ColorF(0.1)); SetLight(0, Light::Default()); for (uint32 i = 1; i <= MaxLightIndex; ++i) { SetLight(i, Light::None()); } SetLightForward(0, Light::Default()); for (uint32 i = 1; i <= MaxLightIndexForward; ++i) { SetLightForward(i, Light::None()); } SetFog(Fog::None()); SetFogForward(Fog::None()); SetCamera(Camera()); SetAntiAliasing(AntiAliasing::Default); SetLightBufferQuality(100); }
void AVDirector::RunApplication(float fCullValue, HINSTANCE hIns, HWND parentHandle, bool isChild, AVRECT &windowRect, wchar_t *application) { m_Application = new AVWinD3D((WNDPROC)AVDirector::WndProc, hIns, windowRect, parentHandle, application, isChild); m_Application->InitWinD3D(application, true, true, D3DCULL_CCW); MSG msg; ZeroMemory( &msg, sizeof( msg ) ); _initMatrix(fCullValue); _initLight(); SetFog(fCullValue - 100.f, fCullValue - 50.f); if(m_Application->isChild()) return; while( msg.message != WM_QUIT ) { if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } else { RunToInnerSystem(); tickTime(); if(m_bIsFrameCheck) calculateFPS(); } } }
//-------------------------------------------------------------------------- void EnvironmentDialog::notifyMouseButtonClick(MyGUI::Widget* _sender) { if (_sender == mCheckFog) { mCheckFog->setButtonPressed( ! mCheckFog->getButtonPressed()); SetFog(); } }
// Functions used to maintain the states above. StateStackClass::StateStackClass() { stackDepth = 0; XformedPosPoolNext = XformedPosPoolBuffer; IntensityPoolNext = IntensityPoolBuffer; ClipInfoPoolNext = ClipInfoPoolBuffer; LODBiasInv = 1.0f; SetTextureState(TRUE); SetFog(1.f,NULL); }
void RemoveAuraFromMap() { if (!me) return; SetFog(false); if (Creature* bunny = me->FindNearestCreature(NPC_GENERAL_PURPOSE_BUNNY_JMF, 20.0f)) { bunny->DespawnOrUnsummon(); } }
void Stage01::SetupFog() { auto scene = (GameScene*)(Game::GetInstance()->GetScene().Get()); auto backgroundLayer = scene->GetBackgroundLayer(); backgroundLayer->EnableFog(true); Fog fog; fog.fogColor = Vector4f(0, 0, 0, 1); fog.fogStart = 100; fog.fogEnd = 3000; backgroundLayer->SetFog(fog); }
void Reset() { if (!me) return; _Reset(); summons.DespawnAll(); events.Reset(); vaporCount = 0; me->SetFullHealth(); instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); RemoveAuraFromMap(); SetFog(false); below_10 = false; below_25 = false; below_50 = false; below_75 = false; numberCastCoalesce = 0; phase = PHASE_NORMAL; }
//-------------------------------------------------------------------------- void EnvironmentDialog::createMyGUICtrl() { if(!mMain) { mPrefix = MyGUI::utility::toString(this, "_"); MyGUI::LayoutManager& lm = MyGUI::LayoutManager::getInstance(); mMain = lm.loadLayout("EnvironmentDialog.layout", mPrefix).at(0)->castType<MyGUI::Window>(); mMain->setVisible(true); MyGUI::InputManager::getInstance().addWidgetModal(mMain); mMain->eventWindowButtonPressed = MyGUI::newDelegate(this, &EnvironmentDialog::notifyWindowButtonPressed); mCheckFog = mMain->findWidget(mPrefix + "check_Fog")->castType<MyGUI::Button>(); mCheckFog->eventMouseButtonClick = MyGUI::newDelegate(this, &EnvironmentDialog::notifyMouseButtonClick); mEditRed = mMain->findWidget(mPrefix + "edit_Red")->castType<MyGUI::EditBox>(); mEditGreen = mMain->findWidget(mPrefix + "edit_Green")->castType<MyGUI::EditBox>(); mEditBlue = mMain->findWidget(mPrefix + "edit_Blue")->castType<MyGUI::EditBox>(); mStartFog = mMain->findWidget(mPrefix + "start_Fog")->castType<MyGUI::EditBox>(); mEndFog = mMain->findWidget(mPrefix + "end_Fog")->castType<MyGUI::EditBox>(); mFogColour = ColourValue( MyGUI::utility::parseFloat(mEditRed->getCaption()) / 255.0f, MyGUI::utility::parseFloat(mEditGreen->getCaption()) / 255.0f, MyGUI::utility::parseFloat(mEditBlue->getCaption()) / 255.0f); mStart = MyGUI::utility::parseFloat(mStartFog->getCaption()); mEnd = MyGUI::utility::parseFloat(mEndFog->getCaption()); SetFog(); mEditRed->eventEditTextChange = MyGUI::newDelegate(this, &EnvironmentDialog::notifyEditTextChange); mEditGreen->eventEditTextChange = MyGUI::newDelegate(this, &EnvironmentDialog::notifyEditTextChange); mEditBlue->eventEditTextChange = MyGUI::newDelegate(this, &EnvironmentDialog::notifyEditTextChange); mStartFog->eventEditTextChange = MyGUI::newDelegate(this, &EnvironmentDialog::notifyEditTextChange); mEndFog->eventEditTextChange = MyGUI::newDelegate(this, &EnvironmentDialog::notifyEditTextChange); } }
//========================================================================== // // Draw the plane segment into the gap // //========================================================================== void FDrawInfo::DrawFloodedPlane(wallseg * ws, float planez, sector_t * sec, bool ceiling) { GLSectorPlane plane; int lightlevel; FColormap Colormap; FMaterial * gltexture; plane.GetFromSector(sec, ceiling); gltexture=FMaterial::ValidateTexture(plane.texture, false, true); if (!gltexture) return; if (isFullbrightScene()) { Colormap.Clear(); lightlevel=255; } else { Colormap = sec->Colormap; if (gltexture->tex->isFullbright()) { Colormap.MakeWhite(); lightlevel=255; } else lightlevel=abs(ceiling? sec->GetCeilingLight() : sec->GetFloorLight()); } int rel = getExtraLight(); SetColor(lightlevel, rel, Colormap, 1.0f); SetFog(lightlevel, rel, &Colormap, false); gl_RenderState.SetMaterial(gltexture, CLAMP_NONE, 0, -1, false); float fviewx = Viewpoint.Pos.X; float fviewy = Viewpoint.Pos.Y; float fviewz = Viewpoint.Pos.Z; gl_RenderState.SetPlaneTextureRotation(&plane, gltexture); gl_RenderState.Apply(); float prj_fac1 = (planez-fviewz)/(ws->z1-fviewz); float prj_fac2 = (planez-fviewz)/(ws->z2-fviewz); float px1 = fviewx + prj_fac1 * (ws->x1-fviewx); float py1 = fviewy + prj_fac1 * (ws->y1-fviewy); float px2 = fviewx + prj_fac2 * (ws->x1-fviewx); float py2 = fviewy + prj_fac2 * (ws->y1-fviewy); float px3 = fviewx + prj_fac2 * (ws->x2-fviewx); float py3 = fviewy + prj_fac2 * (ws->y2-fviewy); float px4 = fviewx + prj_fac1 * (ws->x2-fviewx); float py4 = fviewy + prj_fac1 * (ws->y2-fviewy); FQuadDrawer qd; qd.Set(0, px1, planez, py1, px1 / 64, -py1 / 64); qd.Set(1, px2, planez, py2, px2 / 64, -py2 / 64); qd.Set(2, px3, planez, py3, px3 / 64, -py3 / 64); qd.Set(3, px4, planez, py4, px4 / 64, -py4 / 64); qd.Render(GL_TRIANGLE_FAN); gl_RenderState.EnableTextureMatrix(false); }
void DrawScene() { BeginMeshDrawing(); if(fogenabled) SetFog(); SetConstantMatrices(); newSelection = -1; SetMatrices(onevector, nullvector, nullvector); CalcRay(); newSelZ = -1; DrawObj(levelobj); if(currentSelection.get() != newSelection.get()) { currentSelection = newSelection; //printf("New selection: %i\n", newSelection); } if(meshbatching) DrawOOBM(); if(experimentalKeys) { // Stampdown CalcStampdownPos(); /* int od; if((od = FindObjDef(CLASS_CHARACTER, "Archer")) != -1) { if(stdownvalid) { renderer->BeginMeshDrawing(); SetMatrices(onevector, nullvector, stdownpos); SetTransformMatrix(&matrix); objdef[od].subtypes[0].appear[0].def->draw(0); //sprintf(statustextbuf, "stdownpos = (%f, %f, %f)", stdownpos.x, stdownpos.y, stdownpos.z); //sprintf(statustextbuf, "raydir = (%f, %f, %f)", raydir.x, raydir.y, raydir.z); //sprintf(statustextbuf, "raystart = (%f, %f, %f)", raystart.x, raystart.y, raystart.z); } //else strcpy(statustextbuf, "Invalid stampdown position."); //statustext = statustextbuf; } */ if(objtypeToStampdown) if(stdownvalid) if(playerToGiveStampdownObj.valid()) { // Align buildings in the grid. AlignObjPosToGrid(objtypeToStampdown, stdownpos, stampdownRot); Model *m = GetObjTypeDefaultModel(objtypeToStampdown); if(m) { renderer->BeginMeshDrawing(); SetMatrices(objtypeToStampdown->scale, Vector3(0,-stampdownRot,0), stdownpos); SetTransformMatrix(&matrix); m->draw(playerToGiveStampdownObj->color); } } int moti; if(mousetool == 7) if(stdownvalid) if(newmanorplayer.valid()) if((moti = FindObjDef(CLASS_BUILDING, "Manor")) != -1) { CObjectDefinition *cod = &(objdef[moti]); // Align buildings in the grid. stdownpos.x = (int)(stdownpos.x / 5) * 5.0f + 2.5f; stdownpos.z = (int)(stdownpos.z / 5) * 5.0f + 2.5f; stdownpos.y = GetHeight(stdownpos.x, stdownpos.z); Model *m = GetObjTypeDefaultModel(cod); if(m) { renderer->BeginMeshDrawing(); SetMatrices(cod->scale, Vector3(0,-stampdownRot,0), stdownpos); SetTransformMatrix(&matrix); m->draw(newmanorplayer->color); } } } if(enableMap) { SetMatrices(Vector3(5.0f, 1.0f, -5.0f), nullvector, Vector3(-mapedge*5,0,+mapheight*5-mapedge*5)); SetTransformMatrix(&matrix); DrawMap(); DrawTileHighlights(); DrawLakes(); } drawdebug = 0; if(fogenabled) DisableFog(); }
BOOL Initialize (GL_Window* window, Keys* keys) // Any GL Init Code & User Initialiazation Goes Here { glewInit(); glClearColor(0.0f, 0.0f, 0.0f, 0.5); glClear (GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT); glEnable(GL_TEXTURE_2D); CDDS TitleDDS; TitleDDS.loadCompressedTexture("Data/Title.dds",GL_LINEAR); glBindTexture(GL_TEXTURE_2D, TitleDDS.g_compressedTextureID); // Select Our Font Texture glDisable(GL_DEPTH_TEST); // Disables Depth Testing glMatrixMode(GL_PROJECTION); // Select The Projection Matrix glPushMatrix(); // Store The Projection Matrix glLoadIdentity(); // Reset The Projection Matrix glOrtho(0,winwidth,0,winheight,-1,1); // Set Up An Ortho Screen glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPushMatrix(); // Store The Modelview Matrix glLoadIdentity(); // Reset The Modelview Matrix glBegin(GL_QUADS); glTexCoord2f(0.0f, 1.0f); glVertex2i(0,winheight); glTexCoord2f(1.0f, 1.0f); glVertex2i(winwidth,winheight); glTexCoord2f(1.0f, 0.0f); glVertex2i(winwidth, 0); glTexCoord2f(0.0f, 0.0f); glVertex2i(0, 0); glEnd(); glMatrixMode(GL_PROJECTION); // Select The Projection Matrix glPopMatrix(); // Restore The Old Projection Matrix glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPopMatrix(); // Restore The Old Projection Matrix glEnable(GL_DEPTH_TEST); // Enables Depth Testing SwapBuffers (window->hDC); m_VBMD = new CLoadVBMD; m_VBMD->m_IsSupportFBO=true; InitSound(); loadmodels(); //angle=-90.0f; posX=posY=posZ=0; //posY=-500.0f; InitCG(); SkyBox.Init(); AmbientReflectiveTexture=SkyBox.SunCubeID; CDDS loadDDS; SeaTexID=loadDDS.loadCompressedTexture("Data/sea.dds",GL_LINEAR_MIPMAP_LINEAR); ReadMeTex.loadCompressedTexture("Data/readme.dds",GL_LINEAR); //CMd5CameraTest.LoadCamera("Data/123.md5camera"); CMd5CameraTest.LoadCamera(LoadCameraName); Md5Cameras[1].LoadCamera("Data/1.md5camera"); Md5Cameras[2].LoadCamera("Data/2.md5camera"); Md5Cameras[3].LoadCamera("Data/3.md5camera"); Md5Cameras[4].LoadCamera("Data/4.md5camera"); Md5Cameras[5].LoadCamera("Data/5.md5camera"); Md5Cameras[6].LoadCamera("Data/6.md5camera"); Md5Cameras[7].LoadCamera("Data/7.md5camera"); Md5Cameras[8].LoadCamera("Data/8.md5camera"); Md5Cameras[9].LoadCamera("Data/9.md5camera"); Md5Cameras[10].LoadCamera("Data/10.md5camera"); Md5CamerasT[1].LoadCamera("Data/1t.md5camera"); Md5CamerasT[2].LoadCamera("Data/2t.md5camera"); Md5CamerasT[3].LoadCamera("Data/3t.md5camera"); Md5CamerasT[4].LoadCamera("Data/4t.md5camera"); Md5CamerasT[5].LoadCamera("Data/5t.md5camera"); Md5CamerasT[6].LoadCamera("Data/6t.md5camera"); Md5CamerasT[7].LoadCamera("Data/7t.md5camera"); Md5CamerasT[8].LoadCamera("Data/8t.md5camera"); Md5CamerasT[9].LoadCamera("Data/9t.md5camera"); Md5CamerasT[10].LoadCamera("Data/10t.md5camera"); g_window = window; g_keys = keys; BuildFont(); glViewport(0 , 0,window->init.width ,window->init.height); // Set Up A Viewport glMatrixMode(GL_PROJECTION); // Select The Projection Matrix glLoadIdentity(); // Reset The Projection Matrix gluPerspective(50, (float)window->init.width/(float)window->init.height, 1, 10000); // Set Our Perspective glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glLoadIdentity(); // Reset The Modelview Matrix glEnable(GL_DEPTH_TEST); // Enable Depth Testing glShadeModel(GL_SMOOTH); // Select Smooth Shading // Set The Clear Color To Black glEnable(GL_TEXTURE_2D); glCullFace(GL_BACK); glEnable(GL_BLEND); glEnable(GL_COLOR_MATERIAL); glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); glLightModelfv(GL_LIGHT_MODEL_AMBIENT,globalAmbientGL); glLightfv(GL_LIGHT1,GL_DIFFUSE,lightColor); glLightfv(GL_LIGHT1,GL_SPECULAR,lightColor); glLineWidth(float(SystemSet.LineWidth)); SetFog(); ViewPos.UDMplane.Reset(); ViewPos.UDMplane.TranslateInternal(Vector3d(1947.91 ,-585.33 ,-1310.41)); ViewPos.TurnTo(Vector3d(1849.3800,-580.2999,-1313.8549)); ViewPos.UDPstate.NextState(); MFighter=ViewPos.UDMplane; MFighter.RotateInternal(Vector3d(0.0f, CRad(180.0f), 0.0f)); MFighter.RotateInternal(Vector3d(0.0f,0.0f ,- CRad(Getrotation(MFighter)))); //MFighter.RotateInternal(Vector3d(0.0f, CRad(45), 0.0f)); QueryPerformanceCounter(&t1); QueryPerformanceFrequency(&feq); CMd5CameraTest.StartTime=double(t1.QuadPart)/double(feq.QuadPart); return TRUE; // Return TRUE (Initialization Successful) }
void UpdateAI(uint32 const uiDiff) { if (!me || !instance) return; if (!UpdateVictim()) return; DoMeleeAttackIfReady(); events.Update(uiDiff); if (me->GetHealthPct() < 75 && !below_75) { Talk(SAY_FOG_1); if (Creature* bunny = me->SummonCreature(NPC_GENERAL_PURPOSE_BUNNY_JMF, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ())) { bunny->AddAura(SPELL_BUNNY_AURA, bunny); bunny->AddAura(SPELL_FOG_AURA, bunny); } SetFog(true); events.ScheduleEvent(EVENT_PHASE_TWO, 1000); events.ScheduleEvent(EVENT_UPDATE_FOG, 100); below_75 = true; } else if (me->GetHealthPct() < 50 && !below_50) { Talk(SAY_FOG_1); events.ScheduleEvent(EVENT_PHASE_TWO, 500); below_50 = true; } else if (me->GetHealthPct() < 25 && !below_25) { Talk(SAY_FOG_1); events.ScheduleEvent(EVENT_PHASE_TWO, 500); below_25 = true; } else if (me->GetHealthPct() < 10 && !below_10) { if (IsHeroic()) { SummonFinalVapors(); below_10 = true; } } while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) { case EVENT_SWIPE: if (Unit* victim = me->GetVictim()) me->CastSpell(victim, IsHeroic() ? SPELL_SWIPE_H :SPELL_SWIPE); events.ScheduleEvent(EVENT_SWIPE, 3000); break; case EVENT_UPDATE_FOG: instance->DoCastSpellOnPlayers(SPELL_FOG_AURA); break; case EVENT_GO_FOR_THROAT: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true)) DoCast(target, SPELL_GO_FOR_THE_THROAT); events.ScheduleEvent(EVENT_GO_FOR_THROAT, 10000); break; case EVENT_THIRST_FOR_BLOOD: DoCast(me, SPELL_THIRST_FOR_BLOOD); break; case EVENT_PHASE_TWO: events.CancelEvent(EVENT_GO_FOR_THROAT); events.CancelEvent(EVENT_SWIPE); me->RemoveAurasDueToSpell(SPELL_THIRST_FOR_BLOOD); me->SetVisible(false); events.ScheduleEvent(EVENT_FLEE_TO_FROG, 100); if (vaporCount > 0) { Talk(SAY_FOG_2); } else if (Unit* victim = me->GetVictim()) { Talk(SAY_SPELL_1); me->CastSpell(victim, SPELL_GO_FOR_THE_THROAT); } break; case EVENT_FLEE_TO_FROG: me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_PACIFIED); me->DoFleeToGetAssistance(); Talk(SAY_AUUUU); events.RescheduleEvent(EVENT_SUMMON_VAPOR, 1000); events.ScheduleEvent(EVENT_SHOW_UP, 25000); break; case EVENT_SHOW_UP: me->SetVisible(true); vaporCount = 0; me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_PACIFIED); events.ScheduleEvent(EVENT_SWIPE, 1000); events.ScheduleEvent(EVENT_GO_FOR_THROAT, 3000); events.ScheduleEvent(EVENT_THIRST_FOR_BLOOD, 0); break; case EVENT_SUMMON_VAPOR: if (phase == PHASE_FOG) if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)) me->CastSpell(target, SPELL_SUMMON_VAPOR); events.RescheduleEvent(EVENT_SUMMON_VAPOR, 3500); break; } } }