public static void UpdateLocals(this IGridMember gridMember, GameObject blockGO) { var blueprintBlock = gridMember.BlueprintBlock; blockGO.transform.localRotation = blueprintBlock.QuaternionRotation; blockGO.transform.localPosition = gridMember.GetLocalPosition(); }
public static void SetupGameObject(this IGridMember gridMember, GameObject blockGO) { var blueprintBlock = gridMember.BlueprintBlock; var gridAnchor = gridMember.GridAnchor; blockGO.name = $"{blueprintBlock.Template.displayId} {gridAnchor}"; var spriteRenderer = blockGO.GetComponent <SpriteRenderer>(); gridMember.BlueprintBlock.SetSpriteRendererFlips(spriteRenderer); gridMember.UpdateLocals(blockGO); }
public static Vector2 GetLocalPosition(this IGridMember gridMember) { var size = gridMember.BlueprintBlock.Template.size - Vector2Int.one; var offset = new Vector2 { x = size.x / 2f, y = size.y / 2f }.Rotate(gridMember.BlueprintBlock.Rotation); offset *= gridMember.BlueprintBlock.FlipVector; return(offset + gridMember.GridAnchor); }
public static IEnumerable <Vector2Int> GetOccupiedTilesByAnchor(IGridMember gridMember) { var block = gridMember.BlueprintBlock; var gridAnchor = gridMember.GridAnchor; var area = block.Template.size.Rotate(block.Rotation); if (block.flippedX) { area.x = -area.x; } if (block.flippedY) { area.y = -area.y; } return(MathUtils.EnumerateVectors(area, gridAnchor)); }
public static BlockCategory GetMemberCategory(this IGridMember gridMember) { return(gridMember.BlueprintBlock.Template.category); }
public static bool GetIsController(this IGridMember gridMember) { return(gridMember.GetMemberCategory().Is(BlockCategory.Controller)); }