class EntityGroupSelected : public scene::Graph::Walker
{
- NodeSmartReference group;
+ NodeSmartReference group, worldspawn;
//typedef std::pair<NodeSmartReference, NodeSmartReference> DeletionPair;
//Stack<DeletionPair> deleteme;
public:
- EntityGroupSelected(const scene::Path &p): group(p.top().get())
+ EntityGroupSelected(const scene::Path &p): group(p.top().get()), worldspawn(Map_FindOrInsertWorldspawn(g_map))
{
}
bool pre(const scene::Path& path, scene::Instance& instance) const
NodeSmartReference child(path.top().get());
NodeSmartReference parent(path.parent().get());
- if(path.size() >= 3 && parent != Map_FindOrInsertWorldspawn(g_map))
+ if(path.size() >= 3 && parent != worldspawn)
{
NodeSmartReference parentparent(path[path.size() - 3].get());
EntityClass* entityClass = GlobalEntityClassManager().findOrInsert(name, true);
- bool isModel = string_equal_nocase(name, "misc_model")
- || string_equal_nocase(name, "misc_gamemodel")
+ bool isModel = (string_compare_nocase_n(name, "misc_", 5) == 0 && string_equal_nocase(name + string_length(name) - 5, "model")) // misc_*model (also misc_model)
|| string_equal_nocase(name, "model_static")
|| (GlobalSelectionSystem().countSelected() == 0 && string_equal_nocase(name, "func_static"));