Merge branch 'dev' into height-map-resolution

This commit is contained in:
Nick 2022-07-21 19:05:44 -04:00
commit aa009eead0
21 changed files with 228 additions and 54 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 B

After

Width:  |  Height:  |  Size: 129 B

View File

@ -85,7 +85,7 @@ namespace NewHorizons.Builder.Body
// remove default vines
var geoBatchedGroup = geometry.FindChild("BatchedGroup");
var collider = geoBatchedGroup.FindChild("BatchedMeshColliders_1");
var collider = geoBatchedGroup.FindChild("BatchedMeshColliders_0");
collider.transform.parent = geometry.transform;
GameObject.Destroy(geoBatchedGroup);

View File

@ -24,6 +24,7 @@ namespace NewHorizons.Builder.Body
public static StarController Make(GameObject planetGO, Sector sector, StarModule starModule, IModBehaviour mod)
{
var starGO = MakeStarGraphics(planetGO, sector, starModule, mod);
var ramp = starGO.GetComponentInChildren<TessellatedSphereRenderer>().sharedMaterial.GetTexture(ColorRamp);
var sunAudio = Object.Instantiate(SearchUtilities.Find("Sun_Body/Sector_SUN/Audio_SUN"), starGO.transform);
sunAudio.transform.localPosition = Vector3.zero;
@ -140,15 +141,10 @@ namespace NewHorizons.Builder.Body
controller.StartColour = starModule.tint;
controller.EndColour = starModule.endTint;
controller.WillExplode = starModule.goSupernova;
if (!string.IsNullOrEmpty(starModule.starRampTexture))
{
var ramp = ImageUtilities.GetTexture(mod, starModule.starRampTexture);
controller.normalRamp = ramp;
}
controller.normalRamp = !string.IsNullOrEmpty(starModule.starRampTexture) ? ImageUtilities.GetTexture(mod, starModule.starRampTexture) : ramp;
if (!string.IsNullOrEmpty(starModule.starCollapseRampTexture))
{
var ramp = ImageUtilities.GetTexture(mod, starModule.starCollapseRampTexture);
controller.collapseRamp = ramp;
controller.collapseRamp = ImageUtilities.GetTexture(mod, starModule.starCollapseRampTexture);
}
surfaceAudio.SetStarEvolutionController(controller);
starGO.SetActive(true);

View File

@ -37,7 +37,7 @@ namespace NewHorizons.Builder.General
{
var alignment = body.AddComponent<AlignWithTargetBody>();
alignment.SetTargetBody(primaryBody?.GetAttachedOWRigidbody());
alignment._usePhysicsToRotate = true;
alignment._usePhysicsToRotate = !config.Orbit.isStatic;
if (config.Orbit.alignmentAxis == null)
{
alignment._localAlignmentAxis = new Vector3(0, -1, 0);

View File

@ -41,6 +41,13 @@ namespace NewHorizons.Builder.General
RFV._isPrimaryVolume = true;
RFV._isCloseRangeVolume = false;
if (module.localPosition != null)
{
rfGO.transform.localPosition = module.localPosition;
RV._localPosition = module.localPosition;
RV._useCenterOfMass = false;
}
owrb.SetAttachedReferenceFrameVolume(RFV);
if (!module.enabled) GameObject.Destroy(rfGO);

View File

@ -27,6 +27,7 @@ namespace NewHorizons.Builder.Props
var owAudioSource = go.AddComponent<OWAudioSource>();
owAudioSource._audioSource = audioSource;
owAudioSource.loop = true;
owAudioSource.SetTrack((OWAudioMixer.TrackName)Enum.Parse(typeof(OWAudioMixer.TrackName), Enum.GetName(typeof(AudioMixerTrackName), info.track)));
AudioUtilities.SetAudioClip(owAudioSource, info.audio, mod);
var audioVolume = go.AddComponent<AudioVolume>();
@ -36,6 +37,7 @@ namespace NewHorizons.Builder.Props
var owTriggerVolume = go.AddComponent<OWTriggerVolume>();
owTriggerVolume._shape = shape;
audioVolume._triggerVolumeOverride = owTriggerVolume;
go.SetActive(true);

View File

@ -23,7 +23,7 @@ namespace NewHorizons.Builder.Props
// values are all nodes' warp controllers that link to a given dimension
// unpairedNodes[name of dimension that doesn't exist yet] => List{warp controller for node that links to that dimension, ...}
private static Dictionary<string, List<InnerFogWarpVolume>> _unpairedNodes = new();
private static Dictionary<string, List<SignalInfo>> _propogatedSignals = null;
private static Dictionary<string, List<SignalInfo>> _propagatedSignals = null;
public static Dictionary<string, InnerFogWarpVolume> NamedNodes { get; private set; }
public static Dictionary<BrambleNodeInfo, GameObject> BuiltBrambleNodes { get; private set; }
@ -34,7 +34,7 @@ namespace NewHorizons.Builder.Props
public static void Init()
{
_unpairedNodes = new();
_propogatedSignals = null;
_propagatedSignals = null;
NamedNodes = new();
BuiltBrambleNodes = new();
}
@ -80,7 +80,7 @@ namespace NewHorizons.Builder.Props
return outerFogWarpVolume;
}
private static void PropogateSignals()
private static void PropagateSignals()
{
// The purpose of this function is to determine which signals any given node should play, based on which dimension it links to
// you know how the main dark bramble node, the one that forms the core of the planet, plays Feldspar's harmonica signal, even though Feldspar isn't in the dimension that the node links directly to?
@ -88,7 +88,7 @@ namespace NewHorizons.Builder.Props
// New Strategy (thanks Damian):
// 1) Run Floyd-Warshall on the dimensions (where each dimension is a vertex and each node is an edge)
// 2) For each dimension A, if it's possible to reach dimension B, add dimension B's signals to the list propogatedSignals[A]
// 2) For each dimension A, if it's possible to reach dimension B, add dimension B's signals to the list propagatedSignals[A]
var allDimensions = PlanetCreationHandler.allBodies.Where(body => body?.Config?.Bramble?.dimension != null).Select(body => body.Config).ToList();
@ -129,11 +129,11 @@ namespace NewHorizons.Builder.Props
//
// this dictionary lists all the signals a given node should have, depending on the dimension it links to
// ie, if a node links to "dimension1", then that node should spawn all of the signals in the list propogatedSignals["dimension1"]
_propogatedSignals = new Dictionary<string, List<SignalInfo>>();
// ie, if a node links to "dimension1", then that node should spawn all of the signals in the list propagatedSignals["dimension1"]
_propagatedSignals = new Dictionary<string, List<SignalInfo>>();
foreach (var dimension in allDimensions)
{
_propogatedSignals[dimension.name] = new();
_propagatedSignals[dimension.name] = new();
var dimensionIndex = dimensionNameToIndex[dimension.name];
foreach (var destinationDimension in allDimensions)
@ -143,7 +143,7 @@ namespace NewHorizons.Builder.Props
var destinationIndex = dimensionNameToIndex[destinationDimension.name];
if (access[dimensionIndex, destinationIndex])
{
_propogatedSignals[dimension.name].AddRange(destinationDimension.Props.signals);
_propagatedSignals[dimension.name].AddRange(destinationDimension.Props.signals);
}
}
}
@ -289,8 +289,8 @@ namespace NewHorizons.Builder.Props
}
// Make signals
if (_propogatedSignals == null) PropogateSignals();
foreach (var signalConfig in _propogatedSignals[config.linksTo])
if (_propagatedSignals == null) PropagateSignals();
foreach (var signalConfig in _propagatedSignals[config.linksTo])
{
var signalGO = SignalBuilder.Make(go, sector, signalConfig, mod);
signalGO.GetComponent<AudioSignal>()._identificationDistance = 0;

View File

@ -106,6 +106,7 @@ namespace NewHorizons.Builder.Props
if (prefab == null) return null;
GameObject prop = prefab.InstantiateInactive();
prop.name = prefab.name;
prop.transform.parent = sector?.transform ?? planetGO.transform;
StreamingHandler.SetUpStreaming(prop, sector);

View File

@ -7,12 +7,11 @@ namespace NewHorizons.Builder.Props
{
public static void Make(GameObject planetGO, Sector sector, PropModule.GeyserInfo info)
{
var original = SearchUtilities.Find("TimberHearth_Body/Sector_TH/Interactables_TH/Geysers/Geyser_Village");
GameObject geyserGO = original.InstantiateInactive();
var geyserGO = SearchUtilities.Find("TimberHearth_Body/Sector_TH/Interactables_TH/Geysers/Geyser_Village").InstantiateInactive();
geyserGO.transform.parent = sector?.transform ?? planetGO.transform;
geyserGO.name = "Geyser";
var pos = ((Vector3)info.position);
var pos = (Vector3)info.position;
// Want half of it to be underground
var length = pos.magnitude - 65;
@ -25,7 +24,9 @@ namespace NewHorizons.Builder.Props
var up = planetGO.transform.TransformPoint(pos) - planetGO.transform.position;
geyserGO.transform.rotation = Quaternion.FromToRotation(geyserGO.transform.up, up) * geyserGO.transform.rotation;
var controller = geyserGO.GetComponent<GeyserController>();
if (info.disableBubbles) geyserGO.FindChild("GeyserParticles/GeyserBubbles").SetActive(false);
if (info.disableShaft) geyserGO.FindChild("GeyserParticles/GeyserShaft").SetActive(false);
if (info.disableSpout) geyserGO.FindChild("GeyserParticles/GeyserSpout").SetActive(false);
geyserGO.SetActive(true);
@ -34,8 +35,8 @@ namespace NewHorizons.Builder.Props
// Do this after awake
Delay.FireOnNextUpdate(() => geyserFluidVolume._maxHeight = 1);
geyserFluidVolume.enabled = true;
geyserGO.transform.Find("FluidVolume_Geyser").GetComponent<CapsuleShape>().enabled = true;
geyserFluidVolume.enabled = true; // why do we enable this? idk
geyserFluidVolume.GetComponent<CapsuleShape>().enabled = true; // i think this is already enabled but wtv
}
}
}

View File

@ -97,7 +97,7 @@ namespace NewHorizons.Builder.Props
{
if (_scrollPrefab == null) InitPrefabs();
var xmlPath = System.IO.File.ReadAllText(mod.ModHelper.Manifest.ModFolderPath + info.xmlFile);
var xmlPath = File.ReadAllText(mod.ModHelper.Manifest.ModFolderPath + info.xmlFile);
switch (info.type)
{
@ -365,7 +365,7 @@ namespace NewHorizons.Builder.Props
{
GameObject arc;
var type = arcInfo != null ? arcInfo.type : PropModule.NomaiTextArcInfo.NomaiTextArcType.Adult;
var variation = arcInfo == null ? arcInfo.variation : -1;
var variation = arcInfo != null ? arcInfo.variation : -1;
switch (type)
{
case PropModule.NomaiTextArcInfo.NomaiTextArcType.Child:

View File

@ -165,7 +165,15 @@ namespace NewHorizons.Builder.Props
source.rolloffMode = AudioRolloffMode.Custom;
if (_customCurve == null)
_customCurve = SearchUtilities.Find("Moon_Body/Sector_THM/Characters_THM/Villager_HEA_Esker/Signal_Whistling").GetComponent<AudioSource>().GetCustomCurve(AudioSourceCurveType.CustomRolloff);
{
_customCurve = new AnimationCurve(
new Keyframe(0.0333f, 1f, -30.012f, -30.012f, 0.3333f, 0.3333f),
new Keyframe(0.0667f, 0.5f, -7.503f, -7.503f, 0.3333f, 0.3333f),
new Keyframe(0.1333f, 0.25f, -1.8758f, -1.8758f, 0.3333f, 0.3333f),
new Keyframe(0.2667f, 0.125f, -0.4689f, -0.4689f, 0.3333f, 0.3333f),
new Keyframe(0.5333f, 0.0625f, -0.1172f, -0.1172f, 0.3333f, 0.3333f),
new Keyframe(1f, 0f, -0.0333f, -0.0333f, 0.3333f, 0.3333f));
}
source.SetCustomCurve(AudioSourceCurveType.CustomRolloff, _customCurve);
// If it can be heard regularly then we play it immediately

View File

@ -38,8 +38,12 @@ namespace NewHorizons.Components
_isWarpingIn = false;
_oneShotSource = gameObject.AddComponent<OWAudioSource>();
var audioObject = new GameObject("WarpOneShot");
audioObject.transform.parent = transform;
audioObject.SetActive(false);
_oneShotSource = audioObject.AddComponent<OWAudioSource>();
_oneShotSource._track = OWAudioMixer.TrackName.Ship;
audioObject.SetActive(true);
GlobalMessenger.AddListener("FinishOpenEyes", new Callback(OnFinishOpenEyes));
}

View File

@ -34,7 +34,7 @@ namespace NewHorizons.Components.SizeControllers
private float _collapseStartSize;
private float _collapseTimer;
public float collapseTime = 5f; // seconds
public float collapseTime = 10f; // seconds
public float lifespan = 22f; // minutes
private float _age;
@ -45,6 +45,7 @@ namespace NewHorizons.Components.SizeControllers
private Material _collapseEndSurfaceMaterial;
private Material _startSurfaceMaterial;
private Material _endSurfaceMaterial;
private Material _surfaceMaterial;
private Texture _normalRamp;
private Texture _collapseRamp;
@ -55,10 +56,14 @@ namespace NewHorizons.Components.SizeControllers
private float maxScale;
private float minScale;
private static readonly int ColorRamp = Shader.PropertyToID("_ColorRamp");
private static readonly int ColorTime = Shader.PropertyToID("_ColorTime");
private static readonly int InnerRadius = Shader.PropertyToID("_InnerRadius");
private static readonly int OuterRadius = Shader.PropertyToID("_OuterRadius");
private static readonly int SkyColor = Shader.PropertyToID("_SkyColor");
private Color _currentColour;
void Start()
private void Start()
{
var sun = GameObject.FindObjectOfType<SunController>();
_collapseStartSurfaceMaterial = new Material(sun._collapseStartSurfaceMaterial);
@ -133,6 +138,7 @@ namespace NewHorizons.Components.SizeControllers
}
_flareEmitter = GetComponentInChildren<SolarFlareEmitter>();
_surfaceMaterial = supernova._surface._materials[0];
}
public void OnDestroy()
@ -159,15 +165,20 @@ namespace NewHorizons.Components.SizeControllers
{
_currentColour = Color.Lerp(_startColour, _endColour, t);
supernova._surface._materials[0].Lerp(_startSurfaceMaterial, _endSurfaceMaterial, t);
supernova._surface._materials[0].SetFloat(ColorTime, t);
}
else
{
_currentColour = _endColour;
supernova._surface._materials[0].Lerp(_startSurfaceMaterial, _endSurfaceMaterial, 1);
supernova._surface._materials[0].SetFloat(ColorTime, 1);
}
}
else
{
_currentColour = _startColour;
supernova._surface._materials[0].Lerp(_startSurfaceMaterial, _endSurfaceMaterial, 0);
supernova._surface._materials[0].SetFloat(ColorTime, 0);
}
if (_flareEmitter != null) _flareEmitter._tint = _currentColour;
@ -217,7 +228,17 @@ namespace NewHorizons.Components.SizeControllers
if (_proxy != null) _proxy.StartCollapse();
}
private void StartSupernova()
public void StopCollapse()
{
Logger.LogVerbose($"{gameObject.transform.root.name} stopped collapse");
_isCollapsing = false;
supernova._surface._materials[0].CopyPropertiesFromMaterial(_endSurfaceMaterial);
if (_proxy != null) _proxy.StopCollapse();
}
public void StartSupernova()
{
Logger.LogVerbose($"{gameObject.transform.root.name} started supernova");
@ -229,6 +250,25 @@ namespace NewHorizons.Components.SizeControllers
if (_destructionVolume != null) _destructionVolume._deathType = DeathType.Supernova;
}
public void StopSupernova()
{
Logger.LogVerbose($"{gameObject.transform.root.name} stopped supernova");
supernova.enabled = false;
_isSupernova = false;
if (atmosphere != null) atmosphere.SetActive(true);
if (_destructionVolume != null)
{
_destructionVolume._deathType = DeathType.Energy;
_destructionVolume.transform.localScale = Vector3.one;
}
if (_heatVolume != null) _heatVolume.transform.localScale = Vector3.one;
gameObject.SetActive(true);
transform.localScale = Vector3.one;
supernova._surface._materials[0] = _surfaceMaterial;
supernova._surface.transform.localScale = Vector3.one;
}
protected new void FixedUpdate()
{
_age += Time.deltaTime;
@ -266,13 +306,13 @@ namespace NewHorizons.Components.SizeControllers
_fog._fogTint = fogColour;
}
if (_atmosphereRenderers != null && _atmosphereRenderers.Count() > 0)
if (_atmosphereRenderers != null)
{
foreach (var lod in _atmosphereRenderers)
{
lod.material.SetFloat("_InnerRadius", CurrentScale);
lod.material.SetFloat("_OuterRadius", CurrentScale * StarBuilder.OuterRadiusRatio);
lod.material.SetColor("_SkyColor", _currentColour);
lod.material.SetFloat(InnerRadius, CurrentScale);
lod.material.SetFloat(OuterRadius, CurrentScale * StarBuilder.OuterRadiusRatio);
lod.material.SetColor(SkyColor, _currentColour);
}
}
}

