public void FindSceneToEdit()
    {
        foreach (IParcelScene scene in Environment.i.world.state.scenesSortedByDistance)
        {
            if (WorldStateUtils.IsCharacterInsideScene(scene))
            {
                ParcelScene parcelScene = (ParcelScene)scene;

                if (sceneToEdit != null && sceneToEdit != parcelScene)
                {
                    actionController.Clear();
                }

                sceneToEdit = parcelScene;
                break;
            }
        }
    }
Пример #2
0
        private void SetRaycastInfoData(ref RaycastHitInfo hitInfo, IParcelScene scene)
        {
            if (hitInfo.hit.collider == null)
            {
                return;
            }

            if (!CollidersManager.i.GetColliderInfo(hitInfo.hit.collider, out ColliderInfo info))
            {
                return;
            }

            if (scene != null)
            {
                hitInfo.isValid = (info.scene == scene) || (scene is GlobalScene globalScene && globalScene.isPortableExperience);
            }
            else if (scene == null && WorldStateUtils.IsCharacterInsideScene(info.scene))
            {
                hitInfo.isValid = true;
            }
        }