Skip to content

Commit 08f60a8

Browse files
authored
fix il codegen: should skip process type which is not an INodeData (#156)
* able to ignore certain behavior node for testing purpose. * fix il codegen: should skip process type which is not an `INodeData` * update version.
1 parent 6853934 commit 08f60a8

15 files changed

+56
-15
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,5 @@ Assets/Plugins/Animancer/Examples.meta
6767
/Packages/samples/Samples
6868
/Packages/samples/Samples.meta
6969
!/Packages/samples/Samples~
70+
Assets/Plugins/
71+
Assets/Plugins.meta

Packages/codegen.meta

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Packages/codegen/Editor/AccessorAttributeILPostProcessor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public bool Generate(AssemblyDefinition assemblyDefinition)
1515
{
1616
Logger.Debug($"generate accessor attributes for {assemblyDefinition.Name}");
1717
var methods = assemblyDefinition.MainModule.GetAllTypes()
18-
.Where(type => typeof(INodeData).IsAssignableFrom(type) && type.IsClass && !type.IsAbstract)
18+
.Where(type => type.IsClass && !type.IsAbstract && type.TypeImplements(typeof(INodeData)))
1919
.SelectMany(FetchNodeDataMethods)
2020
.Where(method => !method.CustomAttributes.FindAccessorAttributes().Any())
2121
;

Packages/codegen/Editor/CecilExtension.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33
using System.Linq;
44
using System.Reflection;
5+
using EntitiesBT.Core;
56
using JetBrains.Annotations;
67
using Mono.Cecil;
78
using Mono.Collections.Generic;
@@ -177,5 +178,7 @@ public static string GetCodeName(this FieldDefinition fieldDefinition)
177178
}
178179
return name;
179180
}
181+
public static bool IsINodeDataStruct(this TypeDefinition typeDefinition) =>
182+
typeDefinition.TypeImplements(typeof(INodeData)) && typeDefinition.IsValueType();
180183
}
181184
}

Packages/codegen/Editor/Unity.EntitiesBT.CodeGen.asmdef

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
"name": "Unity.EntitiesBT.CodeGen",
33
"rootNamespace": "EntitiesBT.CodeGen.Editor",
44
"references": [
5-
"GUID:c7babe7561eb244059259745ef27b866"
5+
"GUID:c7babe7561eb244059259745ef27b866",
6+
"GUID:3d9288551f5f1b14b9fcbd11fd97a391"
67
],
78
"includePlatforms": [],
89
"excludePlatforms": [],

Packages/codegen/EntitiesExtension.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"reference": "GUID:3d9288551f5f1b14b9fcbd11fd97a391"
3+
}

Packages/codegen/EntitiesExtension/Unity.Entities.CodeGen.Ref.asmref.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using System;
2+
using Mono.Cecil;
3+
using Unity.Entities.CodeGen;
4+
5+
namespace EntitiesBT.CodeGen.Editor
6+
{
7+
public static class UnityEntitiesExtensions
8+
{
9+
public static bool IsValueType(this TypeReference typeReference) =>
10+
TypeReferenceExtensions.IsValueType(typeReference);
11+
12+
public static bool TypeImplements(this TypeReference typeReference, Type interfaceType) =>
13+
TypeReferenceExtensions.TypeImplements(typeReference, interfaceType);
14+
}
15+
}

Packages/codegen/EntitiesExtension/UnityEntitiesExtensions.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)