BOOL KSceneSceneEditorDialogMisc::OnInitDialog()
{
	CDialog::OnInitDialog();

	// TODO:  Add extra initialization here
	if ( m_lpSceneSceneEditor )
	{
        D3DCOLOR FogColor = 0;
        GETSCENE() FALSE;
		IEKG3DEnvEffFog* pTempFog = GetFog(pScene);
		if (NULL != pTempFog)
		{
			if(SUCCEEDED(pTempFog->GetFogColor(&FogColor)))
			{
				m_bnFogColorPicker.SetBKColor(FogColor);
			}
		}	

		UpdateSelectOption(FALSE);

	}

	return TRUE;  // return TRUE unless you set the focus to a control
	// EXCEPTION: OCX Property Pages should return FALSE
}
void KSceneSceneEditorDialogMisc::OnBnClickedButtonFogcolor()
{
	// TODO: Add your control notification handler code here
	if(!m_lpSceneSceneEditor)
		return;

	/*KColorPickerDialog* pDlg = GetColorPickerDialog();
	pDlg->Init(&m_lpSceneSceneEditor->m_Fog.m_FogColor,"Bloom Gate Color",NULL,TRUE);
	pDlg->ShowWindow(TRUE);*/
	GETSCENE();
	IEKG3DEnvEffFog* pTempFog = GetFog(pScene);
	if (NULL != pTempFog)
	{
		pTempFog->SetFogColor( m_bnFogColorPicker.GetBkColor());
	}		
	
}
void KSceneSceneEditorDialogMisc::OnBnClickedBnFogUpdateFogParam()
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(!m_lpSceneSceneEditor)
		return;
	KG3DENVEFFFOG_DESCSTRUCT tempStruct;
	tempStruct.m_fFogDensity = m_fFogDes;
	tempStruct.m_fFogStartValue = m_fFogNear;
	tempStruct.m_fFogEndValue = m_fFogFar;
	GETSCENE();
	IEKG3DEnvEffFog* pTempFog = GetFog(pScene);
	if (NULL != pTempFog)
	{
		pTempFog->RequestModification(&tempStruct, m_dwFogModificationOption | KG3DENVEFFFOG_MDO_MODE_PARAM);
		m_dwFogModificationOption = 0;
	}		
}
void KSceneSceneEditorDialogMisc::UpdateFogUI()
{
	D3DCOLOR FogColor = 0;
	GETSCENE();
	IEKG3DEnvEffFog* pTempFog = GetFog(pScene);
	if (NULL != pTempFog)
	{
		KG3DENVEFFFOG_DESCSTRUCT tempStruct;
		if(SUCCEEDED(pTempFog->GetStruct(&tempStruct)))
		{
			m_bnFogColorPicker.SetBKColor(tempStruct.m_FogColor);
			m_fFogFar = tempStruct.m_fFogEndValue;
			m_fFogNear = tempStruct.m_fFogStartValue;
			m_fFogDes = tempStruct.m_fFogDensity;

			CButton* p = static_cast<CButton*>(this->GetDlgItem(IDC_FOG_ENABLE));
			if (NULL != p)
			{
				p->SetCheck(tempStruct.m_bFogEnable ? BST_CHECKED : BST_UNCHECKED);
			}
			UpdateData(FALSE);
		}
	}
}
static errcode GetObject(parsehandle * ph, SceneHandle scene) {
  char objtype[256];
 
  if (fscanf(ph->ifp, "%s", objtype) == EOF) {
    return PARSEEOF;
  }
  if (!stringcmp(objtype, "TRI")) {
    return GetTri(ph, scene);
  }
  if (!stringcmp(objtype, "STRI")) {
    return GetSTri(ph, scene);
  }
  if (!stringcmp(objtype, "VCSTRI")) {
    return GetVCSTri(ph, scene);
  }
  if (!stringcmp(objtype, "SPHERE")) {
    return GetSphere(ph, scene);
  }
  if (!stringcmp(objtype, "FCYLINDER")) {
    return GetFCylinder(ph, scene);
  }
  if (!stringcmp(objtype, "RING")) {
    return GetRing(ph, scene);
  }
  if (!stringcmp(objtype, "POLYCYLINDER")) {
    return GetPolyCylinder(ph, scene);
  }
  if (!stringcmp(objtype, "CYLINDER")) {
    return GetCylinder(ph, scene);
  }
  if (!stringcmp(objtype, "PLANE")) {
    return GetPlane(ph, scene);
  }
  if (!stringcmp(objtype, "BOX")) {
    return GetBox(ph, scene);
  }
  if (!stringcmp(objtype, "SCALARVOL")) {
    return GetVol(ph, scene);
  }
  if (!stringcmp(objtype, "TEXDEF")) {
    return GetTexDef(ph, scene);
  }	
  if (!stringcmp(objtype, "TEXALIAS")) {
    return GetTexAlias(ph);
  }
  if (!stringcmp(objtype, "LIGHT")) {
    return GetLight(ph, scene);
  }
  if (!stringcmp(objtype, "DIRECTIONAL_LIGHT")) {
    return GetDirLight(ph, scene);
  }
  if (!stringcmp(objtype, "SPOTLIGHT")) {
    return GetSpotLight(ph, scene);
  }
  if (!stringcmp(objtype, "SCAPE")) {
    return GetLandScape(ph, scene);
  }
  if (!stringcmp(objtype, "CAMERA")) {
    return GetCamera(ph, scene);
  }
  if (!stringcmp(objtype, "TPOLYFILE")) {
    return GetTPolyFile(ph, scene);
  }
  if (!stringcmp(objtype, "MGFFILE")) {
#ifdef USELIBMGF
    return GetMGFFile(ph, scene);
#else
    printf("MGF File Parsing is not available in this build.\n");
    return PARSEBADSYNTAX;
#endif
  }
  if (!stringcmp(objtype, "#")) {
    int c;
    while (1) {
      c=fgetc(ph->ifp);
      if (c == EOF || c == '\n')    /* eat comment text */
        return PARSENOERR;
    } 
  }
  if (!stringcmp(objtype, "BACKGROUND")) {
    return GetBackGnd(ph, scene);
  }
  if (!stringcmp(objtype, "FOG")) {
    return GetFog(ph, scene);
  }
  if (!stringcmp(objtype, "INCLUDE")) {
    char includefile[FILENAME_MAX];
    fscanf(ph->ifp, "%s", includefile);
    return ReadIncludeFile(ph, includefile, scene);
  }
  if (!stringcmp(objtype, "START_CLIPGROUP")) {
    return GetClipGroup(ph, scene);
  }
  if (!stringcmp(objtype, "END_CLIPGROUP")) {
    return GetClipGroupEnd(ph, scene);
  }
  if (!stringcmp(objtype, "END_SCENE")) {
    return PARSEEOF; /* end parsing */
  }

  PrintSyntaxError(ph, "an object or other declaration", objtype);

  return PARSEBADSYNTAX;
}