Squashed commit of the following:
commit428243f4a6Author: AsanoRema <asanorema2036@gmail.com> Date: Sat Aug 29 13:43:13 2026 +0300 Squashed commit of the following: commit68e78fa464Author: AsanoRema <asanorema2036@gmail.com> Date: Sat Aug 29 13:41:49 2026 +0300 Updated .gitignore commit9f87122a34Author: AsanoRema <asanorema2036@gmail.com> Date: Sat Aug 29 13:34:57 2026 +0300 Added Dohya commitf6a7547e84Author: AsanoRema <asanorema2036@gmail.com> Date: Fri Aug 21 17:59:13 2026 +0300 Fixed commitb98901c366Author: AsanoRema <asanorema2036@gmail.com> Date: Tue Aug 18 17:37:22 2026 +0300 Added new particle Package commitbb2f4a3b16Author: AsanoRema <asanorema2036@gmail.com> Date: Tue Aug 18 17:17:48 2026 +0300 Map mehanic ready to multiplayer commitc01ff800f6Author: AsanoRema <asanorema2036@gmail.com> Date: Tue Aug 18 16:16:19 2026 +0300 Squashed commit of the following: commit173bbb165cAuthor: henjkey <henjkey@gmail.com> Date: Fri Aug 14 18:51:23 2026 +0500 Mappp commitd559ab338aAuthor: henjkey <henjkey@gmail.com> Date: Thu Aug 13 18:42:41 2026 +0500 Map Controller Coordinates Target System Crosshair System Radar System
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
using System;
|
||||
using Unity.Netcode;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
@@ -44,6 +45,7 @@ public sealed class NetworkPhysicalLeverInteractable :
|
||||
NetworkVariableWritePermission.Server);
|
||||
|
||||
private bool hasSnapTarget;
|
||||
private bool maximumEndpointLatched;
|
||||
private float snapTargetValue;
|
||||
private float automaticReturnTime = -1f;
|
||||
|
||||
@@ -52,7 +54,11 @@ public sealed class NetworkPhysicalLeverInteractable :
|
||||
public bool IsControlled => controllingClientId.Value != NoController;
|
||||
public bool IsControlledByLocalPlayer =>
|
||||
NetworkManager != null && IsControlledBy(NetworkManager.LocalClientId);
|
||||
public string ReleasePrompt => "[Hold E] Pulling lever";
|
||||
public string ReleasePrompt => "[Hold LMB] Pulling lever";
|
||||
|
||||
public event Action<float> ValueChanged;
|
||||
public event Action<bool> StateChanged;
|
||||
public event Action MaximumReached;
|
||||
|
||||
public override string InteractionPrompt => IsControlledByLocalPlayer
|
||||
? ReleasePrompt
|
||||
@@ -92,6 +98,7 @@ public sealed class NetworkPhysicalLeverInteractable :
|
||||
{
|
||||
synchronizedValue.Value = InitialPositionValue;
|
||||
isActivated.Value = initialPositionIsMaximum;
|
||||
maximumEndpointLatched = initialPositionIsMaximum;
|
||||
}
|
||||
|
||||
synchronizedValue.OnValueChanged += HandleValueChanged;
|
||||
@@ -216,9 +223,24 @@ public sealed class NetworkPhysicalLeverInteractable :
|
||||
const float endpointTolerance = 0.001f;
|
||||
|
||||
if (synchronizedValue.Value >= 1f - endpointTolerance)
|
||||
{
|
||||
SetActivation(true);
|
||||
else if (synchronizedValue.Value <= endpointTolerance)
|
||||
if (!maximumEndpointLatched)
|
||||
{
|
||||
maximumEndpointLatched = true;
|
||||
MaximumReached?.Invoke();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
maximumEndpointLatched = false;
|
||||
}
|
||||
|
||||
if (synchronizedValue.Value <= endpointTolerance)
|
||||
{
|
||||
maximumEndpointLatched = false;
|
||||
SetActivation(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void SetActivation(bool activated)
|
||||
@@ -304,11 +326,15 @@ public sealed class NetworkPhysicalLeverInteractable :
|
||||
private void HandleValueChanged(float _, float currentValue)
|
||||
{
|
||||
ApplyVisual(currentValue);
|
||||
ValueChanged?.Invoke(currentValue);
|
||||
leverValueChanged?.Invoke(currentValue);
|
||||
}
|
||||
|
||||
private void HandleActivationChanged(bool _, bool currentState) =>
|
||||
private void HandleActivationChanged(bool _, bool currentState)
|
||||
{
|
||||
StateChanged?.Invoke(currentState);
|
||||
leverStateChanged?.Invoke(currentState);
|
||||
}
|
||||
|
||||
private void ApplyVisual(float value)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user