Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public FoundationBuildUpdatePacket(Vector3 center, float radius, int reformSize,
var btr = GameMain.mainPlayer.controller.actionBuild.reformTool;
ReformType = btr?.brushType ?? -1;
ReformColor = btr?.brushColor ?? -1;
ReformMode = btr?.reformMode ?? 0;
PlanetId = GameMain.mainPlayer.planetId;
GroundTestPos = new Float3(btr?.castGroundPos ?? Vector3.zero);
if (center != btr?.reformCenterPoint) //Pit (circle)
Expand All @@ -40,6 +41,7 @@ public FoundationBuildUpdatePacket(Vector3 center, float radius, int reformSize,
}

public float Radius { get; set; }
public int ReformMode { get; set; }
public int ReformSize { get; set; }
public bool VeinBuried { get; set; }
public float Fade0 { get; set; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,37 +47,52 @@ protected override void ProcessPacket(FoundationBuildUpdatePacket packet, Nebula
var area = packet.CirclePointCount;
var costSandCount = 0; // dummy value, won't use
var getSandCount = 0; // dummy value, won't use
if (!packet.IsCircle) //Normal reform
if (packet.ReformMode == 1) // Restore terrain
{
var reformPointsCount = factory.planet.aux.ReformSnap(packet.GroundTestPos.ToVector3(), packet.ReformSize,
packet.ReformType, packet.ReformColor, reformPoints, packet.ReformIndices, factory.platformSystem,
var pointCount = factory.planet.aux.ReformSnap(packet.GroundTestPos.ToVector3(), packet.ReformMode,
packet.ReformSize, 0, 0, reformPoints, packet.ReformIndices, factory.platformSystem,
out var reformCenterPoint);
factory.ComputeFlattenTerrainReform(reformPoints, reformCenterPoint, packet.Radius, reformPointsCount, ref costSandCount, ref getSandCount);
center = reformCenterPoint;
area = packet.ReformSize * packet.ReformSize;
}
else //Remove pit
{
factory.ComputeFlattenTerrainReform(reformPoints, center, packet.Radius, packet.CirclePointCount, ref costSandCount, ref getSandCount, 3f, 1f);
}
using (Multiplayer.Session.Factories.IsIncomingRequest.On())
{
factory.FlattenTerrainReform(center, packet.Radius, packet.ReformSize, packet.VeinBuried);
factory.ComputeRestoreTerrainReform(reformPoints, reformCenterPoint, packet.Radius, pointCount,
ref costSandCount, ref getSandCount);
using (Multiplayer.Session.Factories.IsIncomingRequest.On())
{
factory.RestoreTerrainReform(reformCenterPoint, packet.Radius, packet.ReformSize, packet.VeinBuried);
}
}
var platformSystem = factory.platformSystem;
for (var i = 0; i < area; i++)
else
{
var index = packet.ReformIndices[i];
if (index < 0)
if (!packet.IsCircle) //Normal reform
{
var reformPointsCount = factory.planet.aux.ReformSnap(packet.GroundTestPos.ToVector3(), packet.ReformMode, packet.ReformSize,
packet.ReformType, packet.ReformColor, reformPoints, packet.ReformIndices, factory.platformSystem,
out var reformCenterPoint);
factory.ComputeFlattenTerrainReform(reformPoints, reformCenterPoint, packet.Radius, reformPointsCount, ref costSandCount, ref getSandCount);
center = reformCenterPoint;
area = packet.ReformSize * packet.ReformSize;
}
else //Remove pit
{
factory.ComputeFlattenTerrainReform(reformPoints, center, packet.Radius, packet.CirclePointCount, ref costSandCount, ref getSandCount, 3f, 1f);
}
using (Multiplayer.Session.Factories.IsIncomingRequest.On())
{
continue;
factory.FlattenTerrainReform(center, packet.Radius, packet.ReformSize, packet.VeinBuried);
}
var type = platformSystem.GetReformType(index);
var color = platformSystem.GetReformColor(index);
if (type != packet.ReformType || color != packet.ReformColor)
var platformSystem = factory.platformSystem;
for (var i = 0; i < area; i++)
{
factory.platformSystem.SetReformType(index, packet.ReformType);
factory.platformSystem.SetReformColor(index, packet.ReformColor);
var index = packet.ReformIndices[i];
if (index < 0)
{
continue;
}
var type = platformSystem.GetReformType(index);
var color = platformSystem.GetReformColor(index);
if (type != packet.ReformType || color != packet.ReformColor)
{
factory.platformSystem.SetReformType(index, packet.ReformType);
factory.platformSystem.SetReformColor(index, packet.ReformColor);
}
}
}
}
Expand Down
12 changes: 12 additions & 0 deletions NebulaPatcher/Patches/Dynamic/PlanetFactory_Patch.cs
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,18 @@ public static void FlattenTerrainReform_Prefix(Vector3 center, float radius, int
}
}

[HarmonyPrefix]
[HarmonyPatch(nameof(PlanetFactory.RestoreTerrainReform))]
public static void RestoreTerrainReform_Prefix(Vector3 center, float radius, int reformSize,
bool veinBuried, float fade0)
{
if (Multiplayer.IsActive && !Multiplayer.Session.Factories.IsIncomingRequest.Value)
{
Multiplayer.Session.Network.SendPacketToLocalStar(
new FoundationBuildUpdatePacket(center, radius, reformSize, veinBuried, fade0));
}
}

[HarmonyPrefix]
[HarmonyPatch(nameof(PlanetFactory.PlanetReformAll))]
public static void PlanetReformAll_Prefix(PlanetFactory __instance, int type, int color, bool bury)
Expand Down
2 changes: 1 addition & 1 deletion NebulaWorld/MonoBehaviours/Remote/RemotePlayerMovement.cs
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ private void OnEnable()
var meshRenderer = playerName.GetComponent<MeshRenderer>();
playerName.AddComponent<TextMesh>();

meshRenderer.sharedMaterial = uiSailIndicator_targetText.gameObject.GetComponent<MeshRenderer>().sharedMaterial;
meshRenderer.sharedMaterial = uiSailIndicator_targetText.font.material;

playerName.SetActive(true);
}
Expand Down
3 changes: 1 addition & 2 deletions NebulaWorld/SimulatedWorld.cs
Original file line number Diff line number Diff line change
Expand Up @@ -497,8 +497,7 @@ public void RenderPlayerNameTagsInGame()
go.transform.SetParent(playerModel.PlayerTransform, false);
// Add a meshrenderer and textmesh component to show the text with a different font
var meshRenderer = go.AddComponent<MeshRenderer>();
meshRenderer.sharedMaterial =
uiSailIndicator_targetText.gameObject.GetComponent<MeshRenderer>().sharedMaterial;
meshRenderer.sharedMaterial = uiSailIndicator_targetText.font.material;

var textMesh = go.AddComponent<TextMesh>();
// Set the text to be their name
Expand Down
Loading