Skip to content

Enum generics NetworkBehaviour classes throws at runtime #999

@oguzhanakpulat

Description

@oguzhanakpulat

Unity version: 2022.3.62f2
FishNet version: 4.6.20 PRO

Using enum generics in NetworkBehaviour classes with Rpcs it throws this at runtime

Image
public abstract class FooBase<TBar> : NetworkBehaviour
    where TBar : Enum

{
    private readonly SyncVar<int> _syncVar = new();

    private TBar _bar;


    [ServerRpc] //!!! IF SERVER RPC EXISTS IF THROWS AN ERROR
    private void Quux(int value)
    {
    }
}

public enum EBar
{
    A = 0,
    B = 1,
    C = 2,
}

public class Foo : FooBase<EBar>
{
}

ERROR LOG

BadImageFormatException: Method with open type while not compiling gshared
Foo.NetworkInitialize___Early () (at <1a0fdd6cad3d4f069493378c4eaae67e>:0)
Foo.Awake () (at <1a0fdd6cad3d4f069493378c4eaae67e>:0)
UnityEngine.Object:Instantiate(NetworkObject, Vector3, Quaternion, Transform)
FishNet.Utility.Performance.DefaultObjectPool:<RetrieveObject>g__GetFromInstantiate|6_0(<>c__DisplayClass6_0&) (at Assets/FishNet/Runtime/Utility/Performance/DefaultObjectPool.cs:125)
FishNet.Utility.Performance.DefaultObjectPool:RetrieveObject(Int32, UInt16, ObjectPoolRetrieveOption, Transform, Nullable`1, Nullable`1, Nullable`1, Boolean) (at Assets/FishNet/Runtime/Utility/Performance/DefaultObjectPool.cs:96)
FishNet.Managing.NetworkManager:GetPooledInstantiated(Int32, UInt16, ObjectPoolRetrieveOption, Transform, Nullable`1, Nullable`1, Nullable`1, Boolean) (at Assets/FishNet/Runtime/Managing/NetworkManager.ObjectPooling.cs:95)
FishNet.Managing.NetworkManager:GetPooledInstantiated(NetworkObject, Vector3, Quaternion, Boolean) (at Assets/FishNet/Runtime/Managing/NetworkManager.ObjectPooling.cs:24)
FishNet.Component.Spawning.PlayerSpawner:SceneManager_OnClientLoadedStartScenes(NetworkConnection, Boolean) (at Assets/FishNet/Runtime/Generated/Component/Spawning/PlayerSpawner.cs:107)
FishNet.Managing.Scened.SceneManager:TryInvokeLoadedStartScenes(NetworkConnection, Boolean) (at Assets/FishNet/Runtime/Managing/Scened/SceneManager.cs:502)
FishNet.Managing.Scened.SceneManager:OnClientLoadedScenes(NetworkConnection, ClientScenesLoadedBroadcast, Channel) (at Assets/FishNet/Runtime/Managing/Scened/SceneManager.cs:706)
FishNet.Managing.Scened.SceneManager:OnClientSentEmptyStartScenes(NetworkConnection, EmptyStartScenesBroadcast, Channel) (at Assets/FishNet/Runtime/Managing/Scened/SceneManager.cs:605)
FishNet.Broadcast.Helping.ClientBroadcastHandler`1:InvokeHandlers(NetworkConnection, PooledReader, Channel) (at Assets/FishNet/Runtime/Serializing/Helping/Broadcasts.cs:98)
FishNet.Managing.Server.ServerManager:ParseBroadcast(PooledReader, NetworkConnection, Channel) (at Assets/FishNet/Runtime/Managing/Server/ServerManager.Broadcast.cs:94)
FishNet.Managing.Server.ServerManager:ParseReceived(ServerReceivedDataArgs) (at Assets/FishNet/Runtime/Managing/Server/ServerManager.cs:845)
FishNet.Managing.Server.ServerManager:Transport_OnServerReceivedData(ServerReceivedDataArgs) (at Assets/FishNet/Runtime/Managing/Server/ServerManager.cs:702)
FishNet.Transporting.Tugboat.Tugboat:HandleServerReceivedDataArgs(ServerReceivedDataArgs) (at Assets/FishNet/Runtime/Transporting/Transports/Tugboat/Tugboat.cs:304)
FishNet.Transporting.Tugboat.Server.ServerSocket:IterateIncoming() (at Assets/FishNet/Runtime/Transporting/Transports/Tugboat/Core/ServerSocket.cs:469)
FishNet.Transporting.Tugboat.Tugboat:IterateIncoming(Boolean) (at Assets/FishNet/Runtime/Transporting/Transports/Tugboat/Tugboat.cs:235)
FishNet.Managing.Transporting.TransportManager:IterateIncoming(Boolean) (at Assets/FishNet/Runtime/Managing/Transporting/TransportManager.cs:750)
FishNet.Managing.Timing.TimeManager:TryIterateData(Boolean) (at Assets/FishNet/Runtime/Managing/Timing/TimeManager.cs:1111)
FishNet.Managing.Timing.TimeManager:IncreaseTick() (at Assets/FishNet/Runtime/Managing/Timing/TimeManager.cs:733)
FishNet.Managing.Timing.TimeManager:<TickUpdate>g__MethodLogic|113_0() (at Assets/FishNet/Runtime/Managing/Timing/TimeManager.cs:392)
FishNet.Managing.Timing.TimeManager:TickUpdate() (at Assets/FishNet/Runtime/Managing/Timing/TimeManager.cs:380)
FishNet.Transporting.NetworkReaderLoop:Update() (at Assets/FishNet/Runtime/Transporting/NetworkReaderLoop.cs:29)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions