示例#1
0
        public static void UpdateLocals(this IGridMember gridMember, GameObject blockGO)
        {
            var blueprintBlock = gridMember.BlueprintBlock;

            blockGO.transform.localRotation = blueprintBlock.QuaternionRotation;
            blockGO.transform.localPosition = gridMember.GetLocalPosition();
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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));
        }
示例#5
0
 public static BlockCategory GetMemberCategory(this IGridMember gridMember)
 {
     return(gridMember.BlueprintBlock.Template.category);
 }
示例#6
0
 public static bool GetIsController(this IGridMember gridMember)
 {
     return(gridMember.GetMemberCategory().Is(BlockCategory.Controller));
 }