Пример #1
0
        /// <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);
        }
Пример #2
0
        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));
        }
Пример #3
0
        /// <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));
                    }
                }
            }
        }
Пример #4
0
 protected virtual LoadResult OnLoadFromXml(XmlNodeRef xml, LoadContext context)
 {
     return(LoadResult.LoadSuccess);
 }
Пример #5
0
        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));
        }
Пример #6
0
 /// <summary>
 /// Called by CryEngine. Do not call directly.
 /// </summary>
 public override bool SerializeXML(IFlowNode.SActivationInfo info, XmlNodeRef root, bool reading)
 {
     return(true);
 }
Пример #7
0
 /// <summary>
 /// Not implemented!
 /// </summary>
 public override void LoadEntityXMLProperties(IEntity entity, XmlNodeRef xml)
 {
     // TODO: Implement?
 }
Пример #8
0
 /// <summary>
 /// Not implemented!
 /// </summary>
 public override void LoadArchetypeXMLProperties(string archetypeName, XmlNodeRef xml)
 {
     // TODO: Implement?
 }