Пример #1
0
        SF.FloatWriter CreateWriter(SFA.SmartBase smart, SFA.SmartDataRefBase.RefType type, int multiIndex = -1)
        {
            var r = new SF.FloatWriter();

            SetupFloatRef(r, smart, type, multiIndex);
            return(r);
        }
Пример #2
0
        void SetupFloatRef(object r, SFA.SmartBase smart, SFA.SmartDataRefBase.RefType type, int multiIndex)
        {
            var b = BindingFlags.Instance | BindingFlags.NonPublic;

            r.GetType().GetFieldPrivate(SmartDataRefPropertyDrawer.refPropNames[type], b).SetValue(r, smart);
            try {
                // Will throw for FloatMulti but doesn't matter
                r.GetType().GetFieldPrivate("_refType", b).SetValue(r, type);
            } catch {}
            if (multiIndex >= 0)
            {
                r.GetType().GetField("_multiIndex", b).SetValue(r, multiIndex);
            }

            r.GetType().GetFieldPrivate("_onUpdate", b).SetValue(r, new SmartFloat.Data.FloatVar.FloatEvent());

            if (r is ISerializationCallbackReceiver)
            {
                ((ISerializationCallbackReceiver)r).OnAfterDeserialize();
            }
            (r as SmartData.Abstract.SmartRefBase).unityEventOnReceive = true;
        }