virtual protected internal Cv_EntityComponent[] ModifyEntity(Cv_Entity entity, XmlNodeList overrides) { var modifiedComponents = new List <Cv_EntityComponent>(); foreach (XmlElement componentNode in overrides) { var componentID = Cv_EntityComponent.GetID(componentNode.Name); var component = entity.GetComponent(componentID); if (component != null) { component.VInitialize(componentNode); component.VOnChanged(); modifiedComponents.Add(component); } else { component = CreateComponent(componentNode); if (component != null) { entity.AddComponent(component); modifiedComponents.Add(component); } } } return(modifiedComponents.ToArray()); }
virtual protected internal Cv_Entity CreateEntity(string entityTypeResource, Cv_EntityID parent, Cv_EntityID serverEntityID, string resourceBundle, Cv_SceneID sceneID, string sceneName) { Cv_XmlResource resource; resource = Cv_ResourceManager.Instance.GetResource <Cv_XmlResource>(entityTypeResource, resourceBundle, CaravelApp.Instance.EditorRunning); XmlElement root = ((Cv_XmlResource.Cv_XmlData)resource.ResourceData).RootNode; if (root == null) { Cv_Debug.Error("Failed to load entity resource file: " + entityTypeResource); return(null); } Cv_EntityID entityId = serverEntityID; if (entityId == Cv_EntityID.INVALID_ENTITY) { lock (m_Mutex) { entityId = GetNextEntityID(); } } var entity = new Cv_Entity(entityId, resourceBundle, sceneName, sceneID); if (!entity.Initialize(entityTypeResource, root, parent)) { Cv_Debug.Error("Failed to initialize entity: " + entityTypeResource); return(null); } foreach (var componentNode in root.ChildNodes) { if (componentNode.GetType() != typeof(XmlElement)) { continue; } var component = CreateComponent((XmlElement)componentNode); if (component != null) { entity.AddComponent(component); } else { return(null); } } return(entity); }