public IEnumerable <SyntaxNode> GetComponent(TranslationContext context, ExpressionSyntax entity, Type componentType) { context.RecordComponentAccess( context.IterationContext, componentType.GenerateTypeHandle(context.IterationContext.Stencil), RoslynEcsTranslator.AccessMode.Read); yield return(IdentifierName(context.IterationContext.GetComponentDataName(componentType))); }
public IEnumerable <SyntaxNode> GetComponent(TranslationContext context, ExpressionSyntax entity, Type componentType) { var type = TypeSystem.BuildTypeSyntax(componentType); context.RecordComponentAccess( context.IterationContext, componentType.GenerateTypeHandle(context.IterationContext.Stencil), RoslynEcsTranslator.AccessMode.Read); var expressionId = typeof(ISharedComponentData).IsAssignableFrom(componentType) ? nameof(EntityManager.GetSharedComponentData) : nameof(EntityManager.GetComponentData); yield return(RoslynBuilder.MethodInvocation( expressionId, IdentifierName(nameof(EntityManager)), new[] { Argument(entity) }, new[] { type })); }