This commit is contained in:
2026-06-30 21:19:19 +07:00
parent 30ecad1667
commit 83d4157ac6
5 changed files with 82 additions and 29 deletions

View File

@@ -3,10 +3,17 @@
<component name="AutoImportSettings">
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="CMakeSettings">
<configurations />
</component>
<component name="ChangeListManager">
<list default="true" id="d308d1cb-09fc-4331-ba20-00f7b43d1576" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/.idea/.idea.BABA_YAGA/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.BABA_YAGA/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scenes/Main Scene.unity" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scenes/Main Scene.unity" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Prefabs/Nolan/Nolan.prefab" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Prefabs/Nolan/Nolan.prefab" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Prefabs/Player Prototype/PlayerDataManager.prefab" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Prefabs/Player Prototype/PlayerDataManager.prefab" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Network/FusionClientMovementBridge.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Network/FusionClientMovementBridge.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ProjectSettings/UnityConnectSettings.asset" beforeDir="false" afterPath="$PROJECT_DIR$/ProjectSettings/UnityConnectSettings.asset" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -45,27 +52,41 @@
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">{
&quot;keyToString&quot;: {
&quot;ModuleVcsDetector.initialDetectionPerformed&quot;: &quot;true&quot;,
&quot;RunOnceActivity.MCP Project settings loaded&quot;: &quot;true&quot;,
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252&quot;: &quot;true&quot;,
&quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
&quot;RunOnceActivity.typescript.service.memoryLimit.init&quot;: &quot;true&quot;,
&quot;com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1&quot;: &quot;true&quot;,
&quot;git-widget-placeholder&quot;: &quot;main&quot;,
&quot;junie.onboarding.icon.badge.shown&quot;: &quot;true&quot;,
&quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
&quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
&quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
&quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
&quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
&quot;to.speed.mode.migration.done&quot;: &quot;true&quot;,
&quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
<component name="PropertiesComponent"><![CDATA[{
"keyToString": {
"ModuleVcsDetector.initialDetectionPerformed": "true",
"RunOnceActivity.MCP Project settings loaded": "true",
"RunOnceActivity.ShowReadmeOnStart": "true",
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
"RunOnceActivity.cidr.known.project.marker": "true",
"RunOnceActivity.git.unshallow": "true",
"RunOnceActivity.readMode.enableVisualFormatting": "true",
"RunOnceActivity.typescript.service.memoryLimit.init": "true",
"cidr.known.project.marker": "true",
"codeWithMe.voiceChat.enabledByDefault": "false",
"com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true",
"git-widget-placeholder": "main",
"junie.onboarding.icon.badge.shown": "true",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
"node.js.selected.package.tslint": "(autodetect)",
"nodejs_package_manager_path": "npm",
"to.speed.mode.migration.done": "true",
"vue.rearranger.settings.migration": "true"
}
}</component>
}]]></component>
<component name="RunManager" selected="Attach to Unity Editor.Attach to Unity Editor">
<configuration name="Standalone Player" type="RunUnityExe" factoryName="Unity Executable">
<option name="EXE_PATH" value="$PROJECT_DIR$/Build\BABA_YAGA.exe" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="D:\Projects\BABA_YAGA\Build" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="ENV_FILE_PATHS" value="" />
<option name="REDIRECT_INPUT_PATH" value="" />
<option name="MIXED_MODE_DEBUG" value="0" />
<method v="2" />
</configuration>
<configuration name="Start Unity" type="RunUnityExe" factoryName="Unity Executable">
<option name="EXE_PATH" value="C:\Program Files\Unity\Hub\Editor\6000.3.10f1\Editor\Unity.exe" />
<option name="PROGRAM_PARAMETERS" value="-projectPath D:\Learning_Progress\Projects\BABA_YAGA -debugCodeOptimization" />
@@ -86,7 +107,7 @@
<option name="MIXED_MODE_DEBUG" value="0" />
<method v="2" />
</configuration>
<configuration name="Attach to Unity Editor" type="UNITY_DEBUG_RUN_CONFIGURATION" factoryName="Unity Debug" show_console_on_std_err="false" show_console_on_std_out="false" port="50000" address="localhost">
<configuration name="Attach to Unity Editor" type="UNITY_DEBUG_RUN_CONFIGURATION" factoryName="Unity Debug" show_console_on_std_err="false" show_console_on_std_out="false" port="50000" address="localhost" useMixedMode="false">
<option name="allowRunningInParallel" value="false" />
<option name="listenPortForConnections" value="false" />
<option name="pid" />
@@ -97,7 +118,6 @@
<option name="selectedOptions">
<list />
</option>
<option name="useMixedMode" value="false" />
<method v="2" />
</configuration>
<configuration name="Attach to" type="UnityDevicePlayer" factoryName="UnityAttachToDevicePlayer">
@@ -122,6 +142,7 @@
<workItem from="1781727437862" duration="1257000" />
<workItem from="1781765548760" duration="8210000" />
<workItem from="1782445122703" duration="1948000" />
<workItem from="1782825955934" duration="1783000" />
</task>
<servers />
</component>

