if(pItemElem && pItemElem->m_dwnewID)
{
ItemProp * prop = prj.GetItemProp(pItemElem->m_dwnewID);//prevent model neuz crashes
if( pItemElem && pItemElem->m_dwnewID != NULL && pItemElem->m_dwnewID != NULL_ID && pItemProp)
Wieso prüfst du erst ob es nicht 0 ist (if(pItemElem->m_dwnewId)) und prüfst es danach nochmal ob es nicht 0 und -1 ist?
-1, -2, -3,.. würde er alles durchgehen lassen. Einfaches if(x>0) fertig.
Wieso ladest du die properties des Items in prop und verwendest dann nichtmehr Prop o.O
Weiter will ich mir den Code nicht anschauen da mir sonst übel wird.