//--------------------------------------------------------------------------
  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();
    } 
  }
Example #2
0
		/// <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);
		}
Example #3
0
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();
            }
        }
Example #7
0
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);
    }
  }
Example #10
0
//==========================================================================
//
// 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);
}
Example #11
0
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();
}
Example #12
0
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;
                }
            }
        }