1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- // --------------------------------------------------------------------------------------------------------------------
- // <copyright file="OnClickInstantiate.cs" company="Exit Games GmbH">
- // Part of: Photon Unity Utilities
- // </copyright>
- // <summary>A compact script for prototyping.</summary>
- // <author>developer@exitgames.com</author>
- // --------------------------------------------------------------------------------------------------------------------
- using System.Collections;
- namespace Photon.Pun.UtilityScripts
- {
- using UnityEngine;
- using UnityEngine.EventSystems;
- /// <summary>
- /// This component will instantiate a network GameObject when in a room and the user click on that component's GameObject.
- /// Uses PhysicsRaycaster for positioning.
- /// </summary>
- public class OnClickRpc : MonoBehaviourPun, IPointerClickHandler
- {
- public PointerEventData.InputButton Button;
- public KeyCode ModifierKey;
- public RpcTarget Target;
- void IPointerClickHandler.OnPointerClick(PointerEventData eventData)
- {
- if (!PhotonNetwork.InRoom || (this.ModifierKey != KeyCode.None && !Input.GetKey(this.ModifierKey)) || eventData.button != this.Button)
- {
- return;
- }
-
- this.photonView.RPC("ClickRpc", this.Target);
- }
- #region RPC Implementation
- private Material originalMaterial;
- private Color originalColor;
- private bool isFlashing;
- [PunRPC]
- public void ClickRpc()
- {
- //Debug.Log("ClickRpc Called");
- this.StartCoroutine(this.ClickFlash());
- }
-
- public IEnumerator ClickFlash()
- {
- if (isFlashing)
- {
- yield break;
- }
- isFlashing = true;
- this.originalMaterial = GetComponent<Renderer>().material;
- if (!this.originalMaterial.HasProperty("_EmissionColor"))
- {
- Debug.LogWarning("Doesn't have emission, can't flash " + gameObject);
- yield break;
- }
- bool wasEmissive = this.originalMaterial.IsKeywordEnabled("_EMISSION");
- this.originalMaterial.EnableKeyword("_EMISSION");
- this.originalColor = this.originalMaterial.GetColor("_EmissionColor");
- this.originalMaterial.SetColor("_EmissionColor", Color.white);
- for (float f = 0.0f; f <= 1.0f; f += 0.08f)
- {
- Color lerped = Color.Lerp(Color.white, this.originalColor, f);
- this.originalMaterial.SetColor("_EmissionColor", lerped);
- yield return null;
- }
- this.originalMaterial.SetColor("_EmissionColor", this.originalColor);
- if (!wasEmissive) this.originalMaterial.DisableKeyword("_EMISSION");
- isFlashing = false;
- }
- #endregion
- }
- }
|