Skip to content

Commit 8e6d0b8

Browse files
committed
Details Added v1.8
- Added ability to adjust the maximum detail for cars - Added ability to disable the killgrid rendering for every player online - Updated Collision logic - Added ability to adjust Outline Brightness - Increased maximum timeout value
1 parent 10c899e commit 8e6d0b8

11 files changed

Lines changed: 190 additions & 9 deletions

File tree

Distance.OnlineAdditions/ConfigLogic.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,29 @@ public bool DisableTimeout
4343
set { Set("DisableTimeout", value); }
4444
}
4545

46+
public bool DisableMultiKillGridRender
47+
{
48+
get { return Get<bool>("DisableMultiKillGridRender"); }
49+
set { Set("DisableMultiKillGridRender", value); }
50+
}
51+
4652
public int TimeLimitAmount
4753
{
4854
get { return Get<int>("TimeLimitAmount"); }
4955
set { Set("TimeLimitAmount", value); }
5056
}
57+
58+
public int MaxLevelOfDetail
59+
{
60+
get { return Get<int>("MaxLevelOfDetail"); }
61+
set { Set("MaxLevelOfDetail", value); }
62+
}
63+
64+
public float OutlineBrightness
65+
{
66+
get { return Get<float>("OutlineBrightness"); }
67+
set { Set("OutlineBrightness", value); }
68+
}
5169
#endregion
5270

5371
internal Settings Config;
@@ -70,7 +88,10 @@ public void Awake()
7088
Get("HidePlayerNames", false);
7189
Get("DisableCarAudio", false);
7290
Get("DisableTimeout", false);
91+
Get("DisableMultiKillGridRender", false);
7392
Get("TimeLimitAmount", 60);
93+
Get("MaxLevelOfDetail", 1);
94+
Get("OutlineBrightness", 1);
7495
//Save settings to Config.json
7596
Save();
7697
}

