forked from cgvr/DeltaVR
		
	
		
			
				
	
	
		
			96 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using FishNet.Connection;
 | 
						|
using FishNet.Object;
 | 
						|
using UnityEngine;
 | 
						|
 | 
						|
namespace FishNet.Component.Ownership
 | 
						|
{
 | 
						|
    /// <summary>
 | 
						|
    /// Adding this component allows any client to use predictive spawning on this prefab.
 | 
						|
    /// </summary>
 | 
						|
    public class PredictedSpawn : NetworkBehaviour
 | 
						|
    {
 | 
						|
        #region Serialized.
 | 
						|
        /// <summary>
 | 
						|
        /// True to allow clients to predicted spawn this object.
 | 
						|
        /// </summary>
 | 
						|
        public bool GetAllowSpawning() => _allowSpawning;
 | 
						|
        /// <summary>
 | 
						|
        /// Sets to allow predicted spawning. This must be set on client and server.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="value">New value.</param>
 | 
						|
        public void SetAllowSpawning(bool value) => _allowSpawning = value;
 | 
						|
        [Tooltip("True to allow clients to predicted spawn this object.")]
 | 
						|
        [SerializeField]
 | 
						|
        private bool _allowSpawning = true;
 | 
						|
        /// <summary>
 | 
						|
        /// True to allow clients to predicted despawn this object.
 | 
						|
        /// </summary>
 | 
						|
        public bool GetAllowDespawning() => _allowDespawning;
 | 
						|
        /// <summary>
 | 
						|
        /// Sets to allow predicted despawning. This must be set on client and server.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="value">New value.</param>
 | 
						|
        public void SetAllowDespawning(bool value) => _allowDespawning = value;
 | 
						|
        [Tooltip("True to allow clients to predicted despawn this object.")]
 | 
						|
        [SerializeField]
 | 
						|
        private bool _allowDespawning = true;
 | 
						|
        /// <summary>
 | 
						|
        /// 
 | 
						|
        /// </summary>
 | 
						|
        [Tooltip("True to allow clients to predicted set syncTypes prior to spawning the item. Set values will be applied on the server and sent to other clients.")]
 | 
						|
        [SerializeField]
 | 
						|
        private bool _allowSyncTypes = true;
 | 
						|
        /// <summary>
 | 
						|
        /// True to allow clients to predicted set syncTypes prior to spawning the item. Set values will be applied on the server and sent to other clients.
 | 
						|
        /// </summary>
 | 
						|
        public bool GetAllowSyncTypes() => _allowSyncTypes;
 | 
						|
        /// <summary>
 | 
						|
        /// Sets to allow syncTypes. This must be set on client and server.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="value">New value.</param>
 | 
						|
        public void SetAllowSyncTypes(bool value) => _allowSyncTypes = value;
 | 
						|
        #endregion
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Called on the client when trying to predicted spawn this object.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="owner">Owner specified to spawn with.</param>
 | 
						|
        /// <returns>True if able to spawn.</returns>
 | 
						|
        public virtual bool OnTrySpawnClient(NetworkConnection owner = null)
 | 
						|
        {
 | 
						|
            return GetAllowSpawning();
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        /// Called on the server when a client tries to predicted spawn this object.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="spawner">Connection trying to predicted spawn this object.</param>
 | 
						|
        /// <param name="owner">Owner specified to spawn with.</param>
 | 
						|
        /// <returns>True if able to spawn.</returns>
 | 
						|
        public virtual bool OnTrySpawnServer(NetworkConnection spawner, NetworkConnection owner = null)
 | 
						|
        {
 | 
						|
            return GetAllowSpawning();
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Called on the client when trying to predicted spawn this object.
 | 
						|
        /// </summary>
 | 
						|
        /// <returns>True if able to despawn.</returns>
 | 
						|
        public virtual bool OnTryDespawnClient()
 | 
						|
        {
 | 
						|
            return GetAllowDespawning();
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        /// Called on the server when a client tries to predicted despawn this object.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="despawner">Connection trying to predicted despawn this object.</param>
 | 
						|
        /// <returns>True if able to despawn.</returns>
 | 
						|
        public virtual bool OnTryDepawnServer(NetworkConnection despawner)
 | 
						|
        {
 | 
						|
            return GetAllowDespawning();
 | 
						|
        }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
} |