示例#1
0
        void RemoveGameObjects(PolyRaycastHit hit, BrushTarget target, BrushSettings settings)
        {
            Vector3 worldHitPosition = target.editableObject.transform.TransformPoint(hit.position);

            int count = m_PrefabsInstances.Count;

            for (int i = 0; i < count; i++)
            {
                // Skip the object if prefab is not part of the current loadout.
                if (!prefabLoadoutEditor.ContainsPrefabInstance(m_PrefabsInstances[i]))
                {
                    continue;
                }

                float pivotOffset    = s_UsePivotForPlacement ? 0f : GetPivotOffset(m_PrefabsInstances[i]);
                float prefabDistance = SceneView.lastActiveSceneView.in2DMode
                    ? Vector2.Distance(worldHitPosition, m_PrefabsInstances[i].transform.position + (pivotOffset * m_PrefabsInstances[i].transform.up))
                    : Vector3.Distance(worldHitPosition, m_PrefabsInstances[i].transform.position + (pivotOffset * m_PrefabsInstances[i].transform.up));

                if (m_PrefabsInstances[i] != null && prefabDistance < settings.radius)
                {
                    GameObject go = m_PrefabsInstances[i];
                    m_PrefabsInstances.RemoveAt(i);
                    count--;
                    Undo.DestroyObjectImmediate(go);
                }
            }
        }
示例#2
0
        void RemoveGameObjects(PolyRaycastHit hit, BrushTarget target, BrushSettings settings)
        {
            Vector3 worldHitPosition = target.editableObject.transform.TransformPoint(hit.position);

            int count = m_PrefabsInstances.Count;

            for (int i = 0; i < count; i++)
            {
                // Skip the object if prefab is not part of the current loadout.
                if (!prefabLoadoutEditor.ContainsPrefabInstance(m_PrefabsInstances[i]))
                {
                    continue;
                }

                if (m_PrefabsInstances[i] != null && Vector3.Distance(worldHitPosition, m_PrefabsInstances[i].transform.position) < settings.radius)
                {
                    GameObject go = m_PrefabsInstances[i];
                    m_PrefabsInstances.RemoveAt(i);
                    count--;
                    Undo.DestroyObjectImmediate(go);
                }
            }
        }