- Floor markers now properly detect correct/incorrect placements.
- Implemented correct/incorrect sounds.
This commit is contained in:
@@ -44,7 +44,73 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 5
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: _IsGrabbed
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 2|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: _IsGrabbed
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 7
|
||||
Data: 3|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: System.Boolean, mscorlib
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 3
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
- Name:
|
||||
Entry: 3
|
||||
Data: 1
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <IsSerialized>k__BackingField
|
||||
Entry: 5
|
||||
Data: false
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 4|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 2
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data: 5|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data: 6|UdonSharp.FieldChangeCallbackAttribute, UdonSharp.Runtime
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 13
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data:
|
||||
@@ -53,13 +119,13 @@ MonoBehaviour:
|
||||
Data: _GameManager
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 2|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
Data: 7|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: _GameManager
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 7
|
||||
Data: 3|System.RuntimeType, mscorlib
|
||||
Data: 8|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: GameManagerRound3, Assembly-CSharp
|
||||
@@ -68,7 +134,7 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 7
|
||||
Data: 4|System.RuntimeType, mscorlib
|
||||
Data: 9|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: VRC.Udon.UdonBehaviour, VRC.Udon
|
||||
@@ -89,13 +155,13 @@ MonoBehaviour:
|
||||
Data: true
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 5|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
Data: 10|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 1
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data: 6|UnityEngine.SerializeField, UnityEngine.CoreModule
|
||||
Data: 11|UnityEngine.SerializeField, UnityEngine.CoreModule
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
@@ -111,6 +177,174 @@ MonoBehaviour:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: _AudioManager
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 12|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: _AudioManager
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 7
|
||||
Data: 13|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: AudioManager, Assembly-CSharp
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 9
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
- Name:
|
||||
Entry: 6
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <IsSerialized>k__BackingField
|
||||
Entry: 5
|
||||
Data: true
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 14|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 1
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data: 15|UnityEngine.SerializeField, UnityEngine.CoreModule
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 13
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: _CollidingLocations
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 16|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: _CollidingLocations
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 7
|
||||
Data: 17|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: VRC.SDK3.Data.DataList, VRCSDK3
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 17
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
- Name:
|
||||
Entry: 6
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <IsSerialized>k__BackingField
|
||||
Entry: 5
|
||||
Data: false
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 18|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 0
|
||||
- Name:
|
||||
Entry: 13
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: _CollisionCheckCounter
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 19|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: _CollisionCheckCounter
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 7
|
||||
Data: 20|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: System.Int32, mscorlib
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 20
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
- Name:
|
||||
Entry: 6
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <IsSerialized>k__BackingField
|
||||
Entry: 5
|
||||
Data: false
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 21|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 0
|
||||
- Name:
|
||||
Entry: 13
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 13
|
||||
Data:
|
||||
|
||||
@@ -1,94 +1,120 @@
|
||||
|
||||
using UdonSharp;
|
||||
using UnityEngine;
|
||||
using VRC.SDK3.Components;
|
||||
using VRC.SDK3.Data;
|
||||
using VRC.SDKBase;
|
||||
using VRC.Udon;
|
||||
|
||||
|
||||
[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)]
|
||||
public class FloorMapMarker : UdonSharpBehaviour
|
||||
{
|
||||
//[UdonSynced, FieldChangeCallback(nameof(Enabled))] public bool _Enabled = false;
|
||||
//[UdonSynced, FieldChangeCallback(nameof(IsGrabbed))] public bool _IsGrabbed = false;
|
||||
[UdonSynced, FieldChangeCallback(nameof(IsGrabbed))] private bool _IsGrabbed = false;
|
||||
|
||||
[SerializeField] private GameManagerRound3 _GameManager;
|
||||
[SerializeField] private AudioManager _AudioManager;
|
||||
|
||||
//private DataList _OtherColliders = new DataList();
|
||||
//private int _CollisionCheckCounter = 0;
|
||||
//private const int MAX_COLLISION_CHECKS = 4;
|
||||
private DataList _CollidingLocations = new DataList();
|
||||
private int _CollisionCheckCounter = 0;
|
||||
private const int MAX_REPEAT_COLLISION_CHECKS = 3;
|
||||
private const float TIME_BETWEEN_REPEAT_COLLISION_CHECKS = 0.15f;
|
||||
|
||||
|
||||
//public void OnTriggerEnter(Collider OtherCollider)
|
||||
//{
|
||||
// _OtherColliders.Add(OtherCollider);
|
||||
// _CollisionCheckCounter = 0;
|
||||
// if (!IsGrabbed) CheckCollisions();
|
||||
//}
|
||||
public void OnTriggerEnter(Collider OtherCollider)
|
||||
{
|
||||
FloorMapLocation Location = OtherCollider.GetComponent<FloorMapLocation>();
|
||||
if (Location != null)
|
||||
{
|
||||
Debug.LogError("Found " + Location.City + ", " + Location.Country);
|
||||
_CollidingLocations.Add(Location);
|
||||
_CollisionCheckCounter = 0;
|
||||
if (!IsGrabbed) CheckCollisions();
|
||||
}
|
||||
}
|
||||
|
||||
//public override void OnPickup()
|
||||
//{
|
||||
// IsGrabbed = true;
|
||||
public override void OnPickup()
|
||||
{
|
||||
IsGrabbed = true;
|
||||
_CollidingLocations.Clear();
|
||||
|
||||
// base.OnPickup();
|
||||
//}
|
||||
base.OnPickup();
|
||||
}
|
||||
|
||||
//public override void OnDrop()
|
||||
//{
|
||||
// IsGrabbed = false;
|
||||
// CheckCollisions();
|
||||
public override void OnDrop()
|
||||
{
|
||||
IsGrabbed = false;
|
||||
CheckCollisions();
|
||||
|
||||
// base.OnDrop();
|
||||
//}
|
||||
base.OnDrop();
|
||||
}
|
||||
|
||||
|
||||
//public void CheckCollisions()
|
||||
//{
|
||||
// if (IsUpright())
|
||||
// {
|
||||
// bool FoundCorrectResponse = false;
|
||||
// for (int i = 0; i < _OtherColliders.Count; i++)
|
||||
// {
|
||||
// Collider OtherCollider = (Collider)_OtherColliders[i].Reference;
|
||||
// if (OtherCollider != null)
|
||||
// {
|
||||
// FloorMapLocation Location = OtherCollider.GetComponent<FloorMapLocation>();
|
||||
public void CheckCollisions()
|
||||
{
|
||||
if (_CollidingLocations.Count > 0 && IsUpright() && !IsGrabbed)
|
||||
{
|
||||
for (int i = 0; i < _CollidingLocations.Count; i++)
|
||||
{
|
||||
FloorMapLocation Location = (FloorMapLocation)_CollidingLocations[i].Reference;
|
||||
if (Location != null)
|
||||
{
|
||||
bool FoundCorrectResponse = ConfirmChoice(Location.Country, Location.City);
|
||||
if (FoundCorrectResponse)
|
||||
{
|
||||
_AudioManager.PlaySFX(SFXEventType.MapCorrect);
|
||||
VRCPickup Pickup;
|
||||
if (Pickup = GetComponent<VRCPickup>())
|
||||
{
|
||||
Pickup.pickupable = false;
|
||||
}
|
||||
|
||||
// FoundCorrectResponse = _GameManager.ConfirmChoice(Location.Country, Location.City);
|
||||
// if (FoundCorrectResponse) break;
|
||||
// }
|
||||
// }
|
||||
transform.position = Location.transform.position;
|
||||
|
||||
// if (FoundCorrectResponse)
|
||||
// {
|
||||
// Debug.LogError("No error. We found the right place.");
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// _CollisionCheckCounter++;
|
||||
// if (_CollisionCheckCounter < MAX_COLLISION_CHECKS)
|
||||
// {
|
||||
// SendCustomEventDelayedSeconds(nameof(CheckCollisions), 0.2f);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// _OtherColliders.Clear();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// else if (!IsGrabbed)
|
||||
// {
|
||||
// // If the marker isn't sitting mostly upright, or is grabbed,
|
||||
// // don't check collisions until later, if it becomes upright.
|
||||
// SendCustomEventDelayedSeconds(nameof(CheckCollisions), 0.2f);
|
||||
// }
|
||||
//}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// We should make sure to only reach here if we don't get a correct
|
||||
// response from the previous loop.
|
||||
if (_CollisionCheckCounter < MAX_REPEAT_COLLISION_CHECKS)
|
||||
{
|
||||
SendCustomEventDelayedSeconds(nameof(CheckCollisions), TIME_BETWEEN_REPEAT_COLLISION_CHECKS);
|
||||
}
|
||||
else
|
||||
{
|
||||
_AudioManager.PlaySFX(SFXEventType.MapIncorrect);
|
||||
|
||||
_CollisionCheckCounter = 0;
|
||||
transform.eulerAngles = new Vector3(-90.0f, 0.0f, 0.0f);
|
||||
_CollidingLocations.Clear();
|
||||
}
|
||||
_CollisionCheckCounter++;
|
||||
}
|
||||
else
|
||||
{
|
||||
// If the marker isn't sitting mostly upright and is not grabbed,
|
||||
// don't check collisions until later, in case it becomes upright.
|
||||
SendCustomEventDelayedSeconds(nameof(CheckCollisions), TIME_BETWEEN_REPEAT_COLLISION_CHECKS);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//private bool IsUpright()
|
||||
//{
|
||||
// return (Vector3.Dot(transform.forward, Vector3.up) >= 0.85f);
|
||||
//}
|
||||
public bool ConfirmChoice(string Country, string City)
|
||||
{
|
||||
if (Country == _GameManager.GetCurrentCountry() &&
|
||||
City == _GameManager.GetCurrentCity())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
private bool IsUpright()
|
||||
{
|
||||
return (Vector3.Dot(transform.forward, Vector3.up) >= 0.85f);
|
||||
}
|
||||
|
||||
|
||||
//public bool Enabled
|
||||
@@ -100,12 +126,12 @@ public class FloorMapMarker : UdonSharpBehaviour
|
||||
// get => _Enabled;
|
||||
//}
|
||||
|
||||
//public bool IsGrabbed
|
||||
//{
|
||||
// set
|
||||
// {
|
||||
// _IsGrabbed = value;
|
||||
// }
|
||||
// get => _IsGrabbed;
|
||||
//}
|
||||
public bool IsGrabbed
|
||||
{
|
||||
set
|
||||
{
|
||||
_IsGrabbed = value;
|
||||
}
|
||||
get => _IsGrabbed;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user