View File

@ -112,7 +112,7 @@ namespace NewHorizons.External.Modules
/// <summary>
/// Fluid type for sounds/effects when colliding with this cloud.
/// </summary>
public CloudFluidType fluidType = CloudFluidType.Cloud;
[DefaultValue("cloud")] public CloudFluidType fluidType = CloudFluidType.Cloud;
/// <summary>
/// Add lightning to this planet like on Giant's Deep.

View File

@ -38,7 +38,7 @@ namespace NewHorizons.External.Modules
/// <summary>
/// How gravity falls off with distance. Most planets use linear but the sun and some moons use inverseSquared.
/// </summary>
public GravityFallOff gravityFallOff = GravityFallOff.Linear;
[DefaultValue("linear")] public GravityFallOff gravityFallOff = GravityFallOff.Linear;
/// <summary>
/// Radius of a simple sphere used as the ground for the planet. If you want to use more complex terrain, leave this as

View File

@ -208,6 +208,11 @@ namespace NewHorizons.External.Modules
/// Position of the geyser
/// </summary>
public MVector3 position;
/// <summary>
/// Disable the individual particle systems of the geyser
/// </summary>
public bool disableBubbles, disableShaft, disableSpout;
}
[JsonObject]
@ -248,7 +253,7 @@ namespace NewHorizons.External.Modules
/// <summary>
/// What type of cyclone should this be? Upwards and downwards are both tornados and will push in that direction.
/// </summary>
public TornadoType type = TornadoType.Downwards;
[DefaultValue("downwards")] public TornadoType type = TornadoType.Downwards;
/// <summary>
/// Angular distance from the starting position that it will wander, in terms of the angle around the x-axis.
@ -409,7 +414,7 @@ namespace NewHorizons.External.Modules
/// <summary>
/// What needs to be done to the volume to unlock the facts
/// </summary>
public RevealVolumeType revealOn = RevealVolumeType.Enter;
[DefaultValue("enter")] public RevealVolumeType revealOn = RevealVolumeType.Enter;
/// <summary>
/// A list of facts to reveal
@ -489,7 +494,7 @@ namespace NewHorizons.External.Modules
/// <summary>
/// The type of object this is.
/// </summary>
public NomaiTextType type = NomaiTextType.Wall;
[DefaultValue("wall")] public NomaiTextType type = NomaiTextType.Wall;
/// <summary>
/// The relative path to the xml file for this object.
@ -523,7 +528,7 @@ namespace NewHorizons.External.Modules
/// <summary>
/// The type of text to display.
/// </summary>
public NomaiTextArcType type = NomaiTextArcType.Adult;
[DefaultValue("adult")] public NomaiTextArcType type = NomaiTextArcType.Adult;
/// <summary>
/// Which variation of the chosen type to place. If not specified, a random variation will be selected based on the seed provided in the parent module.
@ -575,7 +580,7 @@ namespace NewHorizons.External.Modules
/// <summary>
/// The type of object this is.
/// </summary>
public SlideShowType type = SlideShowType.SlideReel;
[DefaultValue("slideReel")] public SlideShowType type = SlideShowType.SlideReel;
}
[JsonObject]
@ -738,9 +743,35 @@ namespace NewHorizons.External.Modules
public float radius;
/// <summary>
/// The radius of this audio volume
/// The audio to use. Can be a path to a .wav/.ogg/.mp3 file, or taken from the AudioClip list.
/// </summary>
public string audio;
/// <summary>
/// The audio track of this audio volume
/// </summary>
[DefaultValue("environment")] public AudioMixerTrackName track = AudioMixerTrackName.Environment;
}
}
[JsonConverter(typeof(StringEnumConverter))]
public enum AudioMixerTrackName
{
[EnumMember(Value = @"undefined")] Undefined = 0,
[EnumMember(Value = @"menu")] Menu = 1,
[EnumMember(Value = @"music")] Music = 2,
[EnumMember(Value = @"environment")] Environment = 4,
[EnumMember(Value = @"environmentUnfiltered")] Environment_Unfiltered = 5,
[EnumMember(Value = @"endTimesSfx")] EndTimes_SFX = 8,
[EnumMember(Value = @"signal")] Signal = 16,
[EnumMember(Value = @"death")] Death = 32,
[EnumMember(Value = @"player")] Player = 64,
[EnumMember(Value = @"playerExternal")] Player_External = 65,
[EnumMember(Value = @"ship")] Ship = 128,
[EnumMember(Value = @"map")] Map = 256,
[EnumMember(Value = @"endTimesMusic")] EndTimes_Music = 512,
[EnumMember(Value = @"muffleWhileRafting")] MuffleWhileRafting = 1024,
[EnumMember(Value = @"muffleIndoors")] MuffleIndoors = 2048,
[EnumMember(Value = @"slideReelMusic")] SlideReelMusic = 4096,
}
}

