add a feature shift-k to assign killtarget, not target like ctrl-k
This commit is contained in:
parent
5c3de4809e
commit
c6252fe3fc
|
|
@ -124,7 +124,7 @@ public:
|
|||
|
||||
virtual void setCounter(Counter* counter) = 0;
|
||||
|
||||
virtual void connectEntities(const scene::Path& e1, const scene::Path& e2) = 0;
|
||||
virtual void connectEntities(const scene::Path& e1, const scene::Path& e2, int index) = 0;
|
||||
|
||||
virtual void setLightRadii(bool lightRadii) = 0;
|
||||
virtual bool getLightRadii() = 0;
|
||||
|
|
|
|||
|
|
@ -132,12 +132,23 @@ class ConnectEntities
|
|||
public:
|
||||
Entity* m_e1;
|
||||
Entity* m_e2;
|
||||
ConnectEntities(Entity* e1, Entity* e2) : m_e1(e1), m_e2(e2)
|
||||
int m_index;
|
||||
ConnectEntities(Entity* e1, Entity* e2, int index) : m_e1(e1), m_e2(e2), m_index(index)
|
||||
{
|
||||
}
|
||||
const char *keyname()
|
||||
{
|
||||
StringOutputStream key(16);
|
||||
if(m_index <= 0)
|
||||
return "target";
|
||||
if(m_index == 1)
|
||||
return "killtarget";
|
||||
key << "target" << m_index;
|
||||
return key.c_str();
|
||||
}
|
||||
void connect(const char* name)
|
||||
{
|
||||
m_e1->setKeyValue("target", name);
|
||||
m_e1->setKeyValue(keyname(), name);
|
||||
m_e2->setKeyValue("targetname", name);
|
||||
}
|
||||
typedef MemberCaller1<ConnectEntities, const char*, &ConnectEntities::connect> ConnectCaller;
|
||||
|
|
@ -168,7 +179,7 @@ public:
|
|||
{
|
||||
EntityKeyValues::setCounter(counter);
|
||||
}
|
||||
void connectEntities(const scene::Path& path, const scene::Path& targetPath)
|
||||
void connectEntities(const scene::Path& path, const scene::Path& targetPath, int index)
|
||||
{
|
||||
Entity* e1 = ScenePath_getEntity(path);
|
||||
Entity* e2 = ScenePath_getEntity(targetPath);
|
||||
|
|
@ -191,6 +202,18 @@ public:
|
|||
if(g_gameType == eGameTypeDoom3)
|
||||
{
|
||||
StringOutputStream key(16);
|
||||
if(index >= 0)
|
||||
{
|
||||
key << "target";
|
||||
if(index != 0)
|
||||
{
|
||||
key << index;
|
||||
}
|
||||
e1->setKeyValue(key.c_str(), e2->getKeyValue("name"));
|
||||
key.clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
for(unsigned int i = 0; ; ++i)
|
||||
{
|
||||
key << "target";
|
||||
|
|
@ -207,13 +230,14 @@ public:
|
|||
key.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ConnectEntities connector(e1, e2);
|
||||
ConnectEntities connector(e1, e2, index);
|
||||
const char* value = e2->getKeyValue("targetname");
|
||||
if(string_empty(value))
|
||||
{
|
||||
value = e1->getKeyValue("target");
|
||||
value = e1->getKeyValue(connector.keyname());
|
||||
}
|
||||
if(!string_empty(value))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -258,7 +258,8 @@ void Entity_connectSelected()
|
|||
{
|
||||
GlobalEntityCreator().connectEntities(
|
||||
GlobalSelectionSystem().penultimateSelected().path(),
|
||||
GlobalSelectionSystem().ultimateSelected().path()
|
||||
GlobalSelectionSystem().ultimateSelected().path(),
|
||||
0
|
||||
);
|
||||
}
|
||||
else
|
||||
|
|
@ -267,6 +268,22 @@ void Entity_connectSelected()
|
|||
}
|
||||
}
|
||||
|
||||
void Entity_killconnectSelected()
|
||||
{
|
||||
if(GlobalSelectionSystem().countSelected() == 2)
|
||||
{
|
||||
GlobalEntityCreator().connectEntities(
|
||||
GlobalSelectionSystem().penultimateSelected().path(),
|
||||
GlobalSelectionSystem().ultimateSelected().path(),
|
||||
1
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
globalErrorStream() << "entityKillConnectSelected: exactly two instances must be selected\n";
|
||||
}
|
||||
}
|
||||
|
||||
AABB Doom3Light_getBounds(const AABB& workzone)
|
||||
{
|
||||
AABB aabb(workzone);
|
||||
|
|
@ -618,6 +635,7 @@ void Entity_constructMenu(GtkMenu* menu)
|
|||
create_menu_item_with_mnemonic(menu, "_Regroup", "GroupSelection");
|
||||
create_menu_item_with_mnemonic(menu, "_Ungroup", "UngroupSelection");
|
||||
create_menu_item_with_mnemonic(menu, "_Connect", "ConnectSelection");
|
||||
create_menu_item_with_mnemonic(menu, "_KillConnect", "KillConnectSelection");
|
||||
create_menu_item_with_mnemonic(menu, "_Select Color...", "EntityColor");
|
||||
create_menu_item_with_mnemonic(menu, "_Normalize Color...", "NormalizeColor");
|
||||
}
|
||||
|
|
@ -632,6 +650,7 @@ void Entity_Construct()
|
|||
GlobalCommands_insert("EntityColor", FreeCaller<Entity_setColour>(), Accelerator('K'));
|
||||
GlobalCommands_insert("NormalizeColor", FreeCaller<Entity_normalizeColor>());
|
||||
GlobalCommands_insert("ConnectSelection", FreeCaller<Entity_connectSelected>(), Accelerator('K', (GdkModifierType)GDK_CONTROL_MASK));
|
||||
GlobalCommands_insert("KillConnectSelection", FreeCaller<Entity_killconnectSelected>(), Accelerator('K', (GdkModifierType)(GDK_SHIFT_MASK)));
|
||||
GlobalCommands_insert("GroupSelection", FreeCaller<Entity_groupSelected>());
|
||||
GlobalCommands_insert("UngroupSelection", FreeCaller<Entity_ungroupSelected>());
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user