first commit
This commit is contained in:
71
NitroxClient/MonoBehaviours/Overrides/MultiplayerBench.cs
Normal file
71
NitroxClient/MonoBehaviours/Overrides/MultiplayerBench.cs
Normal file
@@ -0,0 +1,71 @@
|
||||
using System;
|
||||
using NitroxClient.Unity.Helper;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NitroxClient.MonoBehaviours.Overrides
|
||||
{
|
||||
public class MultiplayerBench : Bench
|
||||
{
|
||||
private Side side;
|
||||
|
||||
public static MultiplayerBench FromBench(Bench origin, GameObject target, Side side, GameObject animatorRoot)
|
||||
{
|
||||
Animator animator = animatorRoot.GetComponent<Animator>();
|
||||
Transform playerTarget = animatorRoot.transform.Find("root/cine_loc/player_target");
|
||||
Transform playerOutTarget = animatorRoot.transform.Find("out_target");
|
||||
|
||||
MultiplayerBench bench = target.AddComponent<MultiplayerBench>();
|
||||
bench.frontObstacleCheck = origin.frontObstacleCheck;
|
||||
bench.backObstacleCheck = origin.backObstacleCheck;
|
||||
bench.frontAnimRotation = origin.frontAnimRotation;
|
||||
bench.backAnimRotation = origin.backAnimRotation;
|
||||
bench.checkDistance = origin.checkDistance;
|
||||
bench.handText = origin.handText;
|
||||
bench.triggerType = origin.triggerType;
|
||||
bench.volumeTriggerType = origin.volumeTriggerType;
|
||||
bench.standUpCinematicController = origin.standUpCinematicController;
|
||||
bench.cinematicController = origin.cinematicController;
|
||||
|
||||
bench.onCinematicStart = new CinematicModeEvent();
|
||||
bench.onCinematicEnd = new CinematicModeEvent();
|
||||
bench.side = side;
|
||||
|
||||
bench.animator = animator;
|
||||
bench.playerTarget = playerTarget;
|
||||
bench.cinematicController.animatedTransform = playerTarget;
|
||||
bench.cinematicController.animator = animator;
|
||||
bench.cinematicController.informGameObject = target;
|
||||
bench.standUpCinematicController.animatedTransform = playerTarget;
|
||||
bench.standUpCinematicController.endTransform = playerOutTarget;
|
||||
bench.standUpCinematicController.animator = animator;
|
||||
bench.standUpCinematicController.informGameObject = target;
|
||||
|
||||
return bench;
|
||||
}
|
||||
|
||||
public override void OnHandClick(GUIHand hand)
|
||||
{
|
||||
// Prevent users from sitting on a not fully-constructed bench
|
||||
if (gameObject.TryGetComponentInParent(out Constructable constructable, true) && !constructable.constructed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
standUpCinematicController.transform.localPosition = side switch
|
||||
{
|
||||
Side.LEFT => new Vector3(-0.75f, 0.082f, 0),
|
||||
Side.CENTER => new Vector3(0, 0.082f, 0),
|
||||
Side.RIGHT => new Vector3(0.75f, 0.082f, 0),
|
||||
_ => throw new ArgumentOutOfRangeException()
|
||||
};
|
||||
|
||||
base.OnHandClick(hand);
|
||||
}
|
||||
|
||||
public enum Side
|
||||
{
|
||||
LEFT,
|
||||
CENTER,
|
||||
RIGHT
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user