54 lines
1.2 KiB
C#
54 lines
1.2 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UdonSharp;
|
|
using UnityEngine;
|
|
using VRC.SDKBase;
|
|
using VRC.Udon;
|
|
|
|
public class Areaportal : UdonSharpBehaviour
|
|
{
|
|
private OcclusionPortal portal;
|
|
|
|
private GameObject[] imposters;
|
|
|
|
void Start()
|
|
{
|
|
this.portal = this.GetComponent<OcclusionPortal>();
|
|
this.imposters = new GameObject[this.transform.childCount];
|
|
|
|
// Ёбаный рот этого UdonSharp
|
|
int i = 0;
|
|
foreach(Transform child in this.transform)
|
|
{
|
|
this.imposters[i++] = child.gameObject;
|
|
child.gameObject.SetActive(!this.portal.open);
|
|
}
|
|
}
|
|
|
|
public void SetPortalOpenState(bool state)
|
|
{
|
|
this.portal.open = state;
|
|
|
|
foreach(GameObject imposter in this.imposters)
|
|
{
|
|
imposter.SetActive(!state);
|
|
}
|
|
}
|
|
|
|
public override void OnPlayerTriggerEnter(VRCPlayerApi player)
|
|
{
|
|
if (player.IsValid() && player.isLocal)
|
|
{
|
|
this.SetPortalOpenState(true);
|
|
}
|
|
}
|
|
|
|
public override void OnPlayerTriggerExit(VRCPlayerApi player)
|
|
{
|
|
if (player.IsValid() && player.isLocal)
|
|
{
|
|
this.SetPortalOpenState(false);
|
|
}
|
|
}
|
|
}
|