gemportal branch merge
This commit is contained in:
@@ -9,22 +9,39 @@ public class PortalTeleporter : MonoBehaviour
|
||||
private Transform linkedPortalTransform;
|
||||
private float _portalCooldown = 2.5f;
|
||||
private bool _travellerIsOverlapping = false;
|
||||
private bool _portalIsEnabled;
|
||||
private bool _portalCanBeUsed;
|
||||
private bool _enabled;
|
||||
private float _lastUsed;
|
||||
private bool _justUsed;
|
||||
private Transform traveller;
|
||||
public AudioClip TeleportSound;
|
||||
// poopy code, can be done much more efficient if this class is rewritten and attached to Portal parent object
|
||||
private AudioSource audioSource;
|
||||
private GameObject vfx_gameobject;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
linkedPortalTransform = linkedPortal.transform;
|
||||
_portalIsEnabled = true;
|
||||
_portalCanBeUsed = true;
|
||||
vfx_gameobject = transform.parent.Find("PortalFX").gameObject;
|
||||
audioSource = transform.parent.GetComponent<AudioSource>();
|
||||
audioSource.mute = true;
|
||||
if (_enabled)
|
||||
{
|
||||
vfx_gameobject.SetActive(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
vfx_gameobject.SetActive(false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void OnTriggerEnter(Collider other)
|
||||
{
|
||||
traveller = other.gameObject.transform;
|
||||
if (_portalIsEnabled && !_justUsed)
|
||||
Debug.Log(_enabled);
|
||||
if (_portalCanBeUsed && !_justUsed && _enabled)
|
||||
{
|
||||
if (other.name.StartsWith("Holster"))
|
||||
{
|
||||
@@ -32,7 +49,7 @@ public class PortalTeleporter : MonoBehaviour
|
||||
}
|
||||
else
|
||||
{
|
||||
linkedPortal._portalIsEnabled = false;
|
||||
linkedPortal._portalCanBeUsed = false;
|
||||
_travellerIsOverlapping = true;
|
||||
if (other.tag == "Throwable")
|
||||
{
|
||||
@@ -47,6 +64,28 @@ public class PortalTeleporter : MonoBehaviour
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Enable/Disable portal if selected item is in a socket.
|
||||
public void EnablePortal()
|
||||
{
|
||||
Debug.Log("enabled");
|
||||
_enabled = true;
|
||||
linkedPortal._enabled = true;
|
||||
vfx_gameobject.SetActive(true);
|
||||
linkedPortal.vfx_gameobject.SetActive(true);
|
||||
audioSource.mute = false;
|
||||
}
|
||||
|
||||
public void DisablePortal()
|
||||
{
|
||||
Debug.Log("disabled");
|
||||
_enabled = false;
|
||||
linkedPortal._enabled = false;
|
||||
vfx_gameobject.SetActive(false);
|
||||
linkedPortal.vfx_gameobject.SetActive(false);
|
||||
audioSource.mute = true;
|
||||
}
|
||||
|
||||
private void HandlePlayer()
|
||||
{
|
||||
Vector3 portalToTraveller = traveller.position - transform.position;
|
||||
@@ -65,7 +104,7 @@ public class PortalTeleporter : MonoBehaviour
|
||||
|
||||
AudioSource.PlayClipAtPoint(TeleportSound, traveller.position, 1);
|
||||
_travellerIsOverlapping = false;
|
||||
_portalIsEnabled = false;
|
||||
_portalCanBeUsed = false;
|
||||
_lastUsed = Time.time;
|
||||
_justUsed = true;
|
||||
}
|
||||
@@ -86,7 +125,7 @@ public class PortalTeleporter : MonoBehaviour
|
||||
Vector3 positionOffset = Quaternion.Euler(0f, rotationDiff, 0f) * portalToTraveller;
|
||||
traveller.position = linkedPortalTransform.position + positionOffset;
|
||||
_travellerIsOverlapping = false;
|
||||
_portalIsEnabled = false;
|
||||
_portalCanBeUsed = false;
|
||||
_lastUsed = Time.time;
|
||||
_justUsed = true;
|
||||
}
|
||||
@@ -108,8 +147,8 @@ public class PortalTeleporter : MonoBehaviour
|
||||
if (_lastUsed + _portalCooldown < Time.time)
|
||||
{
|
||||
_justUsed = false;
|
||||
_portalIsEnabled = true;
|
||||
linkedPortal._portalIsEnabled = true;
|
||||
_portalCanBeUsed = true;
|
||||
linkedPortal._portalCanBeUsed = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user