95 lines
3.4 KiB
C#
95 lines
3.4 KiB
C#
using FishNet.CodeGenerating.Helping.Extension;
|
|
using FishNet.Object;
|
|
using FishNet.Object.Helping;
|
|
using FishNet.Object.Prediction;
|
|
using FishNet.Object.Synchronizing;
|
|
using MonoFN.Cecil;
|
|
|
|
|
|
namespace FishNet.CodeGenerating.Helping
|
|
{
|
|
internal class AttributeHelper : CodegenBase
|
|
{
|
|
#region Reflection references.
|
|
internal string ReplicateAttribute_FullName;
|
|
internal string ReconcileAttribute_FullName;
|
|
private string ServerAttribute_FullName;
|
|
private string ClientAttribute_FullName;
|
|
private string ServerRpcAttribute_FullName;
|
|
private string ObserversRpcAttribute_FullName;
|
|
private string TargetRpcAttribute_FullName;
|
|
private string SyncVarAttribute_FullName;
|
|
private string SyncObjectAttribute_FullName;
|
|
#endregion
|
|
|
|
public override bool ImportReferences()
|
|
{
|
|
ServerAttribute_FullName = typeof(ServerAttribute).FullName;
|
|
ClientAttribute_FullName = typeof(ClientAttribute).FullName;
|
|
ServerRpcAttribute_FullName = typeof(ServerRpcAttribute).FullName;
|
|
ObserversRpcAttribute_FullName = typeof(ObserversRpcAttribute).FullName;
|
|
TargetRpcAttribute_FullName = typeof(TargetRpcAttribute).FullName;
|
|
SyncVarAttribute_FullName = typeof(SyncVarAttribute).FullName;
|
|
SyncObjectAttribute_FullName = typeof(SyncObjectAttribute).FullName;
|
|
ReplicateAttribute_FullName = typeof(ReplicateAttribute).FullName;
|
|
ReconcileAttribute_FullName = typeof(ReconcileAttribute).FullName;
|
|
|
|
return true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns type of Rpc attributeFullName is for.
|
|
/// </summary>
|
|
/// <param name="attributeFullName"></param>
|
|
/// <returns></returns>
|
|
public RpcType GetRpcAttributeType(CustomAttribute ca)
|
|
{
|
|
if (ca.Is(ServerRpcAttribute_FullName))
|
|
return RpcType.Server;
|
|
else if (ca.Is(ObserversRpcAttribute_FullName))
|
|
return RpcType.Observers;
|
|
else if (ca.Is(TargetRpcAttribute_FullName))
|
|
return RpcType.Target;
|
|
else
|
|
return RpcType.None;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Returns type of Rpc attributeFullName is for.
|
|
/// </summary>
|
|
/// <param name="attributeFullName"></param>
|
|
/// <returns></returns>
|
|
internal QolAttributeType GetQolAttributeType(string attributeFullName)
|
|
{
|
|
if (attributeFullName == ServerAttribute_FullName)
|
|
return QolAttributeType.Server;
|
|
else if (attributeFullName == ClientAttribute_FullName)
|
|
return QolAttributeType.Client;
|
|
else
|
|
return QolAttributeType.None;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Returns if attribute if a SyncVarAttribute.
|
|
/// </summary>
|
|
/// <param name="attributeFullName"></param>
|
|
/// <returns></returns>
|
|
public bool IsSyncVarAttribute(string attributeFullName)
|
|
{
|
|
return (attributeFullName == SyncVarAttribute_FullName);
|
|
}
|
|
/// <summary>
|
|
/// Returns if attribute if a SyncObjectAttribute.
|
|
/// </summary>
|
|
/// <param name="attributeFullName"></param>
|
|
/// <returns></returns>
|
|
public bool IsSyncObjectAttribute(string attributeFullName)
|
|
{
|
|
return (attributeFullName == SyncObjectAttribute_FullName);
|
|
}
|
|
}
|
|
|
|
}
|