Beispiel #1
0
        static MethodInfo ProBuilder_RefreshWithMaskMethodInfo()
        {
            if (m_ProBuilderRefresh == null)
            {
                Type refreshMaskType = GetTypeCached("ProBuilder.Core.RefreshMask");

                if (refreshMaskType == null)
                {
                    refreshMaskType = GetTypeCached("ProBuilder2.Common.RefreshMask");
                }

                if (refreshMaskType == null)
                {
                    return(null);
                }

                m_ProBuilderRefresh = ProBuilderObjectType.GetMethod(
                    "Refresh",
                    BindingFlags.Public | BindingFlags.Instance,
                    null,
                    new Type[] { refreshMaskType },
                    null);
            }

            return(m_ProBuilderRefresh);
        }
Beispiel #2
0
        private void CalculateProxyBounds(bool ignoreSpriteRendererBounds, Vector3 upVector)
        {
            Bounds bounds = UnityUtil.CalculateObjectBounds(Prefab, true, ignoreSpriteRendererBounds);

            // Since ProBuilder objects don't have a mesh until they're instantiated, we have to calculate the bounds manually
            if (ProBuilderObjectType != null)
            {
                foreach (var pbObject in Prefab.GetComponentsInChildren(ProBuilderObjectType))
                {
                    Vector3 min = new Vector3(float.MaxValue, float.MaxValue, float.MaxValue);
                    Vector3 max = new Vector3(float.MinValue, float.MinValue, float.MinValue);

                    Vector3[] vertices = (Vector3[])ProBuilderObjectType.GetProperty("vertices").GetValue(pbObject, null);

                    foreach (var vert in vertices)
                    {
                        min = Vector3.Min(min, vert);
                        max = Vector3.Max(max, vert);
                    }

                    Vector3 size   = Prefab.transform.TransformDirection(max - min);
                    Vector3 center = Prefab.transform.TransformPoint(min) + size / 2;
                    bounds.Encapsulate(new Bounds(center, size));
                }
            }

            bounds       = UnityUtil.CondenseBounds(bounds, Prefab.GetComponentsInChildren <Doorway>(true));
            bounds.size *= 0.99f;

            var collider = Proxy.AddComponent <BoxCollider>();

            collider.center = bounds.center;
            collider.size   = bounds.size;
        }
Beispiel #3
0
        /// <summary>
        /// Fallback for ProBuilder 2.6.1 and lower (Refresh() with no params).
        /// </summary>
        /// <returns></returns>
        static MethodInfo ProBuilder_RefreshMethodInfo()
        {
            if (m_ProBuilderRefreshNoArgs == null)
            {
                m_ProBuilderRefreshNoArgs = ProBuilderObjectType.GetMethod(
                    "Refresh",
                    BindingFlags.Public | BindingFlags.Instance);
            }

            return(m_ProBuilderRefreshNoArgs);
        }