public MirrorRendererReplacer(MirrorRendererSO original)
            {
                renderer      = Object.Instantiate(original);
                renderer.name = original.name + " (Floor Instance)";

                mirrors = new List <Mirror>();
            }
        public PlatformsAppInstaller(PluginMetadata pluginMetadata, Logger logger, PluginConfig config, SceneContext sceneContext)
        {
            _pluginMetadata = pluginMetadata;
            _config         = config;
            _logger         = logger;
            MainSystemInit mainSystemInit = ((PCAppInit)sceneContext
                                             .GetField <List <MonoInstaller>, Context>("_monoInstallers")
                                             .First(x => x is PCAppInit))
                                            .GetField <MainSystemInit, PCAppInit>("_mainSystemInit");

            _mirrorRenderer = mainSystemInit.GetField <MirrorRendererSO, MainSystemInit>("_mirrorRenderer");
        }
        private void UpdateFloorObjects()
        {
            RemoveDestroyedMirrorRenderers();
            RemoveDestroyedTransforms();

            string[] floorObjectNames;

            switch (_settings.floorHeightAdjust.value)
            {
            case FloorHeightAdjust.PlayersPlaceOnly:
                floorObjectNames = _playersPlaceObjectNames;
                break;

            case FloorHeightAdjust.EntireEnvironment:
                floorObjectNames = _environmentObjectNames;
                break;

            default:
                ResetFloorObjects();
                return;
            }

            foreach (var floorObjectName in floorObjectNames)
            {
                GameObject floorObject = GameObject.Find(floorObjectName);

                if (!floorObject)
                {
                    continue;
                }

                _logger.Info($"Moving '{floorObjectName}' to {floorPosition:0.000} m");

                if (!_originalPositions.ContainsKey(floorObject.transform))
                {
                    _originalPositions.Add(floorObject.transform, floorObject.transform.position);
                }

                floorObject.transform.position = _originalPositions[floorObject.transform] + new Vector3(0, floorPosition, 0);

                foreach (Mirror mirror in floorObject.GetComponentsInChildren <Mirror>())
                {
                    MirrorRendererSO mirrorRenderer = mirror.GetPrivateField <MirrorRendererSO>("_mirrorRenderer");

                    if (!_mirrorRenderers.ContainsKey(mirrorRenderer))
                    {
                        _mirrorRenderers.Add(mirrorRenderer, new MirrorRendererReplacer(mirrorRenderer));
                    }

                    _mirrorRenderers[mirrorRenderer].AddMirror(mirror);
                }
            }
        }
Beispiel #4
0
        internal void Start()
        {
            _playerAvatarManager.avatarChanged      += OnAvatarChanged;
            _playerAvatarManager.avatarScaleChanged += OnAvatarScaleChanged;
            _settings.floorHeightAdjust.changed     += OnFloorHeightAdjustChanged;

            foreach (Mirror mirror in GetComponentsInChildren <Mirror>())
            {
                _logger.Trace($"Replacing {nameof(MirrorRendererSO)} on '{mirror.name}'");

                MirrorRendererSO original = mirror.GetField <MirrorRendererSO, Mirror>("_mirrorRenderer");
                MirrorRendererSO renderer = Instantiate(original);
                renderer.name = original.name + " (Moved Floor Instance)";
                mirror.SetField("_mirrorRenderer", renderer);
            }

            UpdateOffset();
        }
Beispiel #5
0
 public void Construct(MirrorRendererSO mirrorRenderer)
 {
     _mirrorRenderer = mirrorRenderer;
 }
Beispiel #6
0
        private static void CreateOrUpdateMirrorCamera(MirrorRendererSO __instance)
        {
            Camera mirrorCamera = new Traverse(__instance).Field <Camera>("_mirrorCamera").Value;

            mirrorCamera.cullingMask |= AvatarLayers.kAllLayersMask;
        }