Exemplo n.º 1
0
 private void InitValues()
 {
     _startLocalPos        = AttachedObject.GetValue <Vector3>("_startLocalPos");
     _endLocalPos          = AttachedObject.GetValue <Vector3>("_endLocalPos");
     _interactVolume       = AttachedObject.GetValue <SingleInteractionVolume>("_interactVolume");
     _owAudioSourceOneShot = AttachedObject.GetValue <OWAudioSource>("_owAudioSourceOneShot");
     _owAudioSourceLP      = AttachedObject.GetValue <OWAudioSource>("_owAudioSourceLP");
 }
Exemplo n.º 2
0
        public static void Make(GameObject body, float airScale, bool isRaining)
        {
            GameObject airGO = new GameObject();

            airGO.SetActive(false);
            airGO.layer            = 17;
            airGO.transform.parent = body.transform;

            SphereCollider SC = airGO.AddComponent <SphereCollider>();

            SC.isTrigger = true;
            SC.radius    = airScale;

            SimpleFluidVolume SFV = airGO.AddComponent <SimpleFluidVolume>();

            SFV.SetValue("_layer", 5);
            SFV.SetValue("_priority", 1);
            SFV.SetValue("_density", 1.2f);
            SFV.SetValue("_fluidType", FluidVolume.Type.AIR);
            SFV.SetValue("_allowShipAutoroll", true);
            SFV.SetValue("_disableOnStart", false);

            if (isRaining)
            {
                VisorRainEffectVolume VREF = airGO.AddComponent <VisorRainEffectVolume>();
                VREF.SetValue("_rainDirection", VisorRainEffectVolume.RainDirection.Radial);
                VREF.SetValue("_layer", 0);
                VREF.SetValue("_priority", 0);

                AudioSource AS = airGO.AddComponent <AudioSource>();
                AS.mute                  = false;
                AS.bypassEffects         = false;
                AS.bypassListenerEffects = false;
                AS.bypassReverbZones     = false;
                AS.playOnAwake           = false;
                AS.loop                  = true;
                AS.priority              = 128;
                AS.volume                = 0.35f;
                AS.pitch                 = 1f;
                AS.panStereo             = 0f;
                AS.spatialBlend          = 0f;
                AS.reverbZoneMix         = 1f;

                OWAudioSource OWAS = airGO.AddComponent <OWAudioSource>();
                OWAS.SetAudioLibraryClip(AudioType.GD_RainAmbient_LP);
                OWAS.SetClipSelectionType(OWAudioSource.ClipSelectionOnPlay.RANDOM);
                OWAS.SetTrack(OWAudioMixer.TrackName.Environment);

                /*AudioVolume av = */ airGO.AddComponent <AudioVolume>();
            }

            airGO.SetActive(true);
            Logger.Log("Finished building air.", Logger.LogType.Log);
        }
Exemplo n.º 3
0
        public static void Make(GameObject body, float airScale, bool isRaining)
        {
            GameObject air = new GameObject();

            air.layer = 17;
            air.SetActive(false);
            air.transform.parent = body.transform;

            SphereCollider atmoSC = air.AddComponent <SphereCollider>();

            atmoSC.isTrigger = true;
            atmoSC.radius    = airScale;

            SimpleFluidVolume sfv = air.AddComponent <SimpleFluidVolume>();

            sfv.SetValue("_layer", 5);
            sfv.SetValue("_priority", 1);
            sfv.SetValue("_density", 1.2f);
            sfv.SetValue("_fluidType", FluidVolume.Type.AIR);
            sfv.SetValue("_allowShipAutoroll", true);
            sfv.SetValue("_disableOnStart", false);

            if (isRaining)
            {
                VisorRainEffectVolume vref = air.AddComponent <VisorRainEffectVolume>();
                vref.SetValue("_rainDirection", VisorRainEffectVolume.RainDirection.Radial);
                vref.SetValue("_layer", 0);
                vref.SetValue("_priority", 0);

                AudioSource auds = air.AddComponent <AudioSource>();
                auds.mute                  = false;
                auds.bypassEffects         = false;
                auds.bypassListenerEffects = false;
                auds.bypassReverbZones     = false;
                auds.playOnAwake           = false;
                auds.loop                  = true;
                auds.priority              = 128;
                auds.volume                = 0.35f;
                auds.pitch                 = 1f;
                auds.panStereo             = 0f;
                auds.spatialBlend          = 0f;
                auds.reverbZoneMix         = 1f;

                OWAudioSource owas = air.AddComponent <OWAudioSource>();
                owas.SetAudioLibraryClip(AudioType.GD_RainAmbient_LP);
                owas.SetClipSelectionType(OWAudioSource.ClipSelectionOnPlay.RANDOM);
                owas.SetTrack(OWAudioMixer.TrackName.Environment);

                AudioVolume av = air.AddComponent <AudioVolume>();
            }

            air.SetActive(true);
        }
