Merge branch 'master' into filter

Conflicts:
	apps/opencs/model/world/universalid.cpp
	apps/opencs/view/doc/view.cpp
	apps/opencs/view/world/subviews.cpp
This commit is contained in:
Marc Zinnschlag 2013-07-30 15:55:50 +02:00
commit adb05737ee
107 changed files with 3082 additions and 810 deletions

View file

@ -71,16 +71,26 @@ public:
}
/// Look up the actual object from the index
X* getPtr() const
const X* getPtr() const
{
assert(ptr != NULL);
return ptr;
}
X& get() const
X* getPtr()
{
assert(ptr != NULL);
return ptr;
}
const X& get() const
{ return *getPtr(); }
X& get()
{ return *getPtr(); }
/// Syntactic sugar
X* operator->() const
const X* operator->() const
{ return getPtr(); }
X* operator->()
{ return getPtr(); }
/// Pointers are allowed to be empty
@ -116,6 +126,8 @@ public:
const Ptr& operator[](size_t index) const
{ return list.at(index); }
Ptr& operator[](size_t index)
{ return list.at(index); }
size_t length() const
{ return list.size(); }

View file

@ -688,6 +688,21 @@ class NIFObjectLoader
}
std::string::size_type nextpos = std::min(str.find('\r', pos), str.find('\n', pos));
if(nextpos != std::string::npos)
{
do {
nextpos--;
} while(nextpos > pos && ::isspace(str[nextpos]));
nextpos++;
}
else if(::isspace(*str.rbegin()))
{
std::string::const_iterator last = str.end();
do {
last--;
} while(last != str.begin() && ::isspace(*last));
nextpos = std::distance(str.begin(), ++last);
}
std::string result = str.substr(pos, nextpos-pos);
textkeys.insert(std::make_pair(tk->list[i].time, Misc::StringUtils::toLower(result)));
@ -743,7 +758,7 @@ class NIFObjectLoader
e = e->extra;
}
if(!node->controller.empty())
if(!node->controller.empty() && (node->parent || node->recType != Nif::RC_NiNode))
createNodeControllers(name, node->controller, objectlist, animflags);
if(node->recType == Nif::RC_NiCamera)