/// <summary>
        /// Registering the interation between 2 rbelement types
        /// </summary>
        public void RegisterRBElementInteraction(MyRBElementType type1, MyRBElementType type2, MyRBElementInteraction intr)
        {
            int t1 = (int)type1;
            int t2 = (int)type2;

            List <MyRBElementInteraction> intrList = null;

            if (t1 < t2)
            {
                intrList = m_IslandsPool[t1, t2];
                m_IslandsPoolStatic[t1, t2] = intr.CreateNewInstance();
            }
            else
            {
                intrList = m_IslandsPool[t2, t1];
                m_IslandsPoolStatic[t2, t1] = intr.CreateNewInstance();
            }

            intrList.Capacity = m_preAllocCount;
            intrList.Add(intr);

            for (int i = 1; i < m_preAllocCount; i++)
            {
                MyRBElementInteraction ins = intr.CreateNewInstance();
                intrList.Add(ins);
            }
        }
        /// <summary>
        /// Registering the interation between 2 rbelement types
        /// </summary>
        public void RegisterRBElementInteraction(MyRBElementType type1, MyRBElementType type2, MyRBElementInteraction intr)
        {
            int t1 = (int)type1;
            int t2 = (int)type2;

            List<MyRBElementInteraction> intrList = null;
            if (t1 < t2)
            {
                intrList = m_IslandsPool[t1, t2];
                m_IslandsPoolStatic[t1, t2] = intr.CreateNewInstance();
            }
            else
            {
                intrList = m_IslandsPool[t2, t1];
                m_IslandsPoolStatic[t2, t1] = intr.CreateNewInstance(); 
            }

            intrList.Capacity = m_preAllocCount;
            intrList.Add(intr);

            for (int i = 1; i < m_preAllocCount; i++)
            {
                MyRBElementInteraction ins = intr.CreateNewInstance();
                intrList.Add(ins);
            }

        }