예제 #1
0
 private void DoCache()
 {
     m_LerpCache = DTypeInfo <TTar> .Lerp;
     m_ZeroCache = DTypeInfo <TTar> .Zero;
     m_AddCache  = DTypeInfo <TTar> .Add;
     m_CacheDone = true;
 }
예제 #2
0
        /// <summary>
        /// Teach ioDriver perform addition operation on type T.
        /// </summary>
        /// <typeparam name="T">Object Type</typeparam>
        /// <param name="_addFunc">Function containing addition operation for type T.</param>
        public static void TeachAdd <T>(Teacher.FuncAdd <T> _addFunc)
        {
            DTypeInfo <T> .Add = _addFunc;

            if (m_TaughtTypes == null)
            {
                ioDriver.Init();
            }
            if (!m_TaughtTypes.ContainsKey(typeof(T)))
            {
                m_TaughtTypes.Add(typeof(T), new HashSet <TeachType>());
            }
            m_TaughtTypes[typeof(T)].Add(TeachType.Add);
        }
예제 #3
0
        /// <summary>
        /// Teach ioDriver how to use type T.
        /// </summary>
        /// <typeparam name="T">Type</typeparam>
        /// <param name="_zero">Zero equivalent of Type T</param>
        /// <param name="_add">Addition function for type T</param>
        /// <param name="_length">Length function for type T</param>
        /// <param name="_lerp">LERP function for type T</param>
        /// <param name="_iLerp">ILERP function for type T</param>
        public static void Teach <T>(T _zero, Teacher.FuncAdd <T> _add, Teacher.FuncLength <T> _length, Teacher.FuncLerp <T> _lerp, Teacher.FuncILerp <T> _iLerp)
        {
            DTypeInfo <T> .ZeroFunc = () => _zero;
            DTypeInfo <T> .Zero     = _zero;
            DTypeInfo <T> .Add      = _add;
            DTypeInfo <T> .Length   = _length;
            DTypeInfo <T> .Lerp     = _lerp;
            DTypeInfo <T> .ILerp    = _iLerp;

            if (m_TaughtTypes == null)
            {
                ioDriver.Init();
            }
            if (!m_TaughtTypes.ContainsKey(typeof(T)))
            {
                m_TaughtTypes.Add(typeof(T), new HashSet <TeachType>());
            }

            m_TaughtTypes[typeof(T)].Add(TeachType.Zero);
            m_TaughtTypes[typeof(T)].Add(TeachType.Add);
            m_TaughtTypes[typeof(T)].Add(TeachType.Length);
            m_TaughtTypes[typeof(T)].Add(TeachType.Lerp);
            m_TaughtTypes[typeof(T)].Add(TeachType.ILerp);
        }