mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
Scale curve done for lava/sand/water/star/rings
This commit is contained in:
parent
09a1d8a120
commit
41fcd8f909
@ -18,7 +18,7 @@ namespace NewHorizons.Builder.Body
|
|||||||
moltenCore.SetActive(false);
|
moltenCore.SetActive(false);
|
||||||
moltenCore.transform.parent = body.transform;
|
moltenCore.transform.parent = body.transform;
|
||||||
moltenCore.transform.localPosition = Vector3.zero;
|
moltenCore.transform.localPosition = Vector3.zero;
|
||||||
moltenCore.transform.localScale = Vector3.one * module.Radius;
|
moltenCore.transform.localScale = Vector3.one * module.Size;
|
||||||
|
|
||||||
var lavaSphere = GameObject.Instantiate(GameObject.Find("VolcanicMoon_Body/MoltenCore_VM/LavaSphere"), moltenCore.transform);
|
var lavaSphere = GameObject.Instantiate(GameObject.Find("VolcanicMoon_Body/MoltenCore_VM/LavaSphere"), moltenCore.transform);
|
||||||
lavaSphere.transform.localScale = Vector3.one;
|
lavaSphere.transform.localScale = Vector3.one;
|
||||||
@ -38,9 +38,20 @@ namespace NewHorizons.Builder.Body
|
|||||||
|
|
||||||
var destructionVolume = GameObject.Instantiate(GameObject.Find("VolcanicMoon_Body/MoltenCore_VM/DestructionVolume"), moltenCore.transform);
|
var destructionVolume = GameObject.Instantiate(GameObject.Find("VolcanicMoon_Body/MoltenCore_VM/DestructionVolume"), moltenCore.transform);
|
||||||
destructionVolume.GetComponent<SphereCollider>().radius = 1;
|
destructionVolume.GetComponent<SphereCollider>().radius = 1;
|
||||||
|
|
||||||
moltenCore.SetActive(true);
|
|
||||||
destructionVolume.SetActive(true);
|
destructionVolume.SetActive(true);
|
||||||
|
|
||||||
|
if (module.Curve != null)
|
||||||
|
{
|
||||||
|
var levelController = moltenCore.AddComponent<SandLevelController>();
|
||||||
|
var curve = new AnimationCurve();
|
||||||
|
foreach (var pair in module.Curve)
|
||||||
|
{
|
||||||
|
curve.AddKey(new Keyframe(pair.Time, module.Size * pair.Value));
|
||||||
|
}
|
||||||
|
levelController._scaleCurve = curve;
|
||||||
|
}
|
||||||
|
|
||||||
|
moltenCore.SetActive(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,6 +9,7 @@ using UnityEngine;
|
|||||||
using NewHorizons.Utility;
|
using NewHorizons.Utility;
|
||||||
using Logger = NewHorizons.Utility.Logger;
|
using Logger = NewHorizons.Utility.Logger;
|
||||||
using NewHorizons.External.VariableSize;
|
using NewHorizons.External.VariableSize;
|
||||||
|
using NewHorizons.Components;
|
||||||
|
|
||||||
namespace NewHorizons.Builder.Body
|
namespace NewHorizons.Builder.Body
|
||||||
{
|
{
|
||||||
@ -75,6 +76,41 @@ namespace NewHorizons.Builder.Body
|
|||||||
rot._localAxis = Vector3.down;
|
rot._localAxis = Vector3.down;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Collider can't be concave so nvm
|
||||||
|
/*
|
||||||
|
var collider = new GameObject("Collider");
|
||||||
|
collider.SetActive(false);
|
||||||
|
collider.transform.parent = ringGO.transform;
|
||||||
|
collider.transform.localPosition = Vector3.zero;
|
||||||
|
collider.transform.localScale = Vector3.one;
|
||||||
|
collider.layer = 17;
|
||||||
|
|
||||||
|
var mf = collider.AddComponent<MeshFilter>();
|
||||||
|
mf.mesh = ringMesh;
|
||||||
|
|
||||||
|
var mc = collider.AddComponent<MeshCollider>();
|
||||||
|
mc.isTrigger = true;
|
||||||
|
|
||||||
|
var owCollider = collider.AddComponent<OWCollider>();
|
||||||
|
var trigger = collider.AddComponent<OWTriggerVolume>();
|
||||||
|
var sfv = collider.AddComponent<SimpleFluidVolume>();
|
||||||
|
sfv._fluidType = FluidVolume.Type.SAND;
|
||||||
|
sfv._density = 2f;
|
||||||
|
|
||||||
|
collider.SetActive(true);
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (ring.Curve != null)
|
||||||
|
{
|
||||||
|
var levelController = ringGO.AddComponent<RingSizeController>();
|
||||||
|
var curve = new AnimationCurve();
|
||||||
|
foreach (var pair in ring.Curve)
|
||||||
|
{
|
||||||
|
curve.AddKey(new Keyframe(pair.Time, pair.Value));
|
||||||
|
}
|
||||||
|
levelController.scaleCurve = curve;
|
||||||
|
}
|
||||||
|
|
||||||
return ringGO;
|
return ringGO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
using NewHorizons.External.VariableSize;
|
using NewHorizons.External.VariableSize;
|
||||||
|
using NewHorizons.Utility;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -12,7 +13,54 @@ namespace NewHorizons.Builder.Body
|
|||||||
{
|
{
|
||||||
public static void Make(GameObject go, Sector sector, OWRigidbody rb, SandModule module)
|
public static void Make(GameObject go, Sector sector, OWRigidbody rb, SandModule module)
|
||||||
{
|
{
|
||||||
|
var sandGO = new GameObject("Sand");
|
||||||
|
sandGO.SetActive(false);
|
||||||
|
|
||||||
|
var sandSphere = GameObject.Instantiate(GameObject.Find("TowerTwin_Body/SandSphere_Draining/SandSphere"), sandGO.transform);
|
||||||
|
if(module.Tint != null)
|
||||||
|
{
|
||||||
|
var oldMR = sandSphere.GetComponent<TessellatedSphereRenderer>();
|
||||||
|
var sandMaterials = oldMR.sharedMaterials;
|
||||||
|
var sandMR = sandSphere.AddComponent<TessellatedSphereRenderer>();
|
||||||
|
sandMR.CopyPropertiesFrom(oldMR);
|
||||||
|
sandMR.sharedMaterials = new Material[]
|
||||||
|
{
|
||||||
|
new Material(sandMaterials[0]),
|
||||||
|
new Material(sandMaterials[1])
|
||||||
|
};
|
||||||
|
GameObject.Destroy(oldMR);
|
||||||
|
sandMR.sharedMaterials[0].color = module.Tint.ToColor32();
|
||||||
|
sandMR.sharedMaterials[1].color = module.Tint.ToColor32();
|
||||||
|
}
|
||||||
|
|
||||||
|
var collider = GameObject.Instantiate(GameObject.Find("TowerTwin_Body/SandSphere_Draining/Collider"), sandGO.transform);
|
||||||
|
var sphereCollider = collider.GetComponent<SphereCollider>();
|
||||||
|
collider.SetActive(true);
|
||||||
|
|
||||||
|
var occlusionSphere = GameObject.Instantiate(GameObject.Find("TowerTwin_Body/SandSphere_Draining/OcclusionSphere"), sandGO.transform);
|
||||||
|
|
||||||
|
var proxyShadowCasterGO = GameObject.Instantiate(GameObject.Find("TowerTwin_Body/SandSphere_Draining/ProxyShadowCaster"), sandGO.transform);
|
||||||
|
var proxyShadowCaster = proxyShadowCasterGO.GetComponent<ProxyShadowCaster>();
|
||||||
|
proxyShadowCaster.SetSuperGroup(sandGO.GetComponent<ProxyShadowCasterSuperGroup>());
|
||||||
|
|
||||||
|
sandSphere.AddComponent<ChildColliderSettings>();
|
||||||
|
|
||||||
|
if(module.Curve != null)
|
||||||
|
{
|
||||||
|
var levelController = sandGO.AddComponent<SandLevelController>();
|
||||||
|
var curve = new AnimationCurve();
|
||||||
|
foreach(var pair in module.Curve)
|
||||||
|
{
|
||||||
|
curve.AddKey(new Keyframe(pair.Time, 2f * module.Size * pair.Value));
|
||||||
|
}
|
||||||
|
levelController._scaleCurve = curve;
|
||||||
|
}
|
||||||
|
|
||||||
|
sandGO.transform.parent = go.transform;
|
||||||
|
sandGO.transform.localPosition = Vector3.zero;
|
||||||
|
sandGO.transform.localScale = Vector3.one * module.Size;
|
||||||
|
|
||||||
|
sandGO.SetActive(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -147,6 +147,17 @@ namespace NewHorizons.Builder.Body
|
|||||||
starController.Intensity = starModule.SolarLuminosity;
|
starController.Intensity = starModule.SolarLuminosity;
|
||||||
starController.SunColor = lightColour;
|
starController.SunColor = lightColour;
|
||||||
|
|
||||||
|
if (starModule.Curve != null)
|
||||||
|
{
|
||||||
|
var levelController = starGO.AddComponent<SandLevelController>();
|
||||||
|
var curve = new AnimationCurve();
|
||||||
|
foreach (var pair in starModule.Curve)
|
||||||
|
{
|
||||||
|
curve.AddKey(new Keyframe(pair.Time, starModule.Size * pair.Value));
|
||||||
|
}
|
||||||
|
levelController._scaleCurve = curve;
|
||||||
|
}
|
||||||
|
|
||||||
return starController;
|
return starController;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,7 +10,7 @@ namespace NewHorizons.Builder.Body
|
|||||||
{
|
{
|
||||||
public static void Make(GameObject body, Sector sector, OWRigidbody rb, WaterModule module)
|
public static void Make(GameObject body, Sector sector, OWRigidbody rb, WaterModule module)
|
||||||
{
|
{
|
||||||
var waterSize = module.Radius;
|
var waterSize = module.Size;
|
||||||
|
|
||||||
GameObject waterGO = new GameObject("Water");
|
GameObject waterGO = new GameObject("Water");
|
||||||
waterGO.SetActive(false);
|
waterGO.SetActive(false);
|
||||||
@ -59,7 +59,6 @@ namespace NewHorizons.Builder.Body
|
|||||||
var owCollider = buoyancyObject.AddComponent<OWCollider>();
|
var owCollider = buoyancyObject.AddComponent<OWCollider>();
|
||||||
owCollider.SetValue("_parentBody", rb);
|
owCollider.SetValue("_parentBody", rb);
|
||||||
owCollider.SetValue("_collider", sphereCollider);
|
owCollider.SetValue("_collider", sphereCollider);
|
||||||
|
|
||||||
|
|
||||||
var buoyancyTriggerVolume = buoyancyObject.AddComponent<OWTriggerVolume>();
|
var buoyancyTriggerVolume = buoyancyObject.AddComponent<OWTriggerVolume>();
|
||||||
buoyancyTriggerVolume.SetValue("_owCollider", owCollider);
|
buoyancyTriggerVolume.SetValue("_owCollider", owCollider);
|
||||||
@ -93,6 +92,17 @@ namespace NewHorizons.Builder.Body
|
|||||||
fog3.AddComponent<MeshRenderer>().material = new Material(Shader.Find("Sprites/Default"));
|
fog3.AddComponent<MeshRenderer>().material = new Material(Shader.Find("Sprites/Default"));
|
||||||
fog3.GetComponent<MeshRenderer>().material.color = new Color32(0, 75, 50, 5);
|
fog3.GetComponent<MeshRenderer>().material.color = new Color32(0, 75, 50, 5);
|
||||||
|
|
||||||
|
if (module.Curve != null)
|
||||||
|
{
|
||||||
|
var levelController = waterGO.AddComponent<SandLevelController>();
|
||||||
|
var curve = new AnimationCurve();
|
||||||
|
foreach (var pair in module.Curve)
|
||||||
|
{
|
||||||
|
curve.AddKey(new Keyframe(pair.Time, module.Size * pair.Value));
|
||||||
|
}
|
||||||
|
levelController._scaleCurve = curve;
|
||||||
|
}
|
||||||
|
|
||||||
waterGO.transform.localPosition = Vector3.zero;
|
waterGO.transform.localPosition = Vector3.zero;
|
||||||
waterGO.SetActive(true);
|
waterGO.SetActive(true);
|
||||||
}
|
}
|
||||||
|
|||||||
20
NewHorizons/Components/RingSizeController.cs
Normal file
20
NewHorizons/Components/RingSizeController.cs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace NewHorizons.Components
|
||||||
|
{
|
||||||
|
public class RingSizeController : MonoBehaviour
|
||||||
|
{
|
||||||
|
public AnimationCurve scaleCurve;
|
||||||
|
|
||||||
|
private void FixedUpdate()
|
||||||
|
{
|
||||||
|
float num = scaleCurve.Evaluate(TimeLoop.GetMinutesElapsed());
|
||||||
|
base.transform.localScale = new Vector3(num, num, num);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -9,7 +9,7 @@ namespace NewHorizons.External.VariableSize
|
|||||||
{
|
{
|
||||||
public class LavaModule : VariableSizeModule
|
public class LavaModule : VariableSizeModule
|
||||||
{
|
{
|
||||||
public float Radius { get; set; }
|
public float Size { get; set; }
|
||||||
public MColor32 Tint { get; set; }
|
public MColor32 Tint { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,7 +9,7 @@ namespace NewHorizons.External.VariableSize
|
|||||||
{
|
{
|
||||||
public class SandModule : VariableSizeModule
|
public class SandModule : VariableSizeModule
|
||||||
{
|
{
|
||||||
public float Radius { get; set; }
|
public float Size { get; set; }
|
||||||
public MColor32 Tint { get; set; }
|
public MColor32 Tint { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,7 +9,7 @@ namespace NewHorizons.External.VariableSize
|
|||||||
{
|
{
|
||||||
public class WaterModule : VariableSizeModule
|
public class WaterModule : VariableSizeModule
|
||||||
{
|
{
|
||||||
public float Radius { get; set; }
|
public float Size { get; set; }
|
||||||
public MColor32 Tint { get; set; }
|
public MColor32 Tint { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -511,7 +511,7 @@ namespace NewHorizons
|
|||||||
if (body.Config.Base.LavaSize != 0)
|
if (body.Config.Base.LavaSize != 0)
|
||||||
{
|
{
|
||||||
var lava = new LavaModule();
|
var lava = new LavaModule();
|
||||||
lava.Radius = body.Config.Base.LavaSize;
|
lava.Size = body.Config.Base.LavaSize;
|
||||||
LavaBuilder.Make(go, sector, rb, lava);
|
LavaBuilder.Make(go, sector, rb, lava);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -522,7 +522,7 @@ namespace NewHorizons
|
|||||||
if (body.Config.Base.WaterSize != 0)
|
if (body.Config.Base.WaterSize != 0)
|
||||||
{
|
{
|
||||||
var water = new WaterModule();
|
var water = new WaterModule();
|
||||||
water.Radius = body.Config.Base.WaterSize;
|
water.Size = body.Config.Base.WaterSize;
|
||||||
water.Tint = body.Config.Base.WaterTint;
|
water.Tint = body.Config.Base.WaterTint;
|
||||||
WaterBuilder.Make(go, sector, rb, water);
|
WaterBuilder.Make(go, sector, rb, water);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -860,7 +860,7 @@
|
|||||||
"Water": {
|
"Water": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"radius": {
|
"size": {
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"default": 0
|
"default": 0
|
||||||
},
|
},
|
||||||
@ -914,7 +914,7 @@
|
|||||||
"Lava": {
|
"Lava": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"radius": {
|
"size": {
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"default": 0
|
"default": 0
|
||||||
},
|
},
|
||||||
@ -939,10 +939,39 @@
|
|||||||
"Sand": {
|
"Sand": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"radius": {
|
"size": {
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"default": 0
|
"default": 0
|
||||||
},
|
},
|
||||||
|
"tint": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"R": {
|
||||||
|
"type": "integer",
|
||||||
|
"default": 0,
|
||||||
|
"minimum": 0,
|
||||||
|
"maximum": 255
|
||||||
|
},
|
||||||
|
"G": {
|
||||||
|
"type": "integer",
|
||||||
|
"default": 0,
|
||||||
|
"minimum": 0,
|
||||||
|
"maximum": 255
|
||||||
|
},
|
||||||
|
"B": {
|
||||||
|
"type": "integer",
|
||||||
|
"default": 0,
|
||||||
|
"minimum": 0,
|
||||||
|
"maximum": 255
|
||||||
|
},
|
||||||
|
"A": {
|
||||||
|
"type": "integer",
|
||||||
|
"default": 0,
|
||||||
|
"minimum": 0,
|
||||||
|
"maximum": 255
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"curve": {
|
"curve": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user