/// <summary> /// Only intended to be used by the EntityFramework itself! Spawn a managed entity instance of this entity class around the provided native entity. For entities that are being loaded from XML files an XmlNodeRef can be provided. /// </summary> /// <returns>The instance.</returns> /// <param name="pEntity">Native CRYENGINE entity.</param> /// <param name="entityNode">(Optional) xml node for entities loaded from files (e.g. levels/layers).</param> internal BaseEntity CreateInstance(IEntity pEntity, XmlNodeRef entityNode = null) { object instance = FormatterServices.GetUninitializedObject(_protoType); FieldInfo fEntity = _protoType.GetField("_entity", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); if (fEntity != null) { fEntity.SetValue(instance, pEntity); } FieldInfo fEntityClass = _protoType.GetField("_entityClass", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); if (fEntityClass != null) { fEntityClass.SetValue(instance, this); } BaseEntity managedInstance = (BaseEntity)instance; if (_propertyHandler != null) { _propertyHandler.SetDefaults(managedInstance); if (entityNode != null) { _propertyHandler.SetXMLProperties(managedInstance, entityNode); } } managedInstance.Initialize(); return(managedInstance); }
public sealed override LoadResult LoadFromXml(XmlNodeRef xml, LoadContext context) { _startLog = xml.getAttr("_startLog"); _successLog = xml.getAttr("_successLog"); _failureLog = xml.getAttr("_failureLog"); _interruptLog = xml.getAttr("_interruptLog"); return(OnLoadFromXml(xml, context)); }
/// <summary> /// Read property values from the given xml node and apply them to the given managed entity instance. Used when handling entities loaded from xml files (e.g. levels/layers). /// </summary> /// <param name="managedEntity">Managed entity instance.</param> /// <param name="xml">Entity xml node (only the 'Properties' child-node is relevant).</param> public void SetXMLProperties(BaseEntity managedEntity, XmlNodeRef xml) { int nChildren = xml.getChildCount(); for (int i = 0; i < nChildren; i++) { XmlNodeRef child = xml.getChild(i); if (String.Equals(child.getTag(), "Properties", StringComparison.InvariantCultureIgnoreCase)) { foreach (EntityProperty prop in _properties) { if (!child.haveAttr(prop.EngineInfo.name)) { continue; } prop.Set(managedEntity, child.getAttr(prop.EngineInfo.name)); } } } }
protected virtual LoadResult OnLoadFromXml(XmlNodeRef xml, LoadContext context) { return(LoadResult.LoadSuccess); }
public ParticleEffect LoadEffect(string sEffectName, XmlNodeRef effectNode, bool bLoadResources, string sSource) { var nativeEffect = NativeHandle.LoadEffect(sEffectName, effectNode, bLoadResources, sSource); return(nativeEffect == null ? null : new ParticleEffect(nativeEffect)); }
/// <summary> /// Called by CryEngine. Do not call directly. /// </summary> public override bool SerializeXML(IFlowNode.SActivationInfo info, XmlNodeRef root, bool reading) { return(true); }
/// <summary> /// Not implemented! /// </summary> public override void LoadEntityXMLProperties(IEntity entity, XmlNodeRef xml) { // TODO: Implement? }
/// <summary> /// Not implemented! /// </summary> public override void LoadArchetypeXMLProperties(string archetypeName, XmlNodeRef xml) { // TODO: Implement? }