Example #1
0
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);
                }
            }
        }
    }
}
Example #2
0
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;
}
Example #3
0
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;
    }
}