/// <summary> /// Стандартный конструктор /// </summary> /// <param name="parDepth">Глубина</param> /// <param name="parX">Координата X</param> /// <param name="parY">Координата Y</param> /// <param name="parStringToRender">Текстовая строка</param> /// <param name="parFont">Шрифт</param> /// <param name="parColor">Цвет</param> /// <param name="parScaleX">Масштабирование по X</param> /// <param name="parScaleY">Масштабирование по Y</param> /// <param name="parHAlign">Горизонтальное выравнивание</param> /// <param name="parVAlign">Вертикальное выравнивание</param> public RenderingString(double parDepth, double parX, double parY, string parStringToRender, SubassetDataFont parFont, Color parColor, double parScaleX = 1.0, double parScaleY = 1.0, EHorizontalAlign parHAlign = EHorizontalAlign.Left, EVerticalAlign parVAlign = EVerticalAlign.Top) { LinkedList <SubassetDataSprite> usedSprites = parFont.GetSymbolsSprites(parStringToRender); SpritesToRender = new LinkedList <RenderingSprite>(); double totalWidth = 0; double totalHeight = 0; foreach (var usedSprite in usedSprites) { totalWidth += usedSprite.Width; if (usedSprite.Height > totalHeight) { totalHeight = usedSprite.Height; } } X = OpenGlUtil.GetLeftXCoordBasedOnHorizontalAlign(parX, totalWidth, parHAlign, parScaleX); Y = OpenGlUtil.GetTopYCoordBasedOnVerticalAlign(parY, totalHeight, parVAlign, parScaleY); totalWidth = 0; //totalHeight = 0; foreach (var usedSprite in usedSprites) { SpritesToRender.AddLast(new RenderingSprite(usedSprite, X + totalWidth, Y, 0, parColor, parDepth, parScaleX, parScaleY, EHorizontalAlign.Left, EVerticalAlign.Top)); totalWidth += usedSprite.Width * parScaleX; } Depth = parDepth; }
/// <summary> /// Стандартный конструктор /// </summary> /// <param name="parSprite">Производный ассет спрайта</param> /// <param name="parX">Координата X</param> /// <param name="parY">Координата Y</param> /// <param name="parRotationDegrees">Поворот в градусах</param> /// <param name="parBlendColor">Цвет</param> /// <param name="parDepth">Глубина</param> /// <param name="parScaleX">Масштабирование по X</param> /// <param name="parScaleY">Масштабирование по Y</param> /// <param name="parHAlign">Горизонтальное выравнивание</param> /// <param name="parVAlign">Вертикальное выравнивание</param> /// <param name="parRotationPivotX">Точка опоры для поворота, координата X</param> /// <param name="parRotationPivotY">Точка опоры для поворота, координата Y</param> public RenderingSprite(SubassetDataSprite parSprite, double parX, double parY, double parRotationDegrees, Color parBlendColor, double parDepth, double parScaleX = 1.0, double parScaleY = 1.0, EHorizontalAlign parHAlign = EHorizontalAlign.Left, EVerticalAlign parVAlign = EVerticalAlign.Top, double parRotationPivotX = 0, double parRotationPivotY = 0) { Sprite = parSprite; X = OpenGlUtil.GetLeftXCoordBasedOnHorizontalAlign(parX, parSprite.Width, parHAlign, parScaleX); Y = OpenGlUtil.GetTopYCoordBasedOnVerticalAlign(parY, parSprite.Height, parVAlign, parScaleY); Depth = parDepth; RotationDegrees = parRotationDegrees; BlendColor = parBlendColor; ScaleX = parScaleX; ScaleY = parScaleY; PivotX = parRotationPivotX; PivotY = parRotationPivotY; }