/** * @brief Helper function to parse a file and make a GameObject. * @param aObject * @param aParser */ void ObjectManager::ParseDictionary(GameObject *aObject, Parser &aParser) { if(aParser.Find("Name")) { std::string name = aParser.Find("Name", "Value")->GetValue().ToString(); aObject->SetName(name); } if(aParser.Find("PhysicsObject")) { PhysicsObject *object = GetOwningApp()->GET<PhysicsWorld>()->CreateObject(); aObject->AddComponent(object); object->Deserialize(aParser); } if(aParser.Find("Transform")) { // Get Position, Scale, and Size Transform *transform = new Transform(); transform->Deserialize(aParser); aObject->AddComponent(transform); } if(aParser.Find("Surface")) { #if !defined(ANDROID) && !defined(IOS) PCSurface *surface = nullptr; #else Surface *surface = nullptr; #endif if(aParser.Find("Surface", "UIElement") && aParser.Find("Surface", "UIElement")->GetValue().ToBool()) { #if !defined(ANDROID) && !defined(IOS) surface = (PCSurface*)GetOwningApp()->GET<GraphicsManager>()->CreateUISurface(); #else surface = GetOwningApp()->GET<GraphicsManager>()->CreateUISurface(); #endif } else { #if !defined(ANDROID) && !defined(IOS) surface = (PCSurface*)GetOwningApp()->GET<GraphicsManager>()->CreateSurface(); #else surface = GetOwningApp()->GET<GraphicsManager>()->CreateSurface(); #endif } surface->Deserialize(aParser); aObject->AddComponent(surface); } if(aParser.Find("Focus")) { bool isTarget = aParser.Find("Focus", "IsFocus")->GetValue().ToBool(); if(isTarget) { GetOwningApp()->GET<GraphicsManager>()->GetScreen()->GetView().SetTarget(aObject); } } }