Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -595,8 +595,8 @@ private void ProcessNetworkBehaviour(TypeDefinition typeDefinition, string[] ass

// override NetworkBehaviour.__getTypeName() method to return concrete type
{
var baseType = typeDefinition.BaseType.Resolve();
var baseGetTypeNameMethod = baseType.Methods.First(p => p.Name.Equals(nameof(NetworkBehaviour.__getTypeName)));
var networkBehaviour_TypeDef = m_NetworkBehaviour_TypeRef.Resolve();
var baseGetTypeNameMethod = networkBehaviour_TypeDef.Methods.First(p => p.Name.Equals(nameof(NetworkBehaviour.__getTypeName)));

var newGetTypeNameMethod = new MethodDefinition(
nameof(NetworkBehaviour.__getTypeName),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,30 @@ public void AccessNetworkObjectTest()
}

[Test]
public void GetNetworkBehaviourNameTest()
public void GivenClassDerivesFromNetworkBehaviour_GetTypeNameReturnsCorrectValue()
{
var gameObject = new GameObject(nameof(GetNetworkBehaviourNameTest));
var gameObject = new GameObject(nameof(GivenClassDerivesFromNetworkBehaviour_GetTypeNameReturnsCorrectValue));
var networkBehaviour = gameObject.AddComponent<EmptyNetworkBehaviour>();

Assert.AreEqual(nameof(EmptyNetworkBehaviour), networkBehaviour.__getTypeName());
}

[Test]
public void GivenClassDerivesFromNetworkBehaviourDerivedClass_GetTypeNameReturnsCorrectValue()
{
var gameObject = new GameObject(nameof(GivenClassDerivesFromNetworkBehaviourDerivedClass_GetTypeNameReturnsCorrectValue));
var networkBehaviour = gameObject.AddComponent<DerivedNetworkBehaviour>();

Assert.AreEqual(nameof(DerivedNetworkBehaviour), networkBehaviour.__getTypeName());
}

// Note: in order to repro https://github.com/Unity-Technologies/com.unity.netcode.gameobjects/issues/1078
// this child class must be defined before its parent to assure it is processed first by ILPP
public class DerivedNetworkBehaviour : EmptyNetworkBehaviour
{

}

public class EmptyNetworkBehaviour : NetworkBehaviour
{

Expand Down