From 595a5903ec4e346f5db5d6c2ddc306bb7783a821 Mon Sep 17 00:00:00 2001 From: raccoon Date: Thu, 9 Oct 2025 09:36:01 +0500 Subject: [PATCH] Fucking finally --- .../prefabs/double-door/TriggerDoor.asset | 22 ++++--- .../prefabs/double-door/TriggerDoor.cs | 57 ++++++++++--------- .../prefabs/double-door/double-door.prefab | 11 ++-- .../prefabs/measuredoor/GenericDoor.cs | 6 +- .../prefabs/measuredoor/measuredoor01.prefab | 25 +++++++- 5 files changed, 75 insertions(+), 46 deletions(-) diff --git a/Assets/occlusion-portals/prefabs/double-door/TriggerDoor.asset b/Assets/occlusion-portals/prefabs/double-door/TriggerDoor.asset index e99edd2..1be3d3d 100644 --- a/Assets/occlusion-portals/prefabs/double-door/TriggerDoor.asset +++ b/Assets/occlusion-portals/prefabs/double-door/TriggerDoor.asset @@ -19,7 +19,7 @@ MonoBehaviour: sourceCsScript: {fileID: 11500000, guid: 4c9f1e7caf7ec574d9a69f347f31d440, type: 3} scriptVersion: 2 compiledVersion: 2 - behaviourSyncMode: 0 + behaviourSyncMode: 4 hasInteractEvent: 0 scriptID: -3302444108559197070 serializationData: @@ -359,19 +359,19 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _counter + Data: _tagName - Name: $v Entry: 7 Data: 21|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _counter + Data: _tagName - Name: k__BackingField Entry: 7 Data: 22|System.RuntimeType, mscorlib - Name: Entry: 1 - Data: System.Byte, mscorlib + Data: System.String, mscorlib - Name: Entry: 8 Data: @@ -419,19 +419,19 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _tagName + Data: _counter - Name: $v Entry: 7 Data: 25|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _tagName + Data: _counter - Name: k__BackingField Entry: 7 Data: 26|System.RuntimeType, mscorlib - Name: Entry: 1 - Data: System.String, mscorlib + Data: System.Int32, mscorlib - Name: Entry: 8 Data: @@ -455,13 +455,19 @@ MonoBehaviour: Data: 27|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 - Data: 1 + Data: 2 - Name: Entry: 7 Data: 28|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime - Name: Entry: 8 Data: + - Name: + Entry: 7 + Data: 29|UdonSharp.FieldChangeCallbackAttribute, UdonSharp.Runtime + - Name: + Entry: 8 + Data: - Name: Entry: 13 Data: diff --git a/Assets/occlusion-portals/prefabs/double-door/TriggerDoor.cs b/Assets/occlusion-portals/prefabs/double-door/TriggerDoor.cs index b387e0c..8bd0ba2 100644 --- a/Assets/occlusion-portals/prefabs/double-door/TriggerDoor.cs +++ b/Assets/occlusion-portals/prefabs/double-door/TriggerDoor.cs @@ -1,8 +1,8 @@ -using System; -using UdonSharp; +using UdonSharp; using UnityEngine; using VRC.SDKBase; +[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)] public class TriggerDoor : UdonSharpBehaviour { private const string MagicWord = "fuck"; @@ -15,38 +15,54 @@ public class TriggerDoor : UdonSharpBehaviour [Tooltip("Sound when closing")] public AudioClip closingSound; [Tooltip("Start state of the \"Door\" (parameter \'isOpen\' in controller)")] - public bool isOpen = false; + public bool isOpen; - [UdonSynced] - private byte _counter = 0; [UdonSynced] private string _tagName; + [UdonSynced, FieldChangeCallback(nameof(Counter))] + private int _counter; + + public int Counter + { + set + { + if (value <= 0) + { + _counter = 0; + SetDoorState(false); + } + else if (value > 255) + { + _counter = 255; + SetDoorState(true); + } + else + { + _counter = value; + SetDoorState(true); + } + } + get => _counter; + } public override void OnPlayerTriggerEnter(VRCPlayerApi player) { - var start = Time.realtimeSinceStartup; - if (player.IsValid()) { player.SetPlayerTag(_tagName, MagicWord); } - SetDoorState(true); - SetCounter(_counter + 1); - Debug.Log($"OnPlayerTriggerEnter: {Time.realtimeSinceStartup - start}s"); + Counter++; } public override void OnPlayerTriggerExit(VRCPlayerApi player) { - var start = Time.realtimeSinceStartup; - if (player.IsValid()) { player.SetPlayerTag(_tagName); } - SetDoorState(SetCounter(_counter - 1) > 0); - - Debug.Log($"OnPlayerTriggerExit: {Time.realtimeSinceStartup - start}s"); + + Counter--; } /// @@ -67,17 +83,6 @@ public class TriggerDoor : UdonSharpBehaviour SetAnimatorValue(isOpen); } - private byte SetCounter(int value) - { - if (value < 0) - _counter = 0; - else if (value > 255) - _counter = 255; - else - _counter = (byte)value; - return _counter; - } - private void SetDoorState(bool open) { if (open == isOpen) diff --git a/Assets/occlusion-portals/prefabs/double-door/double-door.prefab b/Assets/occlusion-portals/prefabs/double-door/double-door.prefab index ed69b6b..19196fc 100644 --- a/Assets/occlusion-portals/prefabs/double-door/double-door.prefab +++ b/Assets/occlusion-portals/prefabs/double-door/double-door.prefab @@ -49,12 +49,12 @@ AudioSource: m_Pitch: 1 Loop: 0 Mute: 0 - Spatialize: 0 + Spatialize: 1 SpatializePostEffects: 0 Priority: 128 DopplerLevel: 1 - MinDistance: 1 - MaxDistance: 500 + MinDistance: 0.5 + MaxDistance: 5 Pan2D: 0 rolloffMode: 0 BypassEffects: 0 @@ -145,7 +145,7 @@ MonoBehaviour: Far: 80 Near: 0 VolumetricRadius: 0 - EnableSpatialization: 0 + EnableSpatialization: 1 UseAudioSourceVolumeCurve: 0 --- !u!1 &6742685524490459691 GameObject: @@ -273,7 +273,7 @@ BoxCollider: m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 3 - m_Size: {x: 3.2, y: 3.2, z: 4.8} + m_Size: {x: 3.2, y: 3.2, z: 3.2} m_Center: {x: 0, y: 1.6, z: 0} --- !u!114 &6807330494230581692 MonoBehaviour: @@ -302,7 +302,6 @@ MonoBehaviour: openSound: {fileID: 8300000, guid: c439a2bf0f3382744a7e9b4c3f470c33, type: 3} closingSound: {fileID: 8300000, guid: edb4f35d07a1ddf468eab91c515297c1, type: 3} isOpen: 0 - counter: 0 --- !u!114 &300584612255345046 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/occlusion-portals/prefabs/measuredoor/GenericDoor.cs b/Assets/occlusion-portals/prefabs/measuredoor/GenericDoor.cs index a4d8849..35b9280 100644 --- a/Assets/occlusion-portals/prefabs/measuredoor/GenericDoor.cs +++ b/Assets/occlusion-portals/prefabs/measuredoor/GenericDoor.cs @@ -14,9 +14,9 @@ public class GenericDoor : UdonSharpBehaviour [Tooltip("Sound when closing")] public AudioClip closingSound; [Tooltip("Start state of the \"Door\" (parameter \'isOpen\' in controller)"), UdonSynced, FieldChangeCallback(nameof(IsOpen))] - public bool isOpen = false; + public bool isOpen; [Tooltip("The \"Door\" opens from the other side (parameter \'reverse\' in controller)")] - public bool reverse = false; + public bool reverse; public bool IsOpen { @@ -31,7 +31,7 @@ public class GenericDoor : UdonSharpBehaviour public override void Interact() { Networking.SetOwner(Networking.LocalPlayer, gameObject); - IsOpen = !IsOpen; + IsOpen = !animator.GetBool("isOpen");; RequestSerialization(); } diff --git a/Assets/occlusion-portals/prefabs/measuredoor/measuredoor01.prefab b/Assets/occlusion-portals/prefabs/measuredoor/measuredoor01.prefab index a2b4f64..a707064 100644 --- a/Assets/occlusion-portals/prefabs/measuredoor/measuredoor01.prefab +++ b/Assets/occlusion-portals/prefabs/measuredoor/measuredoor01.prefab @@ -305,6 +305,7 @@ GameObject: m_Component: - component: {fileID: 644643761086828937} - component: {fileID: 8581911545463114097} + - component: {fileID: 6211132235778279209} m_Layer: 0 m_Name: door-sound m_TagString: Untagged @@ -343,12 +344,12 @@ AudioSource: m_Pitch: 1 Loop: 0 Mute: 0 - Spatialize: 0 + Spatialize: 1 SpatializePostEffects: 0 Priority: 128 DopplerLevel: 1 - MinDistance: 1 - MaxDistance: 500 + MinDistance: 0.5 + MaxDistance: 5 Pan2D: 0 rolloffMode: 0 BypassEffects: 0 @@ -423,6 +424,24 @@ AudioSource: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 +--- !u!114 &6211132235778279209 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7681430886952281138} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -617992517, guid: 661092b4961be7145bfbe56e1e62337b, type: 3} + m_Name: + m_EditorClassIdentifier: + Gain: 10 + Far: 40 + Near: 0 + VolumetricRadius: 0 + EnableSpatialization: 1 + UseAudioSourceVolumeCurve: 1 --- !u!1001 &4916885274060218817 PrefabInstance: m_ObjectHideFlags: 0