示例#1
0
static int srTraj3d(void* p_void)
{
	int res = 0;
	srTIgorTrj3dInputStruct* pStr = (srTIgorTrj3dInputStruct*)p_void;

	double *pOutBtxData=0, *pOutXData=0, *pOutBtyData=0, *pOutYData=0, *pOutBtzData=0, *pOutZData=0;
	int hStateHorAng, hStateHorCoor, hStateLongDer, hStateLongCoor, hStateVerAng, hStateVerCoor;
	
	int iElecBeam = 0, iMagFld = 0;
	try
	{
        int ns;
		double sStart, sStep;
		ProcErr(srTIgorSend::GetTrj3dDataPointers(pStr->wOutHorAng, pStr->wOutHorCoor, pStr->wOutLongDer, pStr->wOutLongCoor, pStr->wOutVerAng, pStr->wOutVerCoor, pOutBtxData, pOutXData, pOutBtyData, pOutYData, pOutBtzData, pOutZData, ns, sStart, sStep, hStateHorAng, hStateHorCoor, hStateLongDer, hStateLongCoor, hStateVerAng, hStateVerCoor));
		ProcErr(srTIgorSend::GetAndSetElecBeamThin(&iElecBeam, pStr->wElectronBeam));
		ProcErr(srTIgorSend::GetAndSetMagFieldGen(&iMagFld, pStr->wField));

		ProcErr(srElecTrjComp(pOutBtxData, pOutXData, pOutBtyData, pOutYData, pOutBtzData, pOutZData, ns, sStart, sStep, iElecBeam, iMagFld));

		DeleteObjects(iElecBeam, iMagFld);
        ProcErr(srTIgorSend::FinishWorkingWithTrj3dDataPointers(pStr->wOutHorAng, pStr->wOutHorCoor, pStr->wOutLongDer, pStr->wOutLongCoor, pStr->wOutVerAng, pStr->wOutVerCoor, hStateHorAng, hStateHorCoor, hStateLongDer, hStateLongCoor, hStateVerAng, hStateVerCoor));
	}
	catch(int ErrNo)
	{
		if(res = srTIgorSend::FinishWorkingWithTrj3dDataPointers(pStr->wOutHorAng, pStr->wOutHorCoor, pStr->wOutLongDer, pStr->wOutLongCoor, pStr->wOutVerAng, pStr->wOutVerCoor, hStateHorAng, hStateHorCoor, hStateLongDer, hStateLongCoor, hStateVerAng, hStateVerCoor)) return res;
		DeleteObjects(iElecBeam, iMagFld);
		return ErrNo;
	}
	return 0;
}
示例#2
0
static int srWfrCSR(void* p_void)
{
	srTIgorUtiWfrCSR* pStr = (srTIgorUtiWfrCSR*)p_void;

	int iElecBeam = 0, iMagFld = 0, iWfrSmp = 0;
	srTSRWRadInData SRWRadInData;

	try
	{
		ProcErr(srTIgorSend::GetSRWRadInData(pStr->wRad, &SRWRadInData));

		ProcErr(srTIgorSend::GetAndSetMagFieldGen(&iMagFld, pStr->wField));
		ProcErr(srTIgorSend::GetAndSetWfrSampling(&iWfrSmp, pStr->wObservation));
		ProcErr(srTIgorSend::GetAndSetElecBeamGen(&iElecBeam, pStr->wElectronBeam));

		double arPrecParam[8];
		double *pPrecParam = arPrecParam;
		long auxNp = 0;
        ProcErr(srTIgorSend::GetArrDoubleFromNumWave1D(pStr->wIntPar, 8, pPrecParam, auxNp));

		ProcErr(csrElecFldCompExt(&SRWRadInData, iElecBeam, iMagFld, iWfrSmp, arPrecParam));

		ProcErr(srTIgorSend::FinishWorkingWithSRWRadStruct(&SRWRadInData));
		DeleteObjects(iElecBeam, iMagFld, iWfrSmp);
	}
	catch(int ErrNo)
	{
		srTIgorSend::FinishWorkingWithSRWRadStruct(&SRWRadInData);
		DeleteObjects(iElecBeam, iMagFld, iWfrSmp);
		return ErrNo;
	}
	return 0;
}
示例#3
0
//
// ShutdownGL
// - place all memory releases and stuff here
//
void ShutdownGL(void)
{

    DeleteObjects();
    ShutdownLights();

    DeleteObjects();

    ShutdownFireAnts();

    ShutdownWorld();

    Delete_Wall_List();
    Delete_Col_List();

    // destroy particle set
    Destroy_ParticleSet();

    Super_KillText();

    // Call after shutdown fireants
    Super_KillFires();

    Super_DeleteNetwork();

    // This should probably be close to last
    Super_KillGlobals();

    DestroyGlobals();

} // end of the function
示例#4
0
static int srStokesArb(void* p_void)
{
	srTIgorStokesArbInputStruct* pStr = (srTIgorStokesArbInputStruct*)p_void;

	int iElecBeam = 0, iMagFld = 0, iWfrSmp = 0;
	srTParPrecStokesArb PrecStokesArb;
	srTSRWStokesInData StokesInData;

	try
	{
		ProcErr(srTIgorSend::GetAndSetElecBeamThick(&iElecBeam, pStr->wElectronBeam));
		ProcErr(srTIgorSend::GetAndSetMagFieldGen(&iMagFld, pStr->wGenMagField));
		ProcErr(srTIgorSend::GetAndSetWfrSampling(&iWfrSmp, pStr->wObservation));
		ProcErr(srTIgorSend::GetPrecParamStokesArbComp(pStr->wPrecPar, &PrecStokesArb));
		ProcErr(srTIgorSend::GetSRWStokesInData(pStr->wStokes, &StokesInData));

		ProcErr(srStokesCompExt(&StokesInData, iElecBeam, iMagFld, iWfrSmp, &PrecStokesArb));

		ProcErr(srTIgorSend::FinishWorkingWithSRWStokesStruct(&StokesInData));
		DeleteObjects(iElecBeam, iMagFld, iWfrSmp);
	}
	catch(int ErrNo)
	{
		srTIgorSend::FinishWorkingWithSRWStokesStruct(&StokesInData);
		DeleteObjects(iElecBeam, iMagFld, iWfrSmp);
		return ErrNo;
	}
	return 0;
}
示例#5
0
static int srLoop(void* p_void)
{
	//SR.Send.SetIgorRadInputStruct((srTIgorRadInputStruct*)p_void);
	//return SR.ComputeSR_DirectOut();

	srTIgorRadInputStruct* pStr = (srTIgorRadInputStruct*)p_void;

	int iElecBeam = 0, iMagFld = 0, iWfrSmp = 0;
	srTSRWRadInData SRWRadInData;

	try
	{
		ProcErr(srTIgorSend::GetSRWRadInData(pStr->wRad, &SRWRadInData));

		double I, Neb, sElecBeam, Mom1Arr[6];
		ProcErr(srTIgorSend::GetElecBeamThin(pStr->wElectronBeam, I, Neb, Mom1Arr, sElecBeam));
		ProcErr(srElecBeamSet(&iElecBeam, I, Neb, Mom1Arr, 5, 0, 0, sElecBeam));

		ProcErr(srTIgorSend::GetAndSetMagFieldGen(&iMagFld, pStr->wField));
		ProcErr(srTIgorSend::GetAndSetWfrSampling(&iWfrSmp, pStr->wObservation));

		bool AllowAutoChoiceOfNxNzForPropag = true;
		double NxNzOversamplingParam = 1.;
		ProcErr(srTIgorSend::GetPrecParamWfrSamplingForPropag(pStr->wAuxParam, AllowAutoChoiceOfNxNzForPropag, NxNzOversamplingParam));

		int IntegMethNo = 2; 
		double RelPrecOrStep = 0.005, sStartInt = 0., sEndInt = 0.;
		bool ShowProgrIndic = true;
		//ProcErr(srTIgorSend::GetPrecParamElectricFieldComp(pStr->wIntPar, IntegMethNo, RelPrecOrStep, sStartInt, sEndInt));
		ProcErr(srTIgorSend::GetPrecParamElectricFieldComp(pStr->wIntPar, IntegMethNo, RelPrecOrStep, sStartInt, sEndInt, ShowProgrIndic));
		//srTParPrecElecFld PrecElecFld(IntegMethNo, RelPrecOrStep, sStartInt, sEndInt, NxNzOversamplingParam);
		srTParPrecElecFld PrecElecFld(IntegMethNo, RelPrecOrStep, sStartInt, sEndInt, NxNzOversamplingParam, ShowProgrIndic); //OC180312

		//int iWfr = 0;
		//ProcErr(srElecFldComp(&iWfr, iElecBeam, iMagFld, iWfrSmp, &PrecElecFld));
		ProcErr(srElecFldCompExt(&SRWRadInData, iElecBeam, iMagFld, iWfrSmp, &PrecElecFld));

		ProcErr(srTIgorSend::FinishWorkingWithSRWRadStruct(&SRWRadInData));
		DeleteObjects(iElecBeam, iMagFld, iWfrSmp);
	}
	catch(int ErrNo)
	{
		srTIgorSend::FinishWorkingWithSRWRadStruct(&SRWRadInData);
		DeleteObjects(iElecBeam, iMagFld, iWfrSmp);
		return ErrNo;
	}
	return 0;
}
示例#6
0
void CAcctHierDlg::OnOrgListingMode() 
{
      m_rbEquipView.SetCheck( DISABLE );
	  m_rbListView.SetCheck( ENABLE );
	  m_rbPpkgsView.SetCheck( DISABLE );
	  m_rbPpkgsComp.SetCheck( DISABLE );
	  m_rbAlaCarteView.SetCheck( DISABLE );
	  	  /* CAMqa83432 Dynamic allocation of memory
	          depending upon the number of accts in the hierarchy window*/
	  int nCountAcct;
	  if (galHierCountAcctSelection(m_hAPI, 
									 m_iHierId, 
									 &nCountAcct,
									 &m_lpError ) == GAL_FAILURE )
	  {
			EndWaitCursor();
			CGuiMsg::GuiMessage(GUIMSG_ERROR_COUNTING_ACCOUNT);
			return;
	  }

	  m_iMaxAlaProducts = nCountAcct + 1;
	  DeleteObjects();
	  BuildAcct();

}
示例#7
0
bool CSimulate::On_Execute(void){

	AssignParameters();
	CalculateFire();
	
	DeleteObjects();
	return true;

}//method
/**-----------------------------------------------------------------------------
 * 프로그램 시작점
 *------------------------------------------------------------------------------
 */
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{
    /// 윈도우 클래스 등록
    WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,
                      GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
                      "BasicFrame", NULL };
    RegisterClassEx( &wc );

    /// 윈도우 생성
    HWND hWnd = CreateWindow( "BasicFrame", WINDOW_TITLE,
                              WS_OVERLAPPEDWINDOW, 100, 100, WINDOW_W, WINDOW_H,
                              GetDesktopWindow(), NULL, wc.hInstance, NULL );

	g_hwnd = hWnd;

	srand( GetTickCount() );

    /// Direct3D 초기화
    if( SUCCEEDED( InitD3D( hWnd ) ) )
    {
		if( SUCCEEDED( InitObjects() ) )
		{
			if( SUCCEEDED( InitGeometry() ) )
			{

        		/// 윈도우 출력
				ShowWindow( hWnd, SW_SHOWDEFAULT );
				UpdateWindow( hWnd );

        		/// 메시지 루프
				MSG msg;
				ZeroMemory( &msg, sizeof(msg) );
				while( msg.message!=WM_QUIT )
				{
            		/// 메시지큐에 메시지가 있으면 메시지 처리
					if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
					{
						TranslateMessage( &msg );
						DispatchMessage( &msg );
					}
					else
					/// 처리할 메시지가 없으면 Render()함수 호출
						Render();
				}
			}
		}
    }

	DeleteObjects();
    UnregisterClass( "BasicFrame", wc.hInstance );
    return 0;
}
示例#9
0
static int srStokesUnd(void* p_void)
{
	//SR.Send.SetIgorPerStokesInputStruct((srTIgorPerStokesInputStruct*)p_void);
	//return SR.ComputePerStokes();

	//int res = 0;
	srTIgorPerStokesInputStruct* pStr = (srTIgorPerStokesInputStruct*)p_void;
	int iElecBeam=0, iMagFld=0, iWfrSmp=0;
	srTSRWStokesInData StokesInData;

	try
	{
		ProcErr(srTIgorSend::GetAndSetElecBeamThick(&iElecBeam, pStr->wElectronBeam));
		ProcErr(srTIgorSend::GetAndSetMagFieldGen(&iMagFld, pStr->wPerField));
		ProcErr(srTIgorSend::GetAndSetWfrSampling(&iWfrSmp, pStr->wObservation));

		int InitHarm, FinHarm;
		double Kns, Knphi;
		char IntensityOrFlux;
        ProcErr(srTIgorSend::GetPrecParamStokesPerComp(pStr->wPerIntPar, InitHarm, FinHarm, Kns, Knphi, IntensityOrFlux));
		srTParPrecStokesPer PrecStokesPer(InitHarm, FinHarm, Kns, Knphi, IntensityOrFlux);

		ProcErr(srTIgorSend::GetSRWStokesInData(pStr->wStokes, &StokesInData));

		//int iWfr = 0;
		//ProcErr(srStokesComp(&iWfr, iElecBeam, iMagFld, iWfrSmp, &PrecStokesPer));
		ProcErr(srStokesCompExt(&StokesInData, iElecBeam, iMagFld, iWfrSmp, &PrecStokesPer));

		ProcErr(srTIgorSend::FinishWorkingWithSRWStokesStruct(&StokesInData));
		DeleteObjects(iElecBeam, iMagFld, iWfrSmp);
	}
	catch(int ErrNo)
	{
		srTIgorSend::FinishWorkingWithSRWStokesStruct(&StokesInData);
		DeleteObjects(iElecBeam, iMagFld, iWfrSmp);
		return ErrNo;
	}
	return 0;
}
示例#10
0
static int srPowDens(void* p_void)
{
	//SR.Send.SetIgorPowDensInputStruct((srTIgorPowDensInputStruct*)p_void);
	//return SR.ComputePowerDensity();

	int res = 0;
	srTIgorPowDensInputStruct* pStr = (srTIgorPowDensInputStruct*)p_void;
	
	int iElecBeam=0, iMagFld=0, iWfrSmp=0;
	srTSRWPowDensInData SRWPowDensInData;
    if(res = srTIgorSend::GetSRWPowDensInData(pStr->wPowDens, &SRWPowDensInData)) return res;

	try
	{
		ProcErr(srTIgorSend::GetAndSetElecBeamThick(&iElecBeam, pStr->wElectronBeam));
		ProcErr(srTIgorSend::GetAndSetMagFieldGen(&iMagFld, pStr->wGenMagField));
		ProcErr(srTIgorSend::GetAndSetWfrSampling(&iWfrSmp, pStr->wObservation));

		double PrecFact;
		int Method, UseSpecIntLim;
		double sIntStart, sIntFin;
		ProcErr(srTIgorSend::GetPrecParamPowDensComp(pStr->wPowDensIntPar, PrecFact, Method, UseSpecIntLim, sIntStart, sIntFin));
		srTParPrecPowDens PrecPowDens(Method, PrecFact, UseSpecIntLim, sIntStart, sIntFin);

		//int iWfr = 0;
		//ProcErr(srPowDensComp(&iWfr, iElecBeam, iMagFld, iWfrSmp, &PrecPowDens));
		ProcErr(srPowDensCompExt(&SRWPowDensInData, iElecBeam, iMagFld, iWfrSmp, &PrecPowDens));

		ProcErr(srTIgorSend::FinishWorkingWithSRWPowDensStruct(&SRWPowDensInData));
		DeleteObjects(iElecBeam, iMagFld, iWfrSmp);
	}
	catch(int ErrNo)
	{
		srTIgorSend::FinishWorkingWithSRWPowDensStruct(&SRWPowDensInData);
		DeleteObjects(iElecBeam, iMagFld, iWfrSmp);
		return ErrNo;
	}
	return 0;
}
示例#11
0
CDlg_Search::~CDlg_Search()
{
	TRACE(_T("CDlg_Search Destroy\r\n"));
	m_vecRcmmWordList.clear();

	if(m_nSearchTimer) KillTimer(m_nSearchTimer);
	if(m_nRecommTimer) KillTimer(m_nRecommTimer);

	if( m_BackBrush.m_hObject )
		m_BackBrush.DeleteObject();

	DeleteObjects();
}
示例#12
0
static int srWfrGsnBeam(void* p_void)
{
	//SR.Send.SetIgorGsnBeamInputStruct((srTIgorGsnBeamInputStruct*)p_void);
	//return SR.ComputeWfrGsnBeam();

	//int res = 0;
	srTIgorGsnBeamInputStruct* pStr = (srTIgorGsnBeamInputStruct*)p_void;

	int iGsnBeam = 0, iWfrSmp = 0;
	srTSRWRadInData SRWRadInData;

	try
	{
		ProcErr(srTIgorSend::GetAndSetGaussianBeam(&iGsnBeam, pStr->wGsnBeam));
		ProcErr(srTIgorSend::GetAndSetWfrSampling(&iWfrSmp, pStr->wObservation));
		ProcErr(srTIgorSend::GetSRWRadInData(pStr->wRad, &SRWRadInData));

		bool AllowAutoChoiceOfNxNzForPropag = true;
		double NxNzOversamplingParam = -1.;
		ProcErr(srTIgorSend::GetPrecParamWfrSamplingForPropag(pStr->wAuxParam, AllowAutoChoiceOfNxNzForPropag, NxNzOversamplingParam));

		srTParPrecElecFldGaus PrecElecFldGaus(NxNzOversamplingParam);

		//int iWfr = 0;
		//ProcErr(srElecFldGausBeamComp(&iWfr, iGsnBeam, iWfrSmp, &PrecElecFldGaus));
		ProcErr(srElecFldGausBeamCompExt(&SRWRadInData, iGsnBeam, iWfrSmp, &PrecElecFldGaus));

		ProcErr(srTIgorSend::FinishWorkingWithSRWRadStruct(&SRWRadInData));
		DeleteObjects(iWfrSmp, iGsnBeam);
	}
	catch(int ErrNo)
	{
		srTIgorSend::FinishWorkingWithSRWRadStruct(&SRWRadInData);
		DeleteObjects(iWfrSmp, iGsnBeam);
		return ErrNo;
	}
	return 0;
}
示例#13
0
void CAcctHierDlg::OnOrgPpkgscomp() 
{
	 m_iBuildComponents = TRUE;
	 m_rbEquipView.SetCheck( DISABLE );
	 m_rbListView.SetCheck( DISABLE );
	 m_rbPpkgsView.SetCheck( DISABLE );
	 m_rbPpkgsComp.SetCheck( ENABLE );
	 m_rbAlaCarteView.SetCheck( DISABLE );
	 	  	  /* CAMqa83432,83195*/
	  int nCountPpkgscomp;
	  int nCountAcct;
	  int nCountPpkgs;
	  if (galHierCountAcctSelection(m_hAPI, 
									 m_iHierId, 
									 &nCountAcct,
									 &m_lpError ) == GAL_FAILURE )
	  {
			EndWaitCursor();
			CGuiMsg::GuiMessage(GUIMSG_ERROR_COUNTING_ACCOUNT);
			return;
	  }
	  if (galHierCountPkgSelection(m_hAPI, 
									 m_iHierId, 
									 &nCountPpkgs,
									 &m_lpError ) == GAL_FAILURE )
	  {
			EndWaitCursor();
			CGuiMsg::GuiMessage(GUIMSG_ERROR_COUNTING_PACKAGE);
			return;
	  }

      if (galHierCountPkgCompSelection(m_hAPI, 
									 m_iHierId, 
									 &nCountPpkgscomp,
									 &m_lpError ) == GAL_FAILURE )
	  {
			EndWaitCursor();
			CGuiMsg::GuiMessage(GUIMSG_ERROR_COUNTING_PACKAGE_COMPONENTS);
			return;
	  }

	  m_iMaxAlaProducts = nCountAcct + nCountPpkgs+ nCountPpkgscomp + 1;
      DeleteObjects();

	 BuildAcct();
	 BuildPkgs();
	 m_iBuildComponents = FALSE;
	 
}
示例#14
0
文件: World.cpp 项目: ekalchev/Shiny
World::~World()
{
	if(pCurrentCamera != NULL)
	{
		delete pCurrentCamera;
	}

	if(kdtree != NULL)
	{
		delete kdtree;
	}

	DeleteObjects();
	DeleteLights();
	DeleteMaterials();
}
示例#15
0
//
// ShutdownGL
// - place all memory releases and stuff here
//
void ShutdownGL(void)
{
#if 1
	KillFont();		// kill the font 

	DeleteObjects();

	ShutdownBots();

	ShutdownFireAnts();

	nest.shutdown();

	trail_set.shutdown();
	garden.shutdown();



	ShutdownWorld();	// hope I got all these


	Delete_Wall_List();

	Delete_Col_List();

	// ShutdownLights();


	Destroy_ParticleSet();
	
	Super_KillText();

	// Try to place code below --
	Super_KillBots();
	Super_KillFires();

	// make sure thispretty close to last
	Super_KillGlobals();
	DestroyGlobals();

#if ENABLE_CONSOLE
	KillConsole();	// kill launched console screen
#endif

#endif

} // end of the function
示例#16
0
void clutl::ParameterObjectCache::Init(const clcpp::Function* function)
{
	DeleteObjects();

	// Calculate the total space occupied by parameters
	unsigned int total_param_size = 0;
	for (unsigned int i = 0; i < function->parameters.size; i++)
		total_param_size += ParamAllocSize(function->parameters[i]);

	// Pre-allocate the data for the parameters
	m_Data.Reset();
	m_Data.Alloc(total_param_size);

	// And put all write pointers back at the beginning
	m_Data.Reset();
	m_Parameters.Reset();
}
示例#17
0
void GameEngine::Run() {
	while(!_input->GetKey("ESC") && _process->WindowMessage() == 0) {
		
		_gameTime->UpdateTime();

		_input->UpdateKey();

		CheckCollision();

		UpdateObject();

		_renderer->Clear();
		RenderObject();
		_renderer->Flip();

		DeleteObjects();
	}
}
示例#18
0
void CUIGlobals::ClearTables()
{
	// make sure all our gdi objects are deleted
	DeleteObjects();

	// delete the tables, null the pointers, and zero the counters
#define FREETABLE(member, memnum) \
{ \
	if (member != NULL) \
		delete [] member; \
	member = NULL; \
	memnum = 0; \
}
	FREETABLE(m_pElement, m_nElements);
	FREETABLE(m_pFont, m_nFonts);
	FREETABLE(m_pBrush, m_nBrushes);
	FREETABLE(m_pPen, m_nPens);
	FREETABLE(m_pColor, m_nColors);
}
示例#19
0
CImage::~CImage()
{
	CMD_PARMS parms;

    // notify the Image Forum that this image has been destroyed.
    ImageForum.NotifyImageChange(this, IMAGE_DESTROYED);

	if (AltObjList.lpHead)
	   	AlphaEditImage(this, &parms);

	// free up memory occupied by the image
	if (lpCmdList)
    	DestroyCommandList(lpCmdList);

	// delete the image's object list
	if (ObjList.lpHead) // do we have any objects yet?
		DeleteObjects(NULL, NO);

	// free up memory occupied by images palette look-up-table
	if (lpPaletteLUT)
    	FreeUp((LPTR)lpPaletteLUT);

	// free up the palette GDI object
	if (hPal)
   	{
    	// see if this is a palette that belongs to the image
    	if (hPal != lpBltScreen->hGrayPal &&
        	hPal != lpBltScreen->hColorPal)
        	::DeleteObject(hPal);
   	}

	// free up the brush cache
	if (hLastBrush)
    	DestroyMgxBrush((HMGXBRUSH)hLastBrush);

	if( Control.CMSEnabled && m_cmsXform && lpKCMSFreeProc )
		( *lpKCMSFreeProc )( m_cmsXform );

	if (lpClipObject)
		ObjFreeUp(lpClipObject);

}
示例#20
0
文件: AseFile.cpp 项目: Mantora/GA
void AseFile::DeleteAll()
{
	int i;
	DeleteObjects();
	for( i=0; i<materials.size(); i++)
	{
		if(materials[i].pSubMaterials!=NULL)
		{
			delete [] materials[i].pSubMaterials;
		}
	}
	materials.clear();
	for( i=0; i<textureNames.size(); i++)
		delete [] textureNames[i];
	textureNames.clear();
	if(tDiffuse)delete [] tDiffuse; tDiffuse = NULL;
	if(tNormal)delete [] tNormal;  tNormal = NULL;
	if(tHeight)delete [] tHeight;  tHeight = NULL;
	static_lights.clear();
}
示例#21
0
void CGWIC_Cell::SetActive(bool on)
{
	if (on == active) return;
	if (!terrain) return;
	std::cout << "Setting activation for cell " << posX;
	std::cout << " : " << posY;
	std::cout << " -> " << on << std::endl;
	if (on) {
		vector3df ps = getIrrlichtCenter();
		ps.Y = 100 * GWIC_IRRUNITS_PER_METER;
//		ournodes.push_back(scManager->addLightSceneNode(NULL,ps,SColorf(1.f,1.f,1.f),1600,1));
		IMesh* phyterr = TerrainToMesh(2);
		ournodes.push_back(scManager->addMeshSceneNode(phyterr));
		ournodes.back()->setPosition(terrain->getPosition());
		ournodes.back()->setVisible(false);
		terra_collision = new IBvhTriangleMeshShape(ournodes.back(),phyterr,0.f);
		phyterr->drop();
		if (terra_collision)
			ourphys.push_back(phy_world->addRigidBody(terra_collision));
		LoadObjectStates();
	} else {
		while (ourphys.size() > 0) {
			phy_world->removeCollisionObject(ourphys.back(),true);
			//ourphys.back()->remove();
			ourphys.pop_back();
		}
		while (ournodes.size() > 0) {
			ournodes.back()->remove();
			ournodes.pop_back();
		}
		terrain->setTriangleSelector(NULL);
		SaveObjectStates();
		DeleteObjects();
	}
	active = on;
}
示例#22
0
/////////////////////////////////////////////////////////////////////////////
// FUNCTION....: EditMenuDialogProc
//
// DESCRIPTION.:
//
/////////////////////////////////////////////////////////////////////////////
BOOL CALLBACK _export EditMenuDialogProc(
  HWND    hDlg,
  UINT    message,
  WPARAM  wParam,
  LPARAM  lParam)
  {
  BOOL      result;
  OBJECTID  objID;

	switch ( message )
		{
		case WM_INITDIALOG:
			SetWindowLong(hDlg, DWL_USER, lParam);
      InitDialog(hDlg, (OBJECTID)lParam);
	    AUtlSetTitleFont(OTYPE_MENU, NULL, GetDlgItem(hDlg, IDD_OBJECT));
			AUtlCenterDialog(hDlg, 0);
  		result = FALSE;
      break;

		case WM_COMMAND:
			objID = (OBJECTID)GetWindowLong(hDlg, DWL_USER);
			switch ( wParam )
				{
				case IDOK:
					SetFocus(GetDlgItem(hDlg, IDOK));
					UpdateObject(hDlg, objID);
					EndDialog(hDlg, TRUE);
					result = TRUE;
          break;

				case IDCANCEL:
					SetFocus(GetDlgItem(hDlg, IDCANCEL));
					EndDialog(hDlg, FALSE);
					result = TRUE;
          break;

				case IDHELP:
//					WinHelp (hDlg, "serhelp.hlp", HELP_CONTEXT, HELPID_OBJD_Menu) ;
					result = TRUE;
          break;

				case BTN_DISPLAYNAME:
				case BTN_DISPLAYTITLE:
					LbTitleUpdate(hDlg, LB_SOURCE, TRUE);
					LbTitleUpdate(hDlg, LB_DESTINATION, TRUE);
					result = TRUE;
          break;

				case BTN_SHOWITEMS:
				case BTN_SHOWMENUS:
					LbContentUpdate(hDlg,objID);
					UpdateAddButton(hDlg);
					result = TRUE;
          break;

				case BTN_ADD:
				  InsertObject(hDlg);
					UpdateAddButton(hDlg);
					UpdateSeparateButton(hDlg);
			    result = TRUE;
          break;

				case BTN_REMOVE:
					DeleteObjects(hDlg);
					UpdateEditButton(hDlg);
					UpdateRemoveButton(hDlg);
					UpdateSeparateButton(hDlg);
					result = TRUE;
          break;

				case BTN_EDIT:
					EditObject(hDlg);
          LbTitleUpdate(hDlg, LB_SOURCE, TRUE);
					LbTitleUpdate(hDlg, LB_DESTINATION, TRUE);
					result = TRUE;
          break;

				case BTN_SEPARATOR:
					InsertSeparator(hDlg);
					result = TRUE;
          break;

		    case LB_SOURCE:
		 			UpdateAddButton(hDlg);
					if (HIWORD(lParam) == LBN_DBLCLK)
						{
						InsertObject(hDlg);
				    UpdateAddButton(hDlg);
						UpdateSeparateButton(hDlg);
			      }
					result = TRUE;
          break;
          
				case LB_DESTINATION:
					UpdateRemoveButton(hDlg);
					UpdateEditButton(hDlg);
			    if (HIWORD(lParam) == LBN_DBLCLK)
			      {
						EditObject(hDlg);
				    LbTitleUpdate(hDlg, LB_SOURCE, TRUE);
						LbTitleUpdate(hDlg, LB_DESTINATION, TRUE);
						}
			    result = TRUE;
          break;

        default:
          result = FALSE;
				}
			break;

    default:
      result = FALSE;
      break;

	  }

  return result;

  }
示例#23
0
static void DeleteObjects(int Obj1, int Obj2, int Obj3, int Obj4, int Obj5)
{
	int ObjsToDel[] = {Obj1, Obj2, Obj3, Obj4, Obj5};
	DeleteObjects(ObjsToDel, 5);
}
示例#24
0
clutl::ParameterObjectCache::~ParameterObjectCache()
{
	DeleteObjects();
}
示例#25
0
Factory::~Factory()
{
  DeleteObjects();
}
示例#26
0
void C4GameObjects::Clear(bool fClearInactive) {
  DeleteObjects();
  if (fClearInactive) InactiveObjects.Clear();
  ResortProc = NULL;
  LastUsedMarker = 0;
}
示例#27
0
static int srElecBeamPropag(void* p_void)
{
	//int res = 0;
	srTIgorElecBeamPropag* pStr = (srTIgorElecBeamPropag*)p_void;

	int iElecBeam = 0, iOptElem = 0;
	try
	{
		double I, Neb, s0_ebm, Mom1Arr[6], Mom2Arr[30];
		double HorTwissArr[4], VertTwissArr[4], HorEmit, VertEmit;
		int nMom2;
		int TypeDistrTrans, TypeDistrLong;
		double NoiseFactor;
		ProcErr(srTIgorSend::GetElecBeamThick(pStr->wElectronBeam, I, Neb, Mom1Arr, Mom2Arr, nMom2, s0_ebm, TypeDistrTrans, TypeDistrLong, NoiseFactor));
		ProcErr(srTIgorSend::GetElecBeamTwiss(pStr->wElectronBeam, HorTwissArr, VertTwissArr));
		ProcErr(srElecBeamSet(&iElecBeam, I, Neb, Mom1Arr, 5, Mom2Arr, nMom2, s0_ebm));

		double &SigmaX2 = Mom2Arr[0], &MixMomX = Mom2Arr[1], &SigmaPrimeX2 = Mom2Arr[2];
		double &SigmaZ2 = Mom2Arr[3], &MixMomZ = Mom2Arr[4], &SigmaPrimeZ2 = Mom2Arr[5];
		double &SigmaE2 = Mom2Arr[10];
        ProcErr(srElecBeamMom2EmitAndTwiss(&HorEmit, HorTwissArr, HorTwissArr + 1, SigmaX2, SigmaPrimeX2, MixMomX, SigmaE2, HorTwissArr[2], HorTwissArr[3]));
        ProcErr(srElecBeamMom2EmitAndTwiss(&VertEmit, VertTwissArr, VertTwissArr + 1, SigmaZ2, SigmaPrimeZ2, MixMomZ, SigmaE2, VertTwissArr[2], VertTwissArr[3]));

		vector<string> OptElemInfo;
		ProcErr(srTIgorSend::GetVectorOfStrings(pStr->wOptElem, &OptElemInfo));
		
		int AmOfStrings = OptElemInfo.size();
		if(AmOfStrings == 0) return 0;
        char** DescrArr = new char*[AmOfStrings];
		for(int i=0; i<AmOfStrings; i++) 
		{
			const char* CurStr = OptElemInfo[i].c_str();
			if(CurStr == 0) continue;
			int CurLen = strlen(CurStr);
			if(CurLen == 0) continue;
			DescrArr[i] = new char[CurLen + 1];
			strcpy(DescrArr[i], CurStr);
		}
		ProcErr(srOptElemSet(&iOptElem, DescrArr, &AmOfStrings, 0, 0));

		ProcErr(srElecBeamPropagate(iElecBeam, iOptElem));
        ProcErr(srElecBeamGet(&I, Mom1Arr, Mom2Arr, &s0_ebm, iElecBeam));

		//BUG fixed: propagation in presence of dispersion (??!!): Eta chnages, EtaPrime stays constant
        //ProcErr(srElecBeamMom2EmitAndTwiss(&HorEmit, HorTwissArr, HorTwissArr + 1, SigmaX2, SigmaPrimeX2, MixMomX, SigmaE2, HorTwissArr[2], HorTwissArr[3]));
        //ProcErr(srElecBeamMom2EmitAndTwiss(&VertEmit, VertTwissArr, VertTwissArr + 1, SigmaZ2, SigmaPrimeZ2, MixMomZ, SigmaE2, VertTwissArr[2], VertTwissArr[3]));

		ProcErr(srElecBeamMomAndEmit2Twiss(HorTwissArr, HorTwissArr + 1, HorTwissArr + 2, &HorEmit, SigmaX2, SigmaPrimeX2, MixMomX, SigmaE2, HorTwissArr[3])); //EtaPrime is input only
		ProcErr(srElecBeamMomAndEmit2Twiss(VertTwissArr, VertTwissArr + 1, VertTwissArr + 2, &VertEmit, SigmaZ2, SigmaPrimeZ2, MixMomZ, SigmaE2, VertTwissArr[3])); //EtaPrime is input only

		ProcErr(srTIgorSend::SetElecBeamThick(pStr->wElectronBeam, I, Mom1Arr, Mom2Arr, s0_ebm, TypeDistrTrans, TypeDistrLong, NoiseFactor));
		ProcErr(srTIgorSend::SetElecBeamEmitAndTwiss(pStr->wElectronBeam, HorEmit, VertEmit, HorTwissArr, VertTwissArr));

		DeleteObjects(iElecBeam, iOptElem);
        
		for(int k=0; k<AmOfStrings; k++)
		{
			if(DescrArr[k] != 0) delete[] (DescrArr[k]);
			DescrArr[k] = 0;
		}
		if(DescrArr != 0) delete[] DescrArr;

	}
	catch(int ErrNo)
	{
		DeleteObjects(iElecBeam, iOptElem);
		return ErrNo;
	}
	return 0;
}
示例#28
0
void CUIGlobals::RecreateObjects()
{
	DeleteObjects();
	CreateObjects();
}
示例#29
0
static int srMagArb2Per(void* p_void)
{
	//int res = 0;
	srTIgorMagArb2Per* pStr = (srTIgorMagArb2Per*)p_void;
	int iMagArb=0, iMagPer=0;

	try
	{
		//double FieldAbsZeroTol = 1.E-12, sStartB, sStepB, *pBH, *pBV;
		//long NpB;
		//bool BHIsZero, BVIsZero;
		//ProcErr(srTIgorSend::GetMagFieldTransvUnif(pStr->wTrUnifMagField, FieldAbsZeroTol, sStartB, sStepB, NpB, pBH, BHIsZero, pBV, BVIsZero));
		//ProcErr(srMagFldTrUnifSet(&iMagArb, sStartB, sStepB, NpB, pBH, pBV));
		ProcErr(srTIgorSend::GetAndSetMagFieldGen(&iMagArb, pStr->wTrUnifMagField));

		double RelPrec, MaxPerLen_m;
		int MaxAmOfHarm;
		ProcErr(srTIgorSend::GetPrecParamMagArb2Per(pStr->wPrecPar, RelPrec, MaxAmOfHarm, MaxPerLen_m));

		ProcErr(srMagFldPerSetFromTrUnif(&iMagPer, iMagArb, RelPrec, MaxAmOfHarm, MaxPerLen_m));

		double PerLength, TotLength, sCen, SpecPar, TaperPar_TU=0, PhaseSh_OK=0, Fund_keV_per_GeV2;
		int AmOfHarm, TypeOfUnd; // 0- infinite; 1- normal; 2- tapered; 3- optical clystron
		char Type; //'c'- conventional, 't'- tapered, 'k'- optical klystron, 'i'- infinite

		ProcErr(srMagFldPerGet(iMagPer, &PerLength, &TotLength, &sCen, &AmOfHarm, &Type, &SpecPar, &Fund_keV_per_GeV2));

		if(Type == 'i') TypeOfUnd = 0;
		else if(Type == 'c') TypeOfUnd = 1;
		else if(Type == 't') { TypeOfUnd = 2; TaperPar_TU = SpecPar;}
		else if(Type == 'k') { TypeOfUnd = 3; PhaseSh_OK = SpecPar;}

		int* ArrHarmNo=0;
		char* ArrXorZ=0;
		double *ArrK=0, *ArrPhase=0;
		if(AmOfHarm > 0)
		{
            ArrHarmNo = new int[AmOfHarm];
            ArrXorZ = new char[AmOfHarm];
            ArrK = new double[AmOfHarm];
			ArrPhase = new double[AmOfHarm];
            ProcErr(srMagFldPerHarmGet(iMagPer, ArrHarmNo, ArrXorZ, ArrK, ArrPhase));
        }

		if(AmOfHarm > 20) //limitation for Igor Pro
		{
            AmOfHarm = 20;
			ProcErr(TOO_LARGE_MAX_MAG_FIELD_HARMONIC_NUMBER);
		}

        ProcErr(srTIgorSend::SetMagFieldPeriodic(pStr->wPerMagField, PerLength, TotLength, AmOfHarm, ArrHarmNo, ArrXorZ, ArrK, ArrPhase, TypeOfUnd, TaperPar_TU, PhaseSh_OK, Fund_keV_per_GeV2));

		if(ArrHarmNo != 0) delete[] ArrHarmNo;
		if(ArrXorZ != 0) delete[] ArrXorZ;
		if(ArrK != 0) delete[] ArrK;
		if(ArrPhase != 0) delete[] ArrPhase;

		DeleteObjects(iMagArb, iMagPer);
	}
	catch(int ErrNo)
	{
		DeleteObjects(iMagArb, iMagPer);
		return ErrNo;
	}
	return 0;
}
示例#30
0
/********************************************************************************
Destructor
********************************************************************************/
CGrid::~CGrid(void)
{
	DeleteObjects();
}