コード例 #1
0
void DRInterface::releaseMem(DRInterface* data, const char* dllname)
{
    if(!data) LOG_ERROR_VOID("data, ZERO-POINTER");

    if(!mDLL)
    {
        if(!loadDll(dllname))
        {
            LOG_WARNING("keine dll");
            DR_SAVE_DELETE(data);
        }
    }

    if(!releaseInstance) loadDll(dllname);
    if(releaseInstance)
    {
        releaseInstance(data);
    }
    else
    {
        LOG_WARNING("function didn't exist in dll");
        DR_SAVE_DELETE(data);
    }

}
コード例 #2
0
IniTest::IniTest(const char* filename)
: mIni(NULL)
{
    mIni = new DRIni(filename);
    if(!mIni->isValid())
    {
        DR_SAVE_DELETE(mIni);
    }

}
コード例 #3
0
DRReturn PlanetSektor::move(float fTime, Camera* cam)
{
    RenderPlanet* render = dynamic_cast<RenderPlanet*>(mRenderer);
    //mLastRelativeCameraPosition = cam->getSektorPositionAtSektor(this);
    if(mParent) mLastRelativeCameraPosition = mParent->getCameraPosition() - getPosition();
    else mLastRelativeCameraPosition = cam->getSektorPositionAtSektor(this);
    mTheta = acos(mRadius/mLastRelativeCameraPosition.length())*RADTOGRAD;
    Unit distance = mLastRelativeCameraPosition.length()-mRadius;
    distance = distance.convertTo(KM);       
    
//    mLastRelativeCameraPosition.print("cameraPos");
    //printf("\rdistance: %.3f KM, theta: %f", static_cast<double>(distance), mTheta);
    std::vector<int>* ebene = GlobalRenderer::Instance().getEbenenCount();
	char buffer[256]; memset(buffer, 0, 256);
    
    for(uint i = 1; i < ebene->size(); i++)
        sprintf(buffer, "%s %d ", buffer, (*ebene)[i]);
    printf("\r%s", buffer);
    if(EnIsButtonPressed(SDLK_k))
        cam->setAxis(DRVector3(-1.0f, 0.0f, 0.0f), DRVector3(0.0f, 1.0f, 0.0f), DRVector3(0.0f, 0.0f, -1.0f));
    
    if(isObjectInSektor(mLastRelativeCameraPosition))
    {                
        for(u32 i = 0; i < 6; i++)
        {
            //horizont culling
            DRVector3 camPos = mLastRelativeCameraPosition.getVector3().normalize();
            double angle = acos(camPos.dot(DRVector3(mSubPlanets[i].x, mSubPlanets[i].y, mSubPlanets[i].z)))*RADTOGRAD-45.0;            
            //printf("\r %d, angle: %f (%f Grad) ", i, angle, angle*RADTOGRAD);
            if(angle < mTheta)
            {
                getChild(mSubPlanets[i]*static_cast<short>(1000));            
            }
            //else
                //printf("\r %d, angle: %f, horizontAngle: %f", i, angle*RADTOGRAD, horizontAngle*RADTOGRAD);
        }
    }
    else
    {
        //removeInactiveChilds(1.0f);
    }
    removeInactiveChilds(GlobalRenderer::Instance().getTimeForInactiveChilds());
    if(mRenderer)
    {
        // set player distance to renderer for sort
        if(render->getRenderNoisePlanetToTexture())
            render->getRenderNoisePlanetToTexture()->setCurrentDistance(static_cast<DRReal>(mLastRelativeCameraPosition.length().convertTo(M)));
        // remove renderer, if we didn't need him
        if(mNotRenderSeconds >= GlobalRenderer::Instance().getTimeForInactiveChilds())
            DR_SAVE_DELETE(mRenderer);
    }
    return DR_OK;
}
コード例 #4
0
ファイル: main.cpp プロジェクト: carlos-felipe88/SpaceCraft
void ende()
{
    g_Player.exit();
    g_tex.release();    
    DR_SAVE_DELETE(g_Font);
    g_terrain.release();
	GlobalRenderer::getSingleton().exit();
    ShaderManager::getSingleton().exit();
    DRGeometrieManager::getSingleton().exit();
    g_RenderBlockLoader.exit();
    Server::freeAllServer();	
    EnExit();
}
コード例 #5
0
IniTest::~IniTest()
{
    DR_SAVE_DELETE(mIni);
}
コード例 #6
0
PlanetSektor::~PlanetSektor()
{
    ShaderManager::Instance().releaseShader("sphere.vert", "sphere.frag");
    mSphericalShaderForSubPlanet = NULL;
    DR_SAVE_DELETE(mRenderer);
}
コード例 #7
0
ファイル: Player.cpp プロジェクト: carlos-felipe88/SpaceCraft
void Player::exit()
{
    saveIntoFile();
    //DR_SAVE_DELETE(mCurrentSektor);
    DR_SAVE_DELETE(mCamera);
}