mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-23 06:40:56 +00:00
parent
7304d249df
commit
11811283d4
@ -65,13 +65,21 @@ namespace QSB.Events
|
||||
PlayerRegistry.UpdateState(message.SenderId, State.Suit, false);
|
||||
break;
|
||||
case EventType.EquipSignalscope:
|
||||
PlayerRegistry.UpdateState(message.SenderId, State.SignalScope, true);
|
||||
PlayerRegistry.UpdateState(message.SenderId, State.Signalscope, true);
|
||||
PlayerRegistry.GetPlayerSignalscope(message.SenderId).EquipTool();
|
||||
break;
|
||||
case EventType.UnequipSignalscope:
|
||||
PlayerRegistry.UpdateState(message.SenderId, State.SignalScope, false);
|
||||
PlayerRegistry.UpdateState(message.SenderId, State.Signalscope, false);
|
||||
PlayerRegistry.GetPlayerSignalscope(message.SenderId).UnequipTool();
|
||||
break;
|
||||
case EventType.EquipTranslator:
|
||||
PlayerRegistry.UpdateState(message.SenderId, State.Translator, true);
|
||||
PlayerRegistry.GetPlayerTranslator(message.SenderId).EquipTool();
|
||||
break;
|
||||
case EventType.UnequipTranslator:
|
||||
PlayerRegistry.UpdateState(message.SenderId, State.Translator, false);
|
||||
PlayerRegistry.GetPlayerTranslator(message.SenderId).UnequipTool();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -7,6 +7,8 @@
|
||||
SuitUp,
|
||||
RemoveSuit,
|
||||
EquipSignalscope,
|
||||
UnequipSignalscope
|
||||
UnequipSignalscope,
|
||||
EquipTranslator,
|
||||
UnequipTranslator
|
||||
}
|
||||
}
|
||||
|
@ -85,6 +85,17 @@ namespace QSB
|
||||
return tools.First(x => x.Type == ToolType.Signalscope);
|
||||
}
|
||||
|
||||
public static QSBTool GetPlayerTranslator(uint id)
|
||||
{
|
||||
var tools = GetPlayer(id).Camera.GetComponentsInChildren<QSBTool>();
|
||||
if (tools.Length == 0)
|
||||
{
|
||||
DebugLog.ToConsole("Error - Zero items in QSBTool list while trying to get Translator", MessageType.Error);
|
||||
return null;
|
||||
}
|
||||
return tools.First(x => x.Type == ToolType.Translator);
|
||||
}
|
||||
|
||||
// Update player data :
|
||||
|
||||
public static void HandleFullStateMessage(FullStateMessage message)
|
||||
|
@ -8,7 +8,8 @@ namespace QSB
|
||||
Flashlight = 0,
|
||||
Suit = 1,
|
||||
ProbeLauncher = 2,
|
||||
SignalScope = 4
|
||||
Signalscope = 4,
|
||||
Translator = 8
|
||||
//Increment these in binary to add more states
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
using OWML.ModHelper.Events;
|
||||
using QSB.Animation;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
namespace QSB.Utility
|
||||
@ -9,20 +10,27 @@ namespace QSB.Utility
|
||||
private static Transform _cameraBody;
|
||||
private static Transform _toolStowTransform;
|
||||
private static Transform _toolHoldTransform;
|
||||
private static Material _playerToolsMaterial;
|
||||
private static Material _lightbulbMaterial;
|
||||
|
||||
private static readonly Vector3 FlashlightOffset = new Vector3(0.7196316f, -0.2697681f, 0.3769455f);
|
||||
private static readonly Vector3 SignalscopeScale = new Vector3(1.5f, 1.5f, 1.5f);
|
||||
private static readonly Vector3 TranslatorScale = new Vector3(0.75f, 0.75f, 0.75f);
|
||||
|
||||
public static void Init(Transform camera)
|
||||
{
|
||||
_cameraBody = camera;
|
||||
CreateStowTransform(_cameraBody);
|
||||
CreateStowTransforms(_cameraBody);
|
||||
|
||||
_playerToolsMaterial = GameObject.Find("PlayerSuit_Jetpack").GetComponent<MeshRenderer>().materials[0];
|
||||
_lightbulbMaterial = GameObject.Find("Props_HEA_Lantern (10)/Lantern_Lamp").GetComponent<MeshRenderer>().materials[0];
|
||||
|
||||
CreateFlashlight();
|
||||
CreateSignalscope();
|
||||
CreateTranslator();
|
||||
}
|
||||
|
||||
private static void CreateStowTransform(Transform root)
|
||||
private static void CreateStowTransforms(Transform root)
|
||||
{
|
||||
var stow = new GameObject("ToolStowTransform");
|
||||
_toolStowTransform = stow.transform;
|
||||
@ -58,8 +66,10 @@ namespace QSB.Utility
|
||||
{
|
||||
var signalscopeRoot = GameObject.Instantiate(GameObject.Find("Signalscope"));
|
||||
signalscopeRoot.SetActive(false);
|
||||
|
||||
Object.Destroy(signalscopeRoot.GetComponent<SignalscopePromptController>());
|
||||
Object.Destroy(signalscopeRoot.transform.Find("Props_HEA_Signalscope_Prepass"));
|
||||
Object.Destroy(signalscopeRoot.transform.Find("Props_HEA_Signalscope")
|
||||
.Find("Props_HEA_Signalscope_Prepass").gameObject);
|
||||
|
||||
var oldSignalscope = signalscopeRoot.GetComponent<Signalscope>();
|
||||
var tool = signalscopeRoot.AddComponent<QSBTool>();
|
||||
@ -69,13 +79,57 @@ namespace QSB.Utility
|
||||
tool.SetValue("_arrivalDegrees", 5f);
|
||||
tool.Type = ToolType.Signalscope;
|
||||
tool.ToolGameObject = signalscopeRoot.transform.Find("Props_HEA_Signalscope").gameObject;
|
||||
signalscopeRoot.transform.Find("Props_HEA_Signalscope").gameObject.layer = 0;
|
||||
oldSignalscope.enabled = false;
|
||||
|
||||
GetRenderer(signalscopeRoot, "Props_HEA_Signalscope").material = _playerToolsMaterial;
|
||||
|
||||
signalscopeRoot.transform.parent = _cameraBody;
|
||||
signalscopeRoot.transform.localPosition = Vector3.zero;
|
||||
signalscopeRoot.transform.localScale = SignalscopeScale;
|
||||
signalscopeRoot.SetActive(true);
|
||||
}
|
||||
|
||||
private static void CreateTranslator()
|
||||
{
|
||||
var translatorRoot = GameObject.Instantiate(GameObject.Find("NomaiTranslatorProp"));
|
||||
translatorRoot.SetActive(false);
|
||||
|
||||
var group = translatorRoot.transform.Find("TranslatorGroup");
|
||||
var model = group.Find("Props_HEA_Translator");
|
||||
|
||||
Object.Destroy(translatorRoot.GetComponent<NomaiTranslatorProp>());
|
||||
Object.Destroy(group.Find("Canvas").gameObject);
|
||||
Object.Destroy(group.Find("Lighting").gameObject);
|
||||
Object.Destroy(group.Find("TranslatorBeams").gameObject);
|
||||
Object.Destroy(model.Find("Props_HEA_Translator_Pivot_RotatingPart")
|
||||
.Find("Props_HEA_Translator_RotatingPart")
|
||||
.Find("Props_HEA_Translator_RotatingPart_Prepass").gameObject);
|
||||
Object.Destroy(model.Find("Props_HEA_Translator_Prepass").gameObject);
|
||||
|
||||
var oldTranslator = translatorRoot.GetComponent<NomaiTranslator>();
|
||||
var tool = translatorRoot.AddComponent<QSBTool>();
|
||||
tool.SetValue("_moveSpring", oldTranslator.GetValue<DampedSpringQuat>("_moveSpring"));
|
||||
tool.SetValue("_stowTransform", _toolStowTransform);
|
||||
tool.SetValue("_holdTransform", _toolHoldTransform);
|
||||
tool.SetValue("_arrivalDegrees", 5f);
|
||||
tool.Type = ToolType.Translator;
|
||||
tool.ToolGameObject = group.gameObject;
|
||||
oldTranslator.enabled = false;
|
||||
|
||||
GetRenderer(translatorRoot, "Props_HEA_Translator_Geo").material = _playerToolsMaterial;
|
||||
GetRenderer(translatorRoot, "Props_HEA_Translator_RotatingPart").material = _playerToolsMaterial;
|
||||
GetRenderer(translatorRoot, "Props_HEA_Translator_Button_L").material = _lightbulbMaterial;
|
||||
GetRenderer(translatorRoot, "Props_HEA_Translator_Button_R").material = _lightbulbMaterial;
|
||||
|
||||
translatorRoot.transform.parent = _cameraBody;
|
||||
translatorRoot.transform.localPosition = Vector3.zero;
|
||||
translatorRoot.transform.localScale = TranslatorScale;
|
||||
translatorRoot.SetActive(true);
|
||||
}
|
||||
|
||||
private static MeshRenderer GetRenderer(GameObject root, string gameobjectName)
|
||||
{
|
||||
return root.GetComponentsInChildren<MeshRenderer>(true).First(x => x.name == gameobjectName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user