View File

@ -39,5 +39,10 @@ namespace NewHorizons.External.Modules
/// The radius of the sphere around the planet which you can click on to target it. Defaults to twice the sphere of influence.
/// </summary>
public float targetColliderRadius;
/// <summary>
/// Position of the reference frame relative to the object.
/// </summary>
public MVector3 localPosition;
}
}

View File

@ -1,4 +1,5 @@
using System.Runtime.Serialization;
using System.ComponentModel;
using System.Runtime.Serialization;
using NewHorizons.Utility;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
@ -33,6 +34,6 @@ namespace NewHorizons.External.Modules.VariableSize
/// <summary>
/// Type of fluid the funnel transfers
/// </summary>
public FunnelType type = FunnelType.Sand;
[DefaultValue("sand")] public FunnelType type = FunnelType.Sand;
}
}

View File

@ -90,10 +90,7 @@ namespace NewHorizons.Handlers
case AstroObject.Name.CaveTwin:
case AstroObject.Name.TowerTwin:
DisableBody(SearchUtilities.Find("FocalBody"), delete);
DisableBody(SearchUtilities.Find("SandFunnel_Body"), delete);
break;
case AstroObject.Name.MapSatellite:
DisableBody(SearchUtilities.Find("MapSatellite_Body"), delete);
DisableBody(SearchUtilities.Find("SandFunnel_Body", false), delete);
break;
case AstroObject.Name.GiantsDeep:
// Might prevent leftover jellyfish from existing