View File

@@ -13343,6 +13343,7 @@ GameObject:
- component: {fileID: 5202821522363770394}
- component: {fileID: 1486775676321644921}
- component: {fileID: 8796553624329906391}
- component: {fileID: 433263687854393238}
m_Layer: 31
m_Name: Nolan
m_TagString: Untagged
@@ -15127,6 +15128,7 @@ MonoBehaviour:
NetworkedBehaviours:
- {fileID: 1486775676321644921}
- {fileID: 8796553624329906391}
- {fileID: 433263687854393238}
ForceRemoteRenderTimeframe: 0
--- !u!114 &1486775676321644921
MonoBehaviour:
@@ -15157,6 +15159,20 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 39343fbd597ed5947b34fa2777fa1b7c, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Hallucinate.Network.FusionClientMovementBridge
--- !u!114 &433263687854393238
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3995187695885635779}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b3d9934ebd60c9c4ea3e464b77fd7ae0, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::PlayerDataManager
_Players:
_items: []
--- !u!1 &4047096238443104023
GameObject:
m_ObjectHideFlags: 0

View File

@@ -46,7 +46,8 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::PlayerDataManager
_Players:
_items: []
_items:
- {}
--- !u!114 &-7009574229380509654
MonoBehaviour:
m_ObjectHideFlags: 0

View File

@@ -36,7 +36,8 @@ namespace Hallucinate.Network
{
// Because we passed State Authority to the client in BasicSpawner,
// HasStateAuthority is true ONLY for the local player.
bool isLocal = Object.HasStateAuthority;
// Check HasInputAuthority as well so the client's character correctly activates input!
bool isLocal = Object.HasStateAuthority || Object.HasInputAuthority;
if (isLocal)
{
@@ -75,15 +76,29 @@ namespace Hallucinate.Network
public override void FixedUpdateNetwork()
{
if (Object.HasStateAuthority)
// ONLY attempt to get input if we are the Host (StateAuthority) or the owning Client (InputAuthority).
// Calling GetInput on a Proxy (someone else's character) is what causes the GetTypeKey exception!
if (Object.HasStateAuthority || Object.HasInputAuthority)
{
if (GetInput<PlayerInputData>(out var input))
{
SyncInput = input;
// Apply input locally so the Client's character actually moves predicted!
if (m_CharacterLocomotion != null)
{
m_CharacterLocomotion.InputVector = input.InputVector;
m_CharacterLocomotion.RawInputVector = input.RawInputVector;
m_CharacterLocomotion.DeltaRotation = input.DeltaRotation;
}
if (Object.HasStateAuthority)
{
SyncInput = input;
}
}
}
if (!Object.HasStateAuthority)
// If we do NOT have StateAuthority AND we do NOT have InputAuthority, it's a Proxy (remote player).
if (Object.IsProxy)
{
// Ensure look source is attached for remote players
if (m_CharacterLocomotion != null && m_CharacterLocomotion.LookSource != (ILookSource)this)
@@ -206,7 +221,7 @@ namespace Hallucinate.Network
// --- INetworkInfo Implementation ---
public bool IsLocalPlayer() => Object.HasStateAuthority;
public bool IsLocalPlayer() => Object.HasStateAuthority || Object.HasInputAuthority;
public bool IsServer() => Runner.IsServer;
// Return FALSE because we are doing Client-Authoritative movement!

View File

@@ -4,7 +4,7 @@
UnityConnectSettings:
m_ObjectHideFlags: 0
serializedVersion: 1
m_Enabled: 0
m_Enabled: 1
m_TestMode: 0
m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
m_EventUrl: https://cdp.cloud.unity3d.com/v1/events