void CC_Mom_ZoneDelete(const CCommand &args) { if (!mom_zone_edit.GetBool()) return; if (args.ArgC() > 1) { DevMsg("Attempting to delete '%s'\n", args[1]); int entindex = atoi(args[1]); if (entindex != 0) { CBaseEntity *pEnt = CBaseEntity::Instance(INDEXENT(entindex)); if (pEnt && g_MapzoneEdit.GetEntityZoneType(pEnt) != -1) { UTIL_Remove(pEnt); } } else { char szDelete[64]; if (ZoneTypeToClass(g_MapzoneEdit.ShortNameToZoneType(args[1]), szDelete)) { CBaseEntity *pEnt = gEntList.FindEntityByClassname(NULL, szDelete); while (pEnt) { UTIL_Remove(pEnt); pEnt = gEntList.FindEntityByClassname(pEnt, szDelete); } } } } }
bool CMapzoneData::MapZoneSpawned(CMapzone *mZone) { bool toReturn = false; if (!mZone) return false; char name[128]; if ( !ZoneTypeToClass( mZone->GetType(), name ) ) return false; CBaseEntity *pEnt = gEntList.FindEntityByClassname(NULL, name); while (pEnt) { if (pEnt->GetAbsOrigin() == *mZone->GetPosition() && pEnt->GetAbsAngles() == *mZone->GetRotation() && pEnt->WorldAlignMaxs() == *mZone->GetScaleMaxs() && pEnt->WorldAlignMins() == *mZone->GetScaleMins()) { DevLog("Already found a %s spawned on the map! Not spawning it from zone file...\n", name); toReturn = true; break; } pEnt = gEntList.FindEntityByClassname(pEnt, name); } return toReturn; }
void CMapzoneEdit::Build(Vector *aimpos, int type, int forcestage) { if (mom_zone_grid.GetInt() > 0) VectorSnapToGrid(aimpos, (float) mom_zone_grid.GetInt()); switch ((forcestage != BUILDSTAGE_NONE) ? forcestage : ++m_nBuildStage) { case BUILDSTAGE_START: m_vecBuildStart = *aimpos; break; case BUILDSTAGE_END: m_vecBuildEnd = *aimpos; break; case BUILDSTAGE_HEIGHT: { char szClass[64]; if (ZoneTypeToClass(type, szClass)) { CBaseEntity *pEnt = CreateEntityByName(szClass); Vector vecOrigin, vecSize, vecMinsRel; int i; VectorMin(m_vecBuildStart, m_vecBuildEnd, vecMinsRel); VectorMax(m_vecBuildStart, m_vecBuildEnd, vecSize); for (i = 0; i < 3; i++) vecSize[i] = (vecSize[i] - vecMinsRel[i]) / 2.0f; for (i = 0; i < 3; i++) vecOrigin[i] = vecMinsRel[i] + vecSize[i]; pEnt->Spawn(); pEnt->SetAbsOrigin(vecOrigin); pEnt->SetSize(Vector(-vecSize.x, -vecSize.y, -vecSize.z), vecSize); pEnt->SetEffects(EF_NODRAW); pEnt->SetSolid(SOLID_BBOX); pEnt->Activate(); SetZoneProps(pEnt); } } default: m_nBuildStage = BUILDSTAGE_NONE; } }