Exemplo n.º 4
0
        private void OnEvent(MonoBehaviour behaviour, Events ev)
        {
            switch (behaviour)
            {
            case AnglerfishController anglerfishController
                when ev == Events.AfterEnable && _disableFish:
                ModHelper.Logger.Log("Deactivating anglerfish");
                anglerfishController.gameObject.SetActive(false);
                break;

            case FogLight fogLight
                when ev == Events.AfterStart && _disableFish:
                ModHelper.Logger.Log("Clearing _tint in FogOverrideVolume");
                ModHelper.HarmonyHelper.EmptyMethod <FogLight>("UpdateFogLight");
                break;

            case FogWarpVolume fogWarpVolume
                when ev == Events.AfterAwake && _disableFog:
                ModHelper.Logger.Log("Clearing _fogColor in FogWarpVolume");
                fogWarpVolume.SetValue("_fogColor", Color.clear);
                break;

            case PlanetaryFogController planetaryFogController
                when ev == Events.AfterEnable && _disableFog:
                ModHelper.Logger.Log("Clearing _fogTint in PlanetaryFogController");
                planetaryFogController.SetValue("_fogTint", Color.clear);
                break;

            case FogOverrideVolume fogOverrideVolume
                when ev == Events.AfterAwake && _disableFog:
                ModHelper.Logger.Log("Clearing _tint in FogOverrideVolume");
                fogOverrideVolume.SetValue("_tint", Color.clear);
                break;

            case GlobalMusicController globalMusicController
                when ev == Events.AfterStart:
                ModHelper.Logger.Log("Swapping _darkBrambleSource in GlobalMusicController");
                _brambleSource = behaviour.GetValue <OWAudioSource>("_darkBrambleSource");
                ModHelper.HarmonyHelper.EmptyMethod <GlobalMusicController>("UpdateBrambleMusic");
                break;
            }
        }
Exemplo n.º 5
0
        public static bool Moon_CheckPlayerFogProximity(
            QuantumMoon __instance,
            int ____stateIndex,
            float ____eyeStateFogOffset,
            ref bool ____isPlayerInside,
            float ____fogRadius,
            float ____fogThickness,
            float ____fogRolloffDistance,
            string ____revealFactID,
            OWRigidbody ____moonBody,
            bool ____hasSunCollapsed,
            Transform ____vortexReturnPivot,
            OWAudioSource ____vortexAudio,
            ref int ____collapseToIndex,
            VisibilityTracker ____visibilityTracker,
            QuantumFogEffectBubbleController ____playerFogBubble,
            QuantumFogEffectBubbleController ____shipLandingCamFogBubble)
        {
            var playerDistance  = Vector3.Distance(__instance.transform.position, Locator.GetPlayerCamera().transform.position);
            var fogOffset       = (____stateIndex != 5) ? 0f : ____eyeStateFogOffset;
            var distanceFromFog = playerDistance - (____fogRadius + fogOffset);
            var fogAlpha        = 0f;

            if (!____isPlayerInside)
            {
                fogAlpha = Mathf.InverseLerp(____fogThickness + ____fogRolloffDistance, ____fogThickness, distanceFromFog);
                if (distanceFromFog < 0f)
                {
                    if ((bool)__instance.GetType().GetMethod("IsLockedByProbeSnapshot", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, null) || QuantumManager.IsVisibleUsingCameraFrustum((ShapeVisibilityTracker)____visibilityTracker, true))
                    {
                        ____isPlayerInside = true;
                        __instance.GetType().GetMethod("SetSurfaceState", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[] { ____stateIndex });
                        Locator.GetShipLogManager().RevealFact(____revealFactID, true, true);
                        QSBEventManager.FireEvent("PlayerEnterQuantumMoon");
                    }
                    else
                    {
                        __instance.GetType().GetMethod("Collapse", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[] { true });
                    }
                }
            }
            else if (____isPlayerInside)
            {
                fogAlpha = Mathf.InverseLerp(-____fogThickness - ____fogRolloffDistance, -____fogThickness, distanceFromFog);
                if (distanceFromFog >= 0f)
                {
                    if (____stateIndex != 5)
                    {
                        ____isPlayerInside = false;
                        if (!(bool)__instance.GetType().GetMethod("IsLockedByProbeSnapshot", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, null) && !QuantumManager.IsVisibleUsingCameraFrustum((ShapeVisibilityTracker)____visibilityTracker, true))
                        {
                            __instance.GetType().GetMethod("Collapse", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[] { true });
                        }
                        __instance.GetType().GetMethod("SetSurfaceState", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[] { -1 });
                        QSBEventManager.FireEvent("PlayerExitQuantumMoon");
                    }
                    else
                    {
                        var vector = Locator.GetPlayerTransform().position - __instance.transform.position;
                        Locator.GetPlayerBody().SetVelocity(____moonBody.GetPointVelocity(Locator.GetPlayerTransform().position) - (vector.normalized * 5f));
                        var d = 80f;
                        Locator.GetPlayerBody().SetPosition(__instance.transform.position + (____vortexReturnPivot.up * d));
                        if (!Physics.autoSyncTransforms)
                        {
                            Physics.SyncTransforms();
                        }
                        var component = Locator.GetPlayerCamera().GetComponent <PlayerCameraController>();
                        component.SetDegreesY(component.GetMinDegreesY());
                        ____vortexAudio.SetLocalVolume(0f);
                        ____collapseToIndex = 1;
                        __instance.GetType().GetMethod("Collapse", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[] { true });
                    }
                }
            }
            ____playerFogBubble.SetFogAlpha(fogAlpha);
            ____shipLandingCamFogBubble.SetFogAlpha(fogAlpha);
            return(false);
        }