// // Create a name that is unique for: // testnet / non-testnet // data directory // static QString ipcServerName() { QString name("BitcoinQt"); // Append a simple hash of the datadir // Note that GetDataDir(true) returns a different path // for -testnet versus main net QString ddir(GUIUtil::boostPathToQString(GetDataDir(true))); name.append(QString::number(qHash(ddir))); return name; }
// // Create a name that is unique for: // testnet / non-testnet // data directory // static QString ipcServerName() { QString name("TerracoinQt"); // Append a simple hash of the datadir // Note that GetDataDir(true) returns a different path // for -testnet versus main net QString ddir(QString::fromStdString(GetDataDir(true).string())); name.append(QString::number(qHash(ddir))); return name; }
wxString GetOSXKicadDataDir() { // According to wxWidgets documentation for GetDataDir: // Mac: appname.app/Contents/SharedSupport bundle subdirectory wxFileName ddir( wxStandardPaths::Get().GetDataDir(), wxEmptyString ); // This must be mapped to main bundle for everything but kicad.app const wxArrayString dirs = ddir.GetDirs(); if( dirs[dirs.GetCount() - 3] != wxT( "kicad.app" ) ) { // Bundle structure resp. current path is // kicad.app/Contents/Applications/<standalone>.app/Contents/SharedSupport // and will be mapped to // kicad.app/Contents/SharedSupprt ddir.RemoveLastDir(); ddir.RemoveLastDir(); ddir.RemoveLastDir(); ddir.RemoveLastDir(); ddir.AppendDir( wxT( "SharedSupport" ) ); } return ddir.GetPath(); }
void CLargeBeamLaserProjectile::Draw() { inArray = true; float3 dif(pos - camera->pos); float camDist = dif.Length(); dif /= camDist; float3 ddir(endPos - startPos); float beamlength = ddir.Length(); ddir = ddir / beamlength; const float3 dir1((dif.cross(ddir)).Normalize()); const float3 dir2(dif.cross(dir1)); float3 pos1 = startPos; float3 pos2 = endPos; float starttex = (gu->modGameTime) * scrollspeed; starttex = 1.0f - (starttex - (int)starttex); const float texxsize = beamtex.xend - beamtex.xstart; AtlasedTexture tex = beamtex; const float& size = thickness; const float& coresize = size * corethickness; float polylength = (tex.xend-beamtex.xstart)*(1/texxsize)*tilelength; float istart = polylength * (1-starttex); float iend = beamlength - tilelength; va->EnlargeArrays(64 + (8 * ((int)((iend - istart) / tilelength) + 2)), 0, VA_SIZE_TC); if (istart > beamlength) { // beam short enough to be drawn by one polygon // draw laser start tex.xstart = beamtex.xstart + starttex*((beamtex.xend-beamtex.xstart)); va->AddVertexQTC(pos1 - (dir1 * size), tex.xstart, tex.ystart, kocolstart); va->AddVertexQTC(pos1 + (dir1 * size), tex.xstart, tex.yend, kocolstart); va->AddVertexQTC(pos2 + (dir1 * size), tex.xend, tex.yend, kocolstart); va->AddVertexQTC(pos2 - (dir1 * size), tex.xend, tex.ystart, kocolstart); va->AddVertexQTC(pos1 - (dir1 * coresize), tex.xstart, tex.ystart, corecolstart); va->AddVertexQTC(pos1 + (dir1 * coresize), tex.xstart, tex.yend, corecolstart); va->AddVertexQTC(pos2 + (dir1 * coresize), tex.xend, tex.yend, corecolstart); va->AddVertexQTC(pos2 - (dir1 * coresize), tex.xend, tex.ystart, corecolstart); } else { // beam longer than one polygon pos2 = pos1 + ddir * istart; // draw laser start tex.xstart = beamtex.xstart + (starttex * (beamtex.xend - beamtex.xstart)); va->AddVertexQTC(pos1 - (dir1 * size), tex.xstart, tex.ystart, kocolstart); va->AddVertexQTC(pos1 + (dir1 * size), tex.xstart, tex.yend, kocolstart); va->AddVertexQTC(pos2 + (dir1 * size), tex.xend, tex.yend, kocolstart); va->AddVertexQTC(pos2 - (dir1 * size), tex.xend, tex.ystart, kocolstart); va->AddVertexQTC(pos1 - (dir1 * coresize), tex.xstart, tex.ystart, corecolstart); va->AddVertexQTC(pos1 + (dir1 * coresize), tex.xstart, tex.yend, corecolstart); va->AddVertexQTC(pos2 + (dir1 * coresize), tex.xend, tex.yend, corecolstart); va->AddVertexQTC(pos2 - (dir1 * coresize), tex.xend, tex.ystart, corecolstart); // draw continous beam tex.xstart = beamtex.xstart; float i; for (i = istart; i < iend; i += tilelength) //! CAUTION: loop count must match EnlargeArrays above { pos1 = startPos + ddir * i; pos2 = startPos + ddir * (i + tilelength); va->AddVertexQTC(pos1 - (dir1 * size), tex.xstart, tex.ystart, kocolstart); va->AddVertexQTC(pos1 + (dir1 * size), tex.xstart, tex.yend, kocolstart); va->AddVertexQTC(pos2 + (dir1 * size), tex.xend, tex.yend, kocolstart); va->AddVertexQTC(pos2 - (dir1 * size), tex.xend, tex.ystart, kocolstart); va->AddVertexQTC(pos1 - (dir1 * coresize), tex.xstart, tex.ystart, corecolstart); va->AddVertexQTC(pos1 + (dir1 * coresize), tex.xstart, tex.yend, corecolstart); va->AddVertexQTC(pos2 + (dir1 * coresize), tex.xend, tex.yend, corecolstart); va->AddVertexQTC(pos2 - (dir1 * coresize), tex.xend, tex.ystart, corecolstart); } // draw laser end pos1 = startPos + ddir * i; pos2 = endPos; tex.xend = tex.xstart + ((pos2 - pos1).Length() / tilelength) * texxsize; va->AddVertexQTC(pos1 - dir1 * size, tex.xstart, tex.ystart, kocolstart); va->AddVertexQTC(pos1 + dir1 * size, tex.xstart, tex.yend, kocolstart); va->AddVertexQTC(pos2 + dir1 * size, tex.xend, tex.yend, kocolstart); va->AddVertexQTC(pos2 - dir1 * size, tex.xend, tex.ystart, kocolstart); va->AddVertexQTC(pos1 - dir1 * coresize, tex.xstart, tex.ystart, corecolstart); va->AddVertexQTC(pos1 + dir1 * coresize, tex.xstart, tex.yend, corecolstart); va->AddVertexQTC(pos2 + dir1 * coresize, tex.xend, tex.yend, corecolstart); va->AddVertexQTC(pos2 - dir1 * coresize, tex.xend, tex.ystart, corecolstart); } //float midtexx = weaponDef->visuals.texture2->xstart + (weaponDef->visuals.texture2->xend-weaponDef->visuals.texture2->xstart)*0.5f; va->AddVertexQTC(pos2 - (dir1 * size), weaponDef->visuals.texture2->xstart, weaponDef->visuals.texture2->ystart, kocolstart); va->AddVertexQTC(pos2 + (dir1 * size), weaponDef->visuals.texture2->xstart, weaponDef->visuals.texture2->yend, kocolstart); va->AddVertexQTC(pos2 + (dir1 * size) + (dir2 * size), weaponDef->visuals.texture2->xend, weaponDef->visuals.texture2->yend, kocolstart); va->AddVertexQTC(pos2 - (dir1 * size) + (dir2 * size), weaponDef->visuals.texture2->xend, weaponDef->visuals.texture2->ystart, kocolstart); va->AddVertexQTC(pos2 - (dir1 * coresize), weaponDef->visuals.texture2->xstart, weaponDef->visuals.texture2->ystart, corecolstart); va->AddVertexQTC(pos2 + (dir1 * coresize), weaponDef->visuals.texture2->xstart, weaponDef->visuals.texture2->yend, corecolstart); va->AddVertexQTC(pos2 + (dir1 * coresize) + (dir2 * coresize), weaponDef->visuals.texture2->xend, weaponDef->visuals.texture2->yend, corecolstart); va->AddVertexQTC(pos2 - (dir1 * coresize) + (dir2 * coresize), weaponDef->visuals.texture2->xend, weaponDef->visuals.texture2->ystart, corecolstart); // draw muzzleflare starttex = gu->modGameTime * pulseSpeed; starttex -= (int)starttex; float muzzlesize = size*flaresize*starttex; unsigned char corcol[4]; unsigned char kocol[4]; corcol[3] = 1; kocol[3] = 1; for (int i = 0; i < 3; i++) { corcol[i] = (int)(corecolstart[i] * (1 - starttex)); kocol[i] = (int)(kocolstart[i] * (1 - starttex)); } pos1 = startPos - ddir * (size * flaresize) * 0.02f; va->AddVertexQTC(pos1 + (dir1 * muzzlesize), side.xstart, side.ystart, kocol); va->AddVertexQTC(pos1 + (dir1 * muzzlesize) + (ddir * muzzlesize), side.xend, side.ystart, kocol); va->AddVertexQTC(pos1 - (dir1 * muzzlesize) + (ddir * muzzlesize), side.xend, side.yend, kocol); va->AddVertexQTC(pos1 - (dir1 * muzzlesize), side.xstart, side.yend, kocol); muzzlesize = muzzlesize * 0.6f; va->AddVertexQTC(pos1 + (dir1 * muzzlesize), side.xstart, side.ystart, corcol); va->AddVertexQTC(pos1 + (dir1 * muzzlesize) + (ddir * muzzlesize), side.xend, side.ystart, corcol); va->AddVertexQTC(pos1 - (dir1 * muzzlesize) + (ddir * muzzlesize), side.xend, side.yend, corcol); va->AddVertexQTC(pos1 - (dir1 * muzzlesize), side.xstart, side.yend, corcol); starttex += 0.5f; if (starttex > 1) { starttex = starttex - 1; } for (int i = 0; i < 3; i++) { corcol[i] = (int)(corecolstart[i] * (1 - starttex)); kocol[i] = (int)(kocolstart[i] * (1 - starttex)); } muzzlesize = size * flaresize * starttex; va->AddVertexQTC(pos1 + (dir1 * muzzlesize), side.xstart, side.ystart, kocol); va->AddVertexQTC(pos1 + (dir1 * muzzlesize) + (ddir * muzzlesize), side.xend, side.ystart, kocol); va->AddVertexQTC(pos1 - (dir1 * muzzlesize) + (ddir * muzzlesize), side.xend, side.yend, kocol); va->AddVertexQTC(pos1 - (dir1 * muzzlesize), side.xstart, side.yend, kocol); muzzlesize = muzzlesize * 0.6f; va->AddVertexQTC(pos1 + (dir1 * muzzlesize), side.xstart, side.ystart, corcol); va->AddVertexQTC(pos1 + (dir1 * muzzlesize) + (ddir * muzzlesize), side.xend, side.ystart, corcol); va->AddVertexQTC(pos1 - (dir1 * muzzlesize) + (ddir * muzzlesize), side.xend, side.yend, corcol); va->AddVertexQTC(pos1 - (dir1 * muzzlesize), side.xstart, side.yend, corcol); // draw flare float fsize = size * flaresize; // move flare slightly in camera direction pos1 = startPos - (camera->forward * 3); va->AddVertexQTC(pos1 - (camera->right * fsize-camera->up * fsize), weaponDef->visuals.texture4->xstart, weaponDef->visuals.texture4->ystart, kocolstart); va->AddVertexQTC(pos1 + (camera->right * fsize-camera->up * fsize), weaponDef->visuals.texture4->xend, weaponDef->visuals.texture4->ystart, kocolstart); va->AddVertexQTC(pos1 + (camera->right * fsize+camera->up * fsize), weaponDef->visuals.texture4->xend, weaponDef->visuals.texture4->yend, kocolstart); va->AddVertexQTC(pos1 - (camera->right * fsize+camera->up * fsize), weaponDef->visuals.texture4->xstart, weaponDef->visuals.texture4->yend, kocolstart); fsize = fsize*corethickness; va->AddVertexQTC(pos1 - (camera->right * fsize-camera->up * fsize), weaponDef->visuals.texture4->xstart, weaponDef->visuals.texture4->ystart, corecolstart); va->AddVertexQTC(pos1 + (camera->right * fsize-camera->up * fsize), weaponDef->visuals.texture4->xend, weaponDef->visuals.texture4->ystart, corecolstart); va->AddVertexQTC(pos1 + (camera->right * fsize+camera->up * fsize), weaponDef->visuals.texture4->xend, weaponDef->visuals.texture4->yend, corecolstart); va->AddVertexQTC(pos1 - (camera->right * fsize+camera->up * fsize), weaponDef->visuals.texture4->xstart, weaponDef->visuals.texture4->yend, corecolstart); }
void AbstractRepository::process(Job *job, const QList<InstallOperation *> &install_, DWORD programCloseType, bool printScriptOutput, bool interactive) { QDir d; QList<InstallOperation *> install = install_; // reoder the operations if a package is updated. In this case it is better // to uninstall the old first and then install the new one. if (install.size() == 2) { InstallOperation* first = install.at(0); InstallOperation* second = install.at(1); if (first->package == second->package && first->install && !second->install) { install.insert(0, second); install.removeAt(2); } } // search for PackageVersion objects QList<PackageVersion*> pvs; for (int i = 0; i < install.size(); i++) { InstallOperation* op = install.at(i); QString err; PackageVersion* pv = op->findPackageVersion(&err); if (!err.isEmpty()) { job->setErrorMessage(QString( QObject::tr("Cannot find the package version %1 %2: %3")). arg(op->package). arg(op->version.getVersionString()). arg(err)); break; } if (!pv) { job->setErrorMessage(QString( QObject::tr("Cannot find the package version %1 %2")). arg(op->package). arg(op->version.getVersionString())); break; } pvs.append(pv); } if (job->shouldProceed()) { for (int j = 0; j < pvs.size(); j++) { PackageVersion* pv = pvs.at(j); pv->lock(); } } int n = install.count(); // where the binary was downloaded QStringList dirs; // names of the binaries relative to the directory QStringList binaries; // 70% for downloading the binaries if (job->shouldProceed()) { // downloading packages for (int i = 0; i < install.count(); i++) { InstallOperation* op = install.at(i); PackageVersion* pv = pvs.at(i); if (op->install) { QString txt = QObject::tr("Downloading %1").arg( pv->toString()); Job* sub = job->newSubJob(0.7 / n, txt, true, true); // dir is not the final installation directory. It can be // changed later during the installation. QString dir = op->where; if (dir.isEmpty()) { dir = pv->getIdealInstallationDirectory(); } dir = WPMUtils::findNonExistingFile(dir, ""); if (d.exists(dir)) { sub->setErrorMessage( QObject::tr("Directory %1 already exists"). arg(dir)); dirs.append(""); binaries.append(""); } else { dirs.append(dir); QString binary = pv->download_(sub, dir, interactive); binaries.append(QFileInfo(binary).fileName()); } } else { dirs.append(""); binaries.append(""); job->setProgress(job->getProgress() + 0.7 / n); } if (!job->shouldProceed()) break; } } // 10% for stopping the packages if (job->shouldProceed()) { for (int i = 0; i < install.count(); i++) { InstallOperation* op = install.at(i); PackageVersion* pv = pvs.at(i); if (!op->install) { Job* sub = job->newSubJob(0.1 / n, QObject::tr("Stopping the package %1 of %2"). arg(i + 1).arg(n)); pv->stop(sub, programCloseType, printScriptOutput); if (!sub->getErrorMessage().isEmpty()) { job->setErrorMessage(sub->getErrorMessage()); break; } } else { job->setProgress(job->getProgress() + 0.1 / n); } } } int processed = 0; // 19% for removing/installing the packages if (job->shouldProceed()) { // installing/removing packages for (int i = 0; i < install.count(); i++) { InstallOperation* op = install.at(i); PackageVersion* pv = pvs.at(i); QString txt; if (op->install) txt = QString(QObject::tr("Installing %1")).arg( pv->toString()); else txt = QString(QObject::tr("Uninstalling %1")).arg( pv->toString()); Job* sub = job->newSubJob(0.19 / n, txt, true, true); if (op->install) { QString dir = dirs.at(i); QString binary = binaries.at(i); if (op->where.isEmpty()) { // if we are not forced to install in a particular // directory, we try to use the ideal location QString try_ = pv->getIdealInstallationDirectory(); if (WPMUtils::pathEquals(try_, dir) || (!d.exists(try_) && d.rename(dir, try_))) { dir = try_; } else { try_ = pv->getSecondaryInstallationDirectory(); if (WPMUtils::pathEquals(try_, dir) || (!d.exists(try_) && d.rename(dir, try_))) { dir = try_; } else { try_ = WPMUtils::findNonExistingFile(try_, ""); if (WPMUtils::pathEquals(try_, dir) || (!d.exists(try_) && d.rename(dir, try_))) { dir = try_; } } } } else { if (d.exists(op->where)) { if (!WPMUtils::pathEquals(op->where, dir)) { // we should install in a particular directory, but it // exists. Job* djob = sub->newSubJob(1, QObject::tr("Deleting temporary directory %1"). arg(dir)); QDir ddir(dir); WPMUtils::removeDirectory(djob, ddir); job->setErrorMessage(QObject::tr( "Cannot install %1 into %2. The directory already exists."). arg(pv->toString(true)).arg(op->where)); break; } } else { if (d.rename(dir, op->where)) dir = op->where; else { // we should install in a particular directory, but it // exists. Job* djob = sub->newSubJob(1, QObject::tr("Deleting temporary directory %1"). arg(dir)); QDir ddir(dir); WPMUtils::removeDirectory(djob, ddir); job->setErrorMessage(QObject::tr( "Cannot install %1 into %2. Cannot rename %3."). arg(pv->toString(true), op->where, dir)); break; } } } pv->install(sub, dir, binary, printScriptOutput, programCloseType); } else pv->uninstall(sub, printScriptOutput, programCloseType); if (!job->shouldProceed()) break; processed = i + 1; } } // removing the binaries if we should not proceed if (!job->shouldProceed()) { for (int i = processed; i < dirs.count(); i++) { QString dir = dirs.at(i); if (!dir.isEmpty()) { QString txt = QObject::tr("Deleting %1").arg(dir); Job* sub = job->newSubJob(0.01 / dirs.count(), txt, true, false); QDir ddir(dir); WPMUtils::removeDirectory(sub, ddir); } else { job->setProgress(job->getProgress() + 0.01 / dirs.count()); } } } for (int j = 0; j < pvs.size(); j++) { PackageVersion* pv = pvs.at(j); pv->unlock(); } qDeleteAll(pvs); if (job->shouldProceed()) job->setProgress(1); job->complete(); }