Distance.OnlineAdditions/Distance.OnlineAdditions.csproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,16 +88,21 @@
8888
</ItemGroup>
8989
<ItemGroup>
9090
<Compile Include="ConfigLogic.cs" />
91+
<Compile Include="Harmony\Assembly-CSharp\RigidbodyStateTransceiver\FixedUpdate.cs" />
92+
<Compile Include="Harmony\Assembly-CSharp\CarLevelOfDetail\IncrementLevel.cs" />
93+
<Compile Include="Harmony\Assembly-CSharp\CarLevelOfDetail\SetLevelOfDetail.cs" />
9194
<Compile Include="Harmony\Assembly-CSharp\ChatInputV2\CheckForServerCode.cs" />
9295
<Compile Include="Harmony\Assembly-CSharp\ChatWindow\Update.cs" />
9396
<Compile Include="Harmony\Assembly-CSharp\CheatMenu\TweakCheat.cs" />
9497
<Compile Include="Harmony\Assembly-CSharp\CheatsManager\OnEventSceneLoadFinished.cs" />
9598
<Compile Include="Harmony\Assembly-CSharp\ClientLogic\GetClientChatName.cs" />
9699
<Compile Include="Harmony\Assembly-CSharp\ClientLogic\GetLocalChatName.cs" />
97100
<Compile Include="Harmony\Assembly-CSharp\GameMode\UploadScoreAndReplay.cs" />
101+
<Compile Include="Harmony\Assembly-CSharp\KillGrid\OnEventAddRemovePlayerData.cs" />
98102
<Compile Include="Harmony\Assembly-CSharp\PlayerDataLocal\InitCarVirtual.cs" />
99103
<Compile Include="Harmony\Assembly-CSharp\PlayerDataLocal\LocalOnPlayerEventFinished.cs" />
100104
<Compile Include="Harmony\Assembly-CSharp\PlayerDataNet\InitCarVirtual.cs" />
105+
<Compile Include="Harmony\Assembly-CSharp\PlayerDataNet\SetOutlineColor.cs" />
101106
<Compile Include="Harmony\Assembly-CSharp\RigidbodyStateTransceiver\EaseTowards.cs" />
102107
<Compile Include="Harmony\Assembly-CSharp\TimeBasedMode\AwakeVirtual.cs" />
103108
<Compile Include="Harmony\Assembly-CSharp\TimeBasedMode\UpdateModeFinishedState.cs" />
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using HarmonyLib;
2+
3+
namespace Distance.OnlineAdditions.Harmony
4+
{
5+
[HarmonyPatch(typeof(CarLevelOfDetail), "IncrementLevel")]
6+
internal class CarLevelOfDetail__IncrementLevel
7+
{
8+
[HarmonyPostfix]
9+
internal static void MakeSureSimulationIsOn(CarLevelOfDetail __instance)
10+
{
11+
if (__instance.type_ == CarLevelOfDetail.Type.Networked && Mod.Instance.Config.EnableCollision)
12+
{
13+
__instance.SetCarSimulationEnabled(true);
14+
}
15+
else
16+
{
17+
if(__instance.rigidbody_.isKinematic)
18+
{
19+
__instance.rigidbody_.isKinematic = false;
20+
}
21+
}
22+
}
23+
}
24+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using HarmonyLib;
2+
3+
namespace Distance.OnlineAdditions.Harmony
4+
{
5+
[HarmonyPatch(typeof(CarLevelOfDetail), "SetLevelOfDetail", new System.Type[] { typeof(CarLevelOfDetail.Level) })]
6+
internal class CarLevelOfDetail__SetLevelOfDetail
7+
{
8+
[HarmonyPrefix]
9+
internal static bool MaxLevelDetail(CarLevelOfDetail __instance, CarLevelOfDetail.Level newLevel)
10+
{
11+
if(newLevel < (CarLevelOfDetail.Level)Mod.Instance.Config.MaxLevelOfDetail && G.Sys.NetworkingManager_.IsOnline_)
12+
{
13+
return false;
14+
}
15+
else
16+
{
17+
return true;
18+
}
19+
}
20+
}
21+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
using HarmonyLib;
2+
using Events.Player;
3+
4+
namespace Distance.OnlineAdditions.Harmony
5+
{
6+
[HarmonyPatch(typeof(KillGrid), "OnEventAddRemovePlayerData", new System.Type[] { typeof(AddRemovePlayerData.Data) })]
7+
internal class OnEventAddRemovePlayerData
8+
{
9+
[HarmonyPrefix]
10+
internal static bool KillGridRenderControl(KillGrid __instance, AddRemovePlayerData.Data data)
11+
{
12+
if(Mod.Instance.Config.DisableMultiKillGridRender)
13+
{
14+
if (data.added_)
15+
{
16+
if (!__instance.startCalled_)
17+
Mod.Instance.Logger.Debug((object)"start wasn't called yet");
18+
if (__instance.isInvisible_)
19+
return false;
20+
if (data.type_ == AddRemovePlayerData.PDType.Replay)
21+
{
22+
PlayerDataReplay player = data.player_ as PlayerDataReplay;
23+
if ((bool)(UnityEngine.Object)player && player.IsGhost_)
24+
return false;
25+
}
26+
if (data.type_ == AddRemovePlayerData.PDType.Net)
27+
{
28+
//This should disable rendering for network cars on the killgrids.
29+
Mod.Instance.Logger.Debug("No killgrids for network car!");
30+
return false;
31+
}
32+
UnityEngine.Renderer component = __instance.GetComponent<UnityEngine.Renderer>();
33+
__instance.CreateParentIfNeeded();
34+
UnityEngine.GameObject followerObj = UnityEngine.Object.Instantiate(__instance.followerPrefab_);
35+
followerObj.transform.SetParentKeepingLocalTransform(__instance.followerParent_);
36+
__instance.helpers_.Add(new KillGrid.KillGridFollowerHelper(data.player_, followerObj, component.sharedMaterial.color, __instance.curvature_, new KillGrid.PositionFollowerFn(__instance.PositionFollower)));
37+
}
38+
else
39+
{
40+
KillGrid.KillGridFollowerHelper gridFollowerHelper = __instance.helpers_.Find((System.Predicate<KillGrid.KillGridFollowerHelper>)(val => (UnityEngine.Object)val.player_ == (UnityEngine.Object)data.player_));
41+
if (gridFollowerHelper == null)
42+
return false;
43+
gridFollowerHelper.Destroy();
44+
__instance.helpers_.Remove(gridFollowerHelper);
45+
}
46+
return false;
47+
}
48+
return true;
49+
}
50+
}
51+
}

Distance.OnlineAdditions/Harmony/Assembly-CSharp/PlayerDataNet/InitCarVirtual.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,6 @@
33
namespace Distance.OnlineAdditions.Harmony
44
{
55
//Enable to collider on network cars
6-
7-
[HarmonyPatch(typeof(PlayerDataNet))]
8-
9-
106
[HarmonyPatch(typeof(PlayerDataNet), "InitCarVirtual")]
117
internal class PlayerDataNet__InitCarVirtual
128
{
@@ -21,6 +17,7 @@ System.Collections.IEnumerator ActivateCollidersAfterSeconds(float seconds)
2117
{
2218
__instance.SetAllColliderLayers(Layers.Default);
2319
__instance.CarLOD_.rigidbody_.isKinematic = true;
20+
__instance.CarLOD_.SetCarSimulationEnabled(true);
2421
}
2522
}
2623

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using HarmonyLib;
2+
3+
namespace Distance.OnlineAdditions.Harmony
4+
{
5+
[HarmonyPatch(typeof(PlayerDataNet), "SetOutlineColor")]
6+
internal class PlayerDataNet__SetOutlineColor
7+
{
8+
[HarmonyPrefix]
9+
internal static bool NetworkOutline(PlayerDataNet __instance)
10+
{
11+
if (!(bool)(UnityEngine.Object)__instance.outline_)
12+
return false;
13+
__instance.outline_.SetOutlineColorNoNorm(UnityEngine.Color.Lerp(UnityEngine.Color.black, __instance.GlowColor_.Normalized(), Mod.Instance.Config.OutlineBrightness));
14+
return false;
15+
}
16+
}
17+
}

Distance.OnlineAdditions/Harmony/Assembly-CSharp/RigidbodyStateTransceiver/EaseTowards.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using HarmonyLib;
1+
/*using HarmonyLib;
22
33
namespace Distance.OnlineAdditions.Harmony
44
{
@@ -27,7 +27,7 @@ internal static bool KinematicEaseTowards(RigidbodyStateTransceiver __instance)
2727
UnityEngine.Vector3 vector3_2 = RigidbodyStateTransceiver.posCorrectionSpringDamping_ * snapshot.vel;
2828
UnityEngine.Vector3 vector3_3 = 250f * snapshot.rot.ToVector3();
2929
UnityEngine.Vector3 vector3_4 = RigidbodyStateTransceiver.rotCorrectionSpringDamping_ * snapshot.rotVel;
30-
UnityEngine.Quaternion deltaRotation = UnityEngine.Quaternion.Euler(vector3_3 + vector3_4);*/
30+
UnityEngine.Quaternion deltaRotation = UnityEngine.Quaternion.Euler(vector3_3 + vector3_4);*
3131
3232
RigidbodyStateTransceiver.Snapshot prevSnapshot = RigidbodyStateTransceiver.Snapshot.Difference(__instance.prevGoal_, new RigidbodyStateTransceiver.Snapshot(__instance.rigidbody_));
3333
@@ -48,4 +48,4 @@ internal static bool KinematicEaseTowards(RigidbodyStateTransceiver __instance)
4848
}
4949
}
5050
}
51-
}
51+
}*/
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
using HarmonyLib;
2+
3+
namespace Distance.OnlineAdditions.Harmony
4+
{
5+
[HarmonyPatch(typeof(RigidbodyStateTransceiver), "FixedUpdate")]
6+
internal class RigidbodyStateTransceiver__FixedUpdate
7+
{
8+
[HarmonyPrefix]
9+
internal static bool FixedTheFixedUpdate(RigidbodyStateTransceiver __instance)
10+
{
11+
if (!__instance.setCarOnFixedUpdate_)
12+
return false;
13+
__instance.rigidbody_.transform.position = __instance.posSpring_.Pos_ + __instance.setCarOnFixedUpdateCoef_ * 0.01f * __instance.velSpring_.Pos_;
14+
__instance.rigidbody_.transform.rotation = __instance.rotSpring_.Pos_;
15+
__instance.rigidbody_.velocity = __instance.velSpring_.Pos_;
16+
__instance.rigidbody_.angularVelocity = __instance.rotSpring_.Vel_;
17+
return false;
18+
}
19+
}
20+
}

Distance.OnlineAdditions/Harmony/Assembly-CSharp/TimeBasedMode/AwakeVirtual.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ internal class TimeBasedMode__AwakeVirtual
88
[HarmonyPostfix]
99
internal static void VirtualedYourVirtual(TimeBasedMode __instance)
1010
{
11-
Mod.Instance.Logger.Debug("SETTING BOOLS");
1211
Mod.Instance.AmIHost = __instance.IsHost_;
1312
Mod.Instance.CountdownActive = false;
1413
Mod.Instance.AllPlayersFinished = false;

0 commit comments

Comments
 (0)