public static async Task GlobalRenderSystem() { // await Utils.Render.clearRootCanvas(); Family family = Family.All(typeof(RenderTargetsComponent), typeof(PositionComponent)).Get(); ImmutableList <Entity> famEntities = engine.GetEntitiesFor(family); foreach (Entity entity in famEntities) { RenderTargetsComponent renderTargetsComponent = entity.GetComponent <RenderTargetsComponent>(); PositionComponent positionComponent = entity.GetComponent <PositionComponent>(); renderTargetsComponent.targets.ForEach(async(RenderTarget target) => { unchecked { await DrawSingleTarget(target.targetId, (int)positionComponent.x, (int)positionComponent.y); } }); } }
public static async Task <Entity> GaniCharacter(Entity entityPart) { #if (CLIENT || EDITOR) if (!entityPart.HasComponent <RenderTargetsComponent>()) { entityPart.AddComponent(new RenderTargetsComponent()); } RenderTargetsComponent targetsComponent = entityPart.GetComponent <RenderTargetsComponent>(); // TimedSpriteComponent timedSpriteComponent = entityPart.GetComponent<TimedSpriteComponent>(); // Build the character's visuals (Guid shadowTex, Guid shadowRT) = await TexToTarget( await CreateTexture(Guid.NewGuid(), "sprites.png"), await CreateRenderTarget(Guid.NewGuid())); (Guid bodyTex, Guid bodyRT) = await TexToTarget( await CreateTexture(Guid.NewGuid(), "body.png"), await CreateRenderTarget(Guid.NewGuid())); (Guid headTex, Guid headRT) = await TexToTarget( await CreateTexture(Guid.NewGuid(), "head19.png"), await CreateRenderTarget(Guid.NewGuid())); targetsComponent.targets.Add(new RenderTarget() { targetId = shadowRT, textureId = shadowTex, targetName = "shadow", visible = true }); targetsComponent.targets.Add(new RenderTarget() { targetId = bodyRT, textureId = bodyTex, targetName = "body", visible = true }); targetsComponent.targets.Add(new RenderTarget() { targetId = headRT, textureId = headTex, targetName = "head", visible = true }); // targetsComponent.targets.Add(new RenderTarget() { // targetId=headRT, // textureId=headTex, // targetName="hat", // visible=false // }); #endif if (!entityPart.HasComponent <PositionComponent>()) { entityPart.AddComponent(new PositionComponent(0, 0)); } if (!entityPart.HasComponent <TimedSpriteComponent>()) { entityPart.AddComponent(new TimedSpriteComponent()); } //TODO CustomGaniComponent -> contains the customized gani properties (head, body, colors)... PositionComponent positionComponent = entityPart.GetComponent <PositionComponent>(); return(entityPart); }