mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-22 12:39:51 +00:00
TryGetWorldObject
This commit is contained in:
parent
cad49f6ee0
commit
11b27a017b
@ -23,13 +23,11 @@ internal class LightSensorPatches : QSBPatch
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!__instance.HasWorldObject())
|
||||
if (!__instance.TryGetWorldObject(out QSBLightSensor qsbLightSensor))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
var qsbLightSensor = __instance.GetWorldObject<QSBLightSensor>();
|
||||
|
||||
if (__instance._fixedUpdateFrameDelayCount > 0)
|
||||
{
|
||||
__instance._fixedUpdateFrameDelayCount--;
|
||||
@ -61,13 +59,11 @@ internal class LightSensorPatches : QSBPatch
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!__instance.HasWorldObject())
|
||||
if (!__instance.TryGetWorldObject(out QSBLightSensor qsbLightSensor))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
var qsbLightSensor = __instance.GetWorldObject<QSBLightSensor>();
|
||||
|
||||
qsbLightSensor.LocallyIlluminated = false;
|
||||
__instance._illuminatingDreamLanternList?.Clear();
|
||||
if (__instance._lightSources == null || __instance._lightSources.Count == 0)
|
||||
@ -176,12 +172,11 @@ internal class LightSensorPatches : QSBPatch
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!__instance.HasWorldObject())
|
||||
if (!__instance.TryGetWorldObject(out QSBLightSensor qsbLightSensor))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
var qsbLightSensor = __instance.GetWorldObject<QSBLightSensor>();
|
||||
var locallyIlluminated = qsbLightSensor.LocallyIlluminated;
|
||||
qsbLightSensor.LocallyIlluminated = false;
|
||||
|
||||
|
@ -269,8 +269,25 @@ public static class QSBWorldSync
|
||||
return (TWorldObject)worldObject;
|
||||
}
|
||||
|
||||
public static bool HasWorldObject(this MonoBehaviour unityObject)
|
||||
=> unityObject && UnityObjectsToWorldObjects.ContainsKey(unityObject);
|
||||
public static bool TryGetWorldObject<TWorldObject>(this MonoBehaviour unityObject, out TWorldObject worldObject)
|
||||
where TWorldObject : IWorldObject
|
||||
{
|
||||
if (!unityObject)
|
||||
{
|
||||
DebugLog.ToConsole($"Error - Trying to run GetWorldFromUnity with a null unity object! TWorldObject:{typeof(TWorldObject).Name}, TUnityObject:NULL, Stacktrace:\r\n{Environment.StackTrace}", MessageType.Error);
|
||||
worldObject = default;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!UnityObjectsToWorldObjects.TryGetValue(unityObject, out var iWorldObject))
|
||||
{
|
||||
worldObject = default;
|
||||
return false;
|
||||
}
|
||||
|
||||
worldObject = (TWorldObject)iWorldObject;
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// not deterministic across platforms.
|
||||
|
Loading…
x
Reference in New Issue
Block a user