Beispiel #1
0
//=============================================================================
// Delete all reserved memory
//=============================================================================
void Game::deleteAll()
{
    releaseAll();               // call onLostDevice() for every graphics item
    safeDelete(graphics);
    safeDelete(input);
    initialized = false;
}
    bool AudioHandler::setMusic(const std::string& musicKey)
    {
        //Set current music playing.
        stopMusic();

        if(musicList.find(musicKey) == musicList.end())
        {
            std::cout << "Music not found";
            return true;
        }

        if(song != NULL) safeDelete(song);
        song = new sbe::Music();
        if(!song->OpenFromFile(musicList[musicKey]))
        {
            Logger::writeMsg(1) << "Music could not be loaded!";
            safeDelete(song);
            return true;
        }
        song->SetVolume(mVol);
        song->Initialize(2, 44100);
        song->Play();
        Logger::writeMsg(1) << "Music \"" << musicKey << "\" now playing.";

        return false;
    }
Beispiel #3
0
Lab3Canvas::~Lab3Canvas()
{
    safeDelete(m_timer);
    safeDelete(m_camera);
    gluDeleteQuadric(m_quadric);
    makeCurrent();
}
Beispiel #4
0
Kernel::~Kernel()
{
    program->removeAllShaders();
    safeDelete(fragmentShader);
    safeDelete(vertexShader);
    safeDelete(program);
}
Beispiel #5
0
void CSystem::destroyContexts()
{
	assert( G_RENDERCTX );
	safeDelete( G_RENDERCTX );

	assert( G_INPUTCTX );
	safeDelete( G_INPUTCTX );
}
Beispiel #6
0
//=============================================================================
// Starting point for a Windows application
//=============================================================================
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    LPSTR lpCmdLine, int nCmdShow)
{
    // Check for memory leak if debug build
    #if defined(DEBUG) | defined(_DEBUG)
        _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
    #endif

    MSG msg;

    // Create the game, sets up message handler
    game = new TileCollision;

    // Create the window
    if (!CreateMainWindow(hwnd, hInstance, nCmdShow))
        return 1;

    try{
        game->initialize(hwnd);     // throws GameError

        // main message loop
        int done = 0;
        while (!done)
        {
            if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) 
            {
                // look for quit message
                if (msg.message == WM_QUIT)
                    done = 1;

                // decode and pass messages on to WinProc
                TranslateMessage(&msg);
                DispatchMessage(&msg);
            } else
                game->run(hwnd);    // run the game loop
        }
        safeDelete(game);           // free memory before exit
        return msg.wParam;
    }
    catch(const GameError &err)
    {
        game->deleteAll();
        DestroyWindow(hwnd);
        MessageBox(NULL, err.getMessage(), "Error", MB_OK);
    }
    catch(...)
    {
        game->deleteAll();
        DestroyWindow(hwnd);
        MessageBox(NULL, "Unknown error occured in game.", "Error", MB_OK);
    }

    safeDelete(game);       // free memory before exit
    return 0;
}
LyingShapesScene::~LyingShapesScene()
{
	for (auto shapeIt = cubes.begin(); shapeIt != cubes.end(); shapeIt++)
	{
		delete (*shapeIt);
	}
	cubes.clear();

	safeDelete(&grid);
	safeDelete(&coords);
	safeDelete(&mCubes);
}
Beispiel #8
0
	void cCore::finalize()
	{
		safeDelete(m_gui);
		safeDelete(m_renderer, true);
		safeDelete(m_luaMgr);
		safeDelete(m_classCreater);
		safeDelete(m_msgMgr);
		safeDelete(m_batchRenderMgr, true);
		safeDelete(m_postProcessMgr, true);
		safeDelete(m_fileSystem, true);
		safeDelete(m_fileWatcher);
		safeDelete(m_debugRenderMgr, true);		
	}
