-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCmdCreateBrushEntity.cpp
72 lines (58 loc) · 1.46 KB
/
CmdCreateBrushEntity.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//==============================
// CmdCreateBrushEntity.cpp
//==============================
#include "pre.h"
#include "qe3.h"
#include "CmdCreateBrushEntity.h"
#include "map.h"
CmdCreateBrushEntity::CmdCreateBrushEntity(const std::string& classname) : Command("Create Brush Entity")
{
selectOnDo = true;
selectOnUndo = true;
modifiesSelection = true;
EntClass *ec = EntClass::ForName(classname, true, false);
Init(ec);
state = LIVE;
}
CmdCreateBrushEntity::CmdCreateBrushEntity(EntClass* eclass) : Command("Create Brush Entity")
{
selectOnDo = true;
selectOnUndo = true;
modifiesSelection = true;
Init(eclass);
state = LIVE;
}
void CmdCreateBrushEntity::Init(EntClass* eclass)
{
if (eclass == EntClass::Worldspawn())
CmdError("Cannot create a new worldspawn entity.");
ent = new Entity();
ent->ChangeClass(eclass);
cmdRPB.Destination(ent);
}
CmdCreateBrushEntity::~CmdCreateBrushEntity()
{
if (state == UNDONE || state == LIVE)
{
delete ent;
}
}
void CmdCreateBrushEntity::AddBrush(Brush *br) { cmdRPB.AddBrush(br); }
void CmdCreateBrushEntity::AddBrushes(Brush *brList) { cmdRPB.AddBrushes(brList); }
//==============================
void CmdCreateBrushEntity::Do_Impl()
{
ent->AddToList(&g_map.entities);
cmdRPB.Do();
}
void CmdCreateBrushEntity::Undo_Impl()
{
cmdRPB.Undo();
ent->RemoveFromList();
}
void CmdCreateBrushEntity::Redo_Impl()
{
ent->AddToList(&g_map.entities);
cmdRPB.Redo();
}
void CmdCreateBrushEntity::Sel_Impl() { cmdRPB.Select(); }