//------------------------------------------------------------------------------
// 
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.42000
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// 
//------------------------------------------------------------------------------
using Articy.Touhou;
using Articy.Unity;
using Articy.Unity.Interfaces;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Articy.Touhou.Features
{
    
    
    [Serializable()]
    public class BlessGroupFeature : IArticyBaseObject, IPropertyProvider
    {
        
        [SerializeField()]
        private ArticyValueArticyModelList mBlessGroup = new ArticyValueArticyModelList();
        
        [SerializeField()]
        private UInt64 mOwnerId;
        
        [SerializeField()]
        private UInt32 mOwnerInstanceId;
        
        public List BlessGroup
        {
            get
            {
                return mBlessGroup.GetValue();
            }
            set
            {
                var oldValue = mBlessGroup;
                mBlessGroup.SetValue(value);
                Articy.Unity.ArticyDatabase.ObjectNotifications.ReportChanged(OwnerId, OwnerInstanceId, "BlessGroup.BlessGroup", oldValue.GetValue(), mBlessGroup.GetValue());
            }
        }
        
        public UInt64 OwnerId
        {
            get
            {
                return mOwnerId;
            }
            set
            {
                mOwnerId = value;
            }
        }
        
        public UInt32 OwnerInstanceId
        {
            get
            {
                return mOwnerInstanceId;
            }
            set
            {
                mOwnerInstanceId = value;
            }
        }
        
        private void CloneProperties(object aClone, Articy.Unity.ArticyObject aFirstClassParent)
        {
            Articy.Touhou.Features.BlessGroupFeature newClone = ((Articy.Touhou.Features.BlessGroupFeature)(aClone));
            mBlessGroup.CustomClone(newClone.mBlessGroup);
            newClone.OwnerId = OwnerId;
        }
        
        public object CloneObject(object aParent, Articy.Unity.ArticyObject aFirstClassParent)
        {
            Articy.Touhou.Features.BlessGroupFeature clone = new Articy.Touhou.Features.BlessGroupFeature();
            CloneProperties(clone, aFirstClassParent);
            return clone;
        }
        
        public virtual bool IsLocalizedPropertyOverwritten(string aProperty)
        {
            return false;
        }
        
        #region property provider interface
        public void setProp(string aProperty, object aValue)
        {
            if ((aProperty == "BlessGroup"))
            {
                BlessGroup = ((List)(aValue));
                return;
            }
        }
        
        public Articy.Unity.Interfaces.ScriptDataProxy getProp(string aProperty)
        {
            if ((aProperty == "BlessGroup"))
            {
                return new Articy.Unity.Interfaces.ScriptDataProxy(BlessGroup);
            }
            return null;
        }
        #endregion
    }
}