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

    Incomplete IssueRequired information is missing. See response for more information.Waiting For InformationNot enough information has been supplied to resolve this issue.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions