Exemple #1
0
    private static int GetOrCreateMeshIndex(Material material, InstanciedMeshHolders instanciedMeshHolders)
    {
        string text = string.Format("Letter_{0}", material.name);
        int    num  = instanciedMeshHolders.RetrieveMeshIndex(text, InstanciedMeshHelpers.LetterPixelsPerInstance, Matrix4x4.identity, material, instanciedMeshHolders.MaxPerBigLineInstance(InstanciedMeshHelpers.LetterPixelsPerInstance));

        if (num == -1)
        {
            Mesh mesh = AbstractDebugPatchRenderer.CreateDebugNameMesh();
            mesh.name = text;
            num       = instanciedMeshHolders.AddSmallMesh(new InstanciedMeshHolders.MeshAndSubMeshIndex(mesh, 0), InstanciedMeshHelpers.LetterPixelsPerInstance, Matrix4x4.identity, material, instanciedMeshHolders.MaxPerBigLineInstance(InstanciedMeshHelpers.LetterPixelsPerInstance));
            Diagnostics.Assert(instanciedMeshHolders.RetrieveMeshIndex(text, InstanciedMeshHelpers.LetterPixelsPerInstance, Matrix4x4.identity, material, instanciedMeshHolders.MaxPerBigLineInstance(InstanciedMeshHelpers.LetterPixelsPerInstance)) == num);
        }
        return(num);
    }
Exemple #2
0
    protected void AddText(string stringToWrite, float textSizeMultiplier, Vector3 absoluteWorldPosition)
    {
        this.CreateDebugInstanciedMeshBlockIFN();
        AgeFont ageFont           = this.debugGraphicData.AgeFont;
        int     orCreateMeshIndex = AbstractDebugPatchRenderer.GetOrCreateMeshIndex(this.debugGraphicData.Material, this.instanciedMeshHolders);
        float   d    = textSizeMultiplier * this.debugGraphicData.TextSize;
        float   num  = 0f;
        float   num2 = 0f;
        float   num3 = 0f;
        float   num4 = 0f;
        float   num5 = 0f;
        float   num6 = 0f;

        for (int i = 0; i < stringToWrite.Length; i++)
        {
            char c = stringToWrite[i];
            if (c == '\n')
            {
                num2 -= ageFont.LineHeight;
                num   = 0f;
            }
            else
            {
                char    nextCharCode = (i + 1 >= stringToWrite.Length) ? '\0' : stringToWrite[i];
                Vector2 vector;
                Vector2 vector2;
                Rect    rect;
                float   num7;
                ageFont.GetCharInfo(c, nextCharCode, out vector, out vector2, out rect, out num7);
                num3 = Math.Min(num + vector2.x, num3);
                num4 = Math.Max(num + vector2.x + vector.x, num4);
                num5 = Math.Min(num5, -vector2.y - vector.y + num2);
                num6 = Math.Max(num6, -vector2.y + num2);
                num += num7;
            }
        }
        float num8  = -(num5 + num6) * 0.5f;
        float num9  = -(num3 + num4) * 0.5f;
        float num10 = num9;
        float num11 = num8;

        for (int j = 0; j < stringToWrite.Length; j++)
        {
            char c2 = stringToWrite[j];
            if (c2 == '\n')
            {
                num11 -= ageFont.LineHeight;
                num10  = num9;
            }
            else
            {
                char    nextCharCode2 = (j + 1 >= stringToWrite.Length) ? '\0' : stringToWrite[j];
                Vector2 vector3;
                Vector2 vector4;
                Rect    rect2;
                float   num12;
                ageFont.GetCharInfo(c2, nextCharCode2, out vector3, out vector4, out rect2, out num12);
                if (vector3.x > 0f && vector3.y > 0f)
                {
                    Vector3 a = new Vector3(num10, 0f, num11 + num8) + new Vector3(vector4.x, 0f, -vector4.y) - new Vector3(0f, 0f, vector3.y);
                    int     minPixelIndexX = Mathf.RoundToInt(rect2.xMin * (float)this.debugGraphicData.FontTextureWidth);
                    int     minPixelIndexY = Mathf.RoundToInt(rect2.yMin * (float)this.debugGraphicData.FontTextureHeight);
                    int     pixelCountX    = Mathf.RoundToInt(rect2.width * (float)this.debugGraphicData.FontTextureWidth);
                    int     pixelCountY    = Mathf.RoundToInt(rect2.height * (float)this.debugGraphicData.FontTextureHeight);
                    InstanciedMeshHelpers.AddLetterInstance(this.instanciedMeshHolders, this.debugTextInstanciedMeshBlock, absoluteWorldPosition + d * a, minPixelIndexX, minPixelIndexY, pixelCountX, pixelCountY, vector3 * d, orCreateMeshIndex, false);
                }
                num10 += num12;
            }
        }
    }