View File

@ -35,6 +35,18 @@ namespace NewHorizons.Patches
return true;
}
[HarmonyPrefix]
[HarmonyPatch(typeof(MindProjectorTrigger), nameof(MindProjectorTrigger.OnTriggerVolumeExit))]
private static bool MindProjectorTrigger_OnTriggerVolumeExit(MindProjectorTrigger __instance, GameObject hitObj)
{
var t = hitObj.GetComponent<VisionTorchTarget>();
if (t != null) //(hitObj.CompareTag("PrisonerDetector"))
{
__instance._mindProjector.OnProjectionComplete -= t.onSlidesComplete;
}
return true;
}
}
[HarmonyPatch]

View File

@ -315,6 +315,7 @@
},
"fluidType": {
"description": "Fluid type for sounds/effects when colliding with this cloud.",
"default": "cloud",
"$ref": "#/definitions/CloudFluidType"
},
"hasLightning": {
@ -420,6 +421,7 @@
},
"gravityFallOff": {
"description": "How gravity falls off with distance. Most planets use linear but the sun and some moons use inverseSquared.",
"default": "linear",
"$ref": "#/definitions/GravityFallOff"
},
"groundSize": {
@ -644,6 +646,7 @@
},
"type": {
"description": "Type of fluid the funnel transfers",
"default": "sand",
"$ref": "#/definitions/FunnelType"
}
}
@ -1076,6 +1079,18 @@
"position": {
"description": "Position of the geyser",
"$ref": "#/definitions/MVector3"
},
"disableBubbles": {
"type": "boolean",
"description": "Disable the individual particle systems of the geyser"
},
"disableShaft": {
"type": "boolean",
"description": "Disable the individual particle systems of the geyser"
},
"disableSpout": {
"type": "boolean",
"description": "Disable the individual particle systems of the geyser"
}
}
},
@ -1109,6 +1124,7 @@
},
"type": {
"description": "The type of object this is.",
"default": "wall",
"$ref": "#/definitions/NomaiTextType"
},
"xmlFile": {
@ -1131,6 +1147,7 @@
},
"type": {
"description": "The type of text to display.",
"default": "adult",
"$ref": "#/definitions/NomaiTextArcType"
},
"variation": {
@ -1231,6 +1248,7 @@
},
"revealOn": {
"description": "What needs to be done to the volume to unlock the facts",
"default": "enter",
"$ref": "#/definitions/RevealVolumeType"
},
"reveals": {
@ -1325,6 +1343,7 @@
},
"type": {
"description": "The type of object this is.",
"default": "slideReel",
"$ref": "#/definitions/SlideShowType"
}
}
@ -1499,6 +1518,7 @@
},
"type": {
"description": "What type of cyclone should this be? Upwards and downwards are both tornados and will push in that direction.",
"default": "downwards",
"$ref": "#/definitions/TornadoType"
},
"wanderDegreesX": {
@ -1657,10 +1677,55 @@
},
"audio": {
"type": "string",
"description": "The radius of this audio volume"
"description": "The audio to use. Can be a path to a .wav/.ogg/.mp3 file, or taken from the AudioClip list."
},
"track": {
"description": "The audio track of this audio volume",
"default": "environment",
"$ref": "#/definitions/AudioMixerTrackName"
}
}
},
"AudioMixerTrackName": {
"type": "string",
"description": "",
"x-enumNames": [
"Undefined",
"Menu",
"Music",
"Environment",
"Environment_Unfiltered",
"EndTimes_SFX",
"Signal",
"Death",
"Player",
"Player_External",
"Ship",
"Map",
"EndTimes_Music",
"MuffleWhileRafting",
"MuffleIndoors",
"SlideReelMusic"
],
"enum": [
"undefined",
"menu",
"music",
"environment",
"environmentUnfiltered",
"endTimesSfx",
"signal",
"death",
"player",
"playerExternal",
"ship",
"map",
"endTimesMusic",
"muffleWhileRafting",
"muffleIndoors",
"slideReelMusic"
]
},
"SignalInfo": {
"type": "object",
"additionalProperties": false,
@ -1748,6 +1813,10 @@
"type": "number",
"description": "The radius of the sphere around the planet which you can click on to target it. Defaults to twice the sphere of influence.",
"format": "float"
},
"localPosition": {
"description": "Position of the reference frame relative to the object.",
"$ref": "#/definitions/MVector3"
}
}
},