Beispiel #9
0
void FlowText::close()
{
	if (mRunning)
	{
		gGlobalClient->getTimerAxis()->KillTimer(0, this);
		mText.clear_wstr();
		safeDelete(mPosX);
		safeDelete(mPosY);
		safeDelete(mAlpha);
		safeDelete(mSize);

		mRunning = false;
	}
}
CWall3D::~CWall3D()
{
	for( int i = 0; i < RMCOUNT; ++i ) {
		safeDelete( mRenderables[i] );
	}
	safeDelete( mFadeInMesh );

	stl_utils::wipe( mPiecesCombined );
	safeDeleteArray( mPieces3D );
	safeDeleteArray( mFracturedPieces );
	safeDeleteArray( mPieceRestoreTimes );

	safeDeleteArray( mQuadtree );
	safeDeleteArray( mResTimeGrid );
}
Beispiel #11
0
	void AsynFileDevice::Close()
	{
		if ( m_hHandle!=INVALID_HANDLE_VALUE )
		{
			::CloseHandle(m_hHandle);
			m_hHandle = INVALID_HANDLE_VALUE;
		}

		assert(m_pendingList.empty());

		m_pendingList.clear();

		safeDelete(m_pReader);
		safeDelete(m_pWriter);
	}
Beispiel #12
0
void CDemo::shutdown()
{
	gWriteD3DSettingsPref();
	
	CONS << "Shutting down..." << endl;
	CGameInfo::finalize();

	delete gDebugRenderer;

	safeDelete( gUIDlg );
	safeDelete( gUISettingsDlg );
	safeDelete( gUIHelpDlg );
	safeDelete( gUIGameSetupDlg );
	CONS << "Done!" << endl;
}
Beispiel #13
0
	bool MemoryFileWriter::reallocate(size_t s)
	{
		if (s == 0)
		{
			return false;
		}

		size_t newSize = _cursor + s;

		void* b = new char[newSize];
		if (b == NULL)
		{
			return false;
		}
		memset(b, 0, newSize);
		if (_cursor > 0)
		{
			memcpy(b, _buffer, _cursor);
		}

		safeDelete(_buffer);
		_buffer = b;

		_length = newSize;

		return true;
	}
Beispiel #14
0
    void AudioHandler::fadeOut(float elapsed, const std::string& strM, float s)
    {
        //Fade out music during s seconds, or crossfade between song and strM if c = true.
        if(fadeCounter != 0) return;
        if(strM != "") cross = true;
        fadeCounter = elapsed;
        interval = mVol / s;

        if(cross)
        {
            if(musicList.find(strM) == musicList.end())
                std::cout << "Music not found";

            crossSong = new sbe::Music();
            if(!crossSong->OpenFromFile(musicList[strM]))
            {
                Logger::writeMsg(1) << "Music could not be loaded!";
                safeDelete(crossSong);
            }
            crossSong->SetVolume(0);
            crossSong->Initialize(2, 44100);
            crossSong->Play();
            Logger::writeMsg(1) << "Music \"" << strM << "\" now playing.";
        }
    }
Beispiel #15
0
// This function will take a resolved URI and create a version of it that is relative to
// another existing URI.  The new URI is stored in the "originalURI"
int daeURI::makeRelativeTo(daeURI* relativeToURI)
{
	// !!!GAC for some reason, relativeToURI is in pending and not success state, why??
	// Can't do this function unless both URIs have already been successfully resolved
	if(getState() != uri_success /*|| relativeToURI->getState() != uri_success*/ )
		return(DAE_ERR_INVALID_CALL);  // !!!GAC Need to assign a real error code to this

	// Can only do this function if both URIs have the same scheme and authority

	if((strcmp(getProtocol(), relativeToURI->getProtocol()) != 0) || (strcmp(getAuthority(), relativeToURI->getAuthority()) != 0))
		return(DAE_ERR_INVALID_CALL);  // !!!GAC Need to assign a real error code to this
	
	// advance till we find a segment that doesn't match

	const char *this_filepath		= getFilepath();
	const char *relativeTo_filepath = relativeToURI->getFilepath();
	const char *this_slash			= this_filepath;
	const char *relativeTo_slash	= relativeTo_filepath;

	while(*this_filepath == *relativeTo_filepath)
	{
		if(*this_filepath == '/')
		{
			this_slash = this_filepath;
			relativeTo_slash = relativeTo_filepath;
		}
		this_filepath++;
		relativeTo_filepath++;
	}

	// Decide how many ../ segments are needed (Filepath should always end in a /)
	int segment_count = 0;
	relativeTo_slash++;
	while(*relativeTo_slash != 0)
	{
		if(*relativeTo_slash == '/')
			segment_count ++;
		relativeTo_slash++;
	}
	this_slash++;
	// Delete old URI string
	safeDelete(originalURIString);
	// Allocate memory for a new "originalURI" and free the old one
	char *newRelativeURI = (char*) daeMemorySystem::malloc("uri",strlen(relativeTo_slash)+ strlen(file)+(segment_count*3)+strlen(getID())+2);
	char *temp = newRelativeURI;
	for(int i = 0; i < segment_count; i++)
	{
		strcpy(temp,"../");
		temp += 3;
	}
	strcpy(temp,this_slash);
	strcat(temp,file);
	if(id!=empty && strlen(getID()) != 0)
	{
		strcat(temp,"#");
		strcat(temp,getID());
	}
	originalURIString = newRelativeURI;
	return(DAE_OK);
}
Beispiel #16
0
daeURI::daeURI(daeString uriString, daeBool nofrag)
{
	initialize();
	// !!!GAC this is inefficient as hell, but was the best way to isolate this functionality till the
	// !!!GAC daeURI class can be written to support modifying URIs better (should be possible to make a URI,
	// !!!GAC change any member and have getURI return the proper const string URI)
	if(nofrag)
	{
		// Strip off the fragment part before constructing the URI
		daeString temp		= safeCreate(uriString);
		daeChar* fragment	= (daeChar*)findCharacterReverse(temp, '#');
		if(fragment)
		{
			*fragment = 0;
		}
		setURI(temp);
		safeDelete(temp);
	}
	else
	{
		// Generate the URI without changing the string
		setURI(uriString);
	}
	if(nofrag)
		validate();
}
Beispiel #17
0
Tessellator::~Tessellator()
{
    glDeleteVertexArrays(1, &m_vaoID);
    glDeleteBuffers(1, &m_bufferID);
    glDeleteQueries(1, &m_primitivesQuery);
    safeDelete(program);
}
Beispiel #18
0
void SyncSourceConfig::setEncoding(const char* s) {
    safeDelete(&encodings);

    if (s) {
        encodings = stringdup(s);
    }
}
Beispiel #19
0
    void AudioHandler::update(float elapsed)
    {
        if(fadeCounter == 0) return;

        fadeCounter += elapsed;

        if((mVol - (fadeCounter * interval) <= 0) || (fadeCounter >= (mVol / interval)))
        {
            fadeCounter = 0;
            song->Stop();
            if(cross)
            {
                safeDelete(song);
                song = crossSong;
                crossSong = NULL;
            }

            song->SetVolume(mVol);
        }
        else
        {
            if(cross) crossSong->SetVolume(fadeCounter * interval);
            song->SetVolume(mVol - (fadeCounter * interval));
        }
    }
Beispiel #20
0
	bool CButtonNode::setLogicEntity(logic::CButton* logicButton){
		// Si no asociamos ninguna entidad logica, terminamos con exito
		if(!CUINode::setLogicEntity(logicButton))
			return false;

		// Si ya hemos asociado una representacion logica,
		// borramos la antigua
		if(_logicButton){
			_logicButton->removeListener(this);
			safeDelete(_logicButton);
		}

		// Nos añadimos como observador y si fallamos devolvemos false
		if(!logicButton->addListener(this))
			return false;

		// Asociamos la entidad logica
		_logicButton = logicButton;

		// Asignamos al boton los atributos
		_status = (COglButton::EButtonStatus)logicButton->status();

		textChanged(logicButton->text(), _logicButton->fontName(), _logicButton->fontSize());
		return true;

	}
Beispiel #21
0
void PackageService::onFinish()
{
	FinishSqliteVFS();

	// Turn off all sticky flags - NO MERCY!
	for (PackageNameMap::iterator itr = _linkedPackages.begin(), end = _linkedPackages.end(); itr != end; ++itr)
	{
		itr->second->_stayResident = false;
		itr->second->_stayForCurrent = false;
		itr->second->_stayForNext = false;
	}

	// And compact so that all packages get disposed
	compact();

	// If Something's remaining, we're in danger!
	for (PackageNameMap::iterator itr = _linkedPackages.begin(), end = _linkedPackages.end(); itr != end; ++itr)
	{
		Package* pack = itr->second;
		LOG(0, "*** Package '%s': still alive: %d usage, requires:\n", pack->getName().c_str(), pack->getUseCount());
		if (pack->getRequiredList().empty())
			LOG(0, "  <none>\n");
		else
			pack->printDependancy(1);
	}

	// Terminate AsyncLoader
	if (_asyncLoader)
	{
		_asyncLoader->Terminate();
	}

	safeDelete(_asyncLoader);
}
Beispiel #22
0
TxGuiRenderer::~TxGuiRenderer()
{
	safeRelease(m_pVB);
	safeRelease(m_pVBQuick);
	safeDelete(m_pResourceProvider);
	m_alphaMaskImages.clear();
}
Beispiel #23
0
void SyncSourceConfig::setType(const char* t) {
    safeDelete(&type);

    if (t) {
        type = new char[strlen(t)+1];
        strcpy(type, t);
    }
}
Beispiel #24
0
FiberMesh::~FiberMesh() {
   m_dragData.isDragging = false;
   
   FOREACH(CurveListIter, m_curves, iter) {
      DifferentialCurve *curve = *iter;
      
      safeDelete(curve);
   }
Beispiel #25
0
static void FinishSqliteVFS()
{
	assert(g_NitSqliteVFS);

	sqlite3_vfs_unregister(g_NitSqliteVFS);

	safeDelete(g_NitSqliteVFS);
}
Beispiel #26
0
void Material::preview(Shape *shape) {
   SurfacePoint pt;
   pt.shape = shape;
   
   if (isEmitter()) {
      Emitter *emitter = getEmitter(pt);
      emitter->preview(shape);
      
      if (emitter != Material::s_nullEmitter)
         safeDelete(emitter);
   }
   
   BSDF *bsdf = getBSDF(pt);
   bsdf->preview(shape);
   
   safeDelete(bsdf);
}
Beispiel #27
0
void Material::setFilter(KernelFilter *filter) {
   if (filter != m_filter) {
      KernelFilter *oldFilter = m_filter;
      
      m_filter = filter;
      safeDelete(oldFilter);
   }
}
Beispiel #28
0
    void Gui::click(const sf::Vector2i& mousePos)
    {
        for(PanelMap::iterator it = panels.begin(); it != panels.end(); it++)
            it->second.click(mousePos);

        if(console->isShown())
            console->click(mousePos);
        else
        {
            if(mainMenu != NULL)
                mainMenu->click(mousePos);
            if(optionsMenu != NULL)
                optionsMenu->click(mousePos);
            if(selectMenu != NULL && !delMain)
                selectMenu->click(mousePos);
            if(showDia && diagPanel != NULL)
                diagPanel->click(mousePos);
        }


        if(delMain)
        {
            safeDelete(mainMenu);
            delMain = false;
        }

        if(delOpt)
        {
            safeDelete(optionsMenu);
            delOpt = false;
        }

        if(delSec)
        {
            safeDelete(selectMenu);
            delSec = false;
        }

        if(delDia)
        {
            safeDelete(diagPanel);
            delDia = false;
        }


    }
Beispiel #29
0
void SyncSourceConfig::setSync(const char *s) {
    safeDelete(&sync);

    if (s) {
        sync = new char[strlen(s)+1];
        strcpy(sync, s);
    }
}
Beispiel #30
0
	void CFrame::remove(CUiComponent* component){
		if(component){
			_components.remove(component);
			_mouseListeners.remove(component);

			safeDelete(component);
		}
	}