Example #1
0
    void Start()
    {
        mLayer = GetComponent <GiraffeLayer>();
        mAtlas = mLayer.atlas;

        mBoxes    = new GiraffeSprite[4];
        mBoxes[0] = mAtlas.GetSprite("Box");
        mBoxes[1] = mAtlas.GetSprite("Box1");

        mCount        = 50 + UnityEngine.Random.Range(1, 20);
        mTranslations = new Vector2[mCount];
        mRotations    = new float[mCount];
        mScales       = new Vector2[mCount];

        for (int i = 0; i < mCount; i++)
        {
            float time = UnityEngine.Random.Range(0.0f, 8.0f);
            float cx   = UnityEngine.Random.Range(0, Screen.width);
            float cy   = UnityEngine.Random.Range(0, Screen.width);

            GiraffeSprite sprite = mBoxes[i % 2];

            mTranslations[i] = new Vector2(cx, cy);
            mRotations[i]    = time;
            mScales[i]       = new Vector2(sprite.width, sprite.height) * Mathf.Sin(mRotations[i]) * 8.0f;
        }
    }
Example #2
0
        public void Add(Matrix2D transform, GiraffeSprite sprite)
        {
            // 0---1
            // |\  |
            // | \ |
            // 3--\2

            transform.Transform(-0.5f, -0.5f, ref tP0.x, ref tP0.y);
            tP0.x += quadOrigin.x;
            tP0.y += quadOrigin.y;

            tU0.x = sprite.x0;
            tU0.y = sprite.y1;

            transform.Transform(0.5f, -0.5f, ref tP1.x, ref tP1.y);
            tP1.x += quadOrigin.x;
            tP1.y += quadOrigin.y;

            tU1.x = sprite.x1;
            tU1.y = sprite.y1;

            transform.Transform(0.5f, 0.5f, ref tP2.x, ref tP2.y);
            tP2.x += quadOrigin.x;
            tP2.y += quadOrigin.y;

            tU2.x = sprite.x1;
            tU2.y = sprite.y0;

            transform.Transform(-0.5f, 0.5f, ref tP3.x, ref tP3.y);
            tP3.x += quadOrigin.x;
            tP3.y += quadOrigin.y;

            tU3.x = sprite.x0;
            tU3.y = sprite.y0;

            mBuffer.position[mPositionIterator]  = tP0;
            mBuffer.uv[mPositionIterator]        = tU0;
            mBuffer.colours[mPositionIterator++] = colour;

            mBuffer.position[mPositionIterator]  = tP1;
            mBuffer.uv[mPositionIterator]        = tU1;
            mBuffer.colours[mPositionIterator++] = colour;

            mBuffer.position[mPositionIterator]  = tP2;
            mBuffer.uv[mPositionIterator]        = tU2;
            mBuffer.colours[mPositionIterator++] = colour;

            mBuffer.position[mPositionIterator]  = tP3;
            mBuffer.uv[mPositionIterator]        = tU3;
            mBuffer.colours[mPositionIterator++] = colour;

            mBuffer.indexes[mIndexIterator++] = mIndex;
            mBuffer.indexes[mIndexIterator++] = mIndex + 1;
            mBuffer.indexes[mIndexIterator++] = mIndex + 2;

            mBuffer.indexes[mIndexIterator++] = mIndex;
            mBuffer.indexes[mIndexIterator++] = mIndex + 2;
            mBuffer.indexes[mIndexIterator++] = mIndex + 3;
            mIndex += 4;
        }
Example #3
0
    void BuildGrid()
    {
        int glyphCount = mImporterString.Length;

        mFont.glyphs = new GiraffeFontGlyph[glyphCount];

        GiraffeSprite sprite       = mFont.atlas.GetSprite(mFont.spriteName);
        int           charsPerLine = sprite.width / mImporterCharWidth;

        for (int i = 0; i < glyphCount; i++)
        {
            int cx = i % charsPerLine;
            int cy = i / charsPerLine;

            GiraffeFontGlyph glyph = new GiraffeFontGlyph()
            {
                character = mImporterString[i],
                width     = mImporterCharWidth,
                height    = mImporterCharHeight,
                x         = cx * mImporterCharWidth,
                y         = sprite.height - ((cy + 1) * mImporterCharHeight),
                xAdvance  = mImporterCharWidth,
                xOffset   = 0,
                yOffset   = 0
            };

            mFont.glyphs[i] = glyph;
        }

        mFont.lineHeight   = mImporterCharHeight;
        mFont.spaceAdvance = mImporterCharWidth;

        EditorUtility.SetDirty(mFont);
        mImporterType = ImporterType.None;
    }
Example #4
0
    void RefreshGridPreview()
    {
        mImporterRefreshPreview = false;

        if (mFont.atlas == null)
        {
            for (int i = 0; i < kPreviewTextLength; i++)
            {
                mPreviewCoords[i] = new Rect(0, 0, 0, 0);
                mPreviewRects[i]  = new Rect(0, 0, 0, 0);
            }
            return;
        }

        mPreviewRectWidth  = kPreviewTextLength * mImporterCharWidth;
        mPreviewRectHeight = mImporterCharHeight;

        GiraffeSprite sprite    = mFont.atlas.GetSprite(mFont.spriteName);
        float         invWidth  = 1.0f / mFont.atlas.texture.width;
        float         invHeight = 1.0f / mFont.atlas.texture.height;

        sprite.Refresh(invWidth, invHeight);

        float cw = mImporterCharWidth * invWidth;
        float ch = mImporterCharHeight * invHeight;

        int charsPerLine = sprite.width / mImporterCharWidth;

        if (charsPerLine == 0)
        {
            for (int i = 0; i < kPreviewTextLength; i++)
            {
                mPreviewCoords[i] = new Rect(0, 0, mImporterCharWidth, mImporterCharHeight);
                mPreviewRects[i]  = new Rect(0, 0, 0, 0);
            }
            return;
        }

        for (int i = 0; i < kPreviewTextLength; i++)
        {
            mPreviewCoords[i] = new Rect(i * mImporterCharWidth, 0, mImporterCharWidth, mImporterCharHeight);

            char c = kPreviewText[i];
            int  p = mImporterString.IndexOf(c);
            if (p == -1)
            {
                mPreviewRects[i] = new Rect(0, 0, 0, 0);
                continue;
            }

            int x = p % charsPerLine;
            int y = p / charsPerLine;

            float x0 = sprite.x0 + cw * x;
            float y0 = sprite.y1 - (ch * y) - ch;

            mPreviewRects[i] = new Rect(x0, y0, cw, ch);
        }
    }
Example #5
0
    public GiraffeSprite GetSprite(String name)
    {
        GiraffeSprite sprite = FindSprite(name);

        if (sprite == null)
        {
            sprite = whiteSprite;
        }
        return(ProcessSprite(sprite));
    }
Example #6
0
 GiraffeSprite ProcessSprite(GiraffeSprite sprite)
 {
     if (sprite.refreshNeeded)
     {
         float invTexWidth  = 1.0f / texture.width;
         float invTexHeight = 1.0f / texture.height;
         sprite.Refresh(invTexWidth, invTexHeight);
     }
     return(sprite);
 }
Example #7
0
 void Start()
 {
     Crosshair    = Layer.atlas.GetSprite("Crosshair");
     Floppy       = Layer.atlas.GetSprite("Button_Floppy");
     Power_Up     = Layer.atlas.GetSprite("Power_Up");
     Power_Down   = Layer.atlas.GetSprite("Power_Down");
     KeyboardMode = Layer.atlas.GetSprite("KeyboardMode");
     PauseButton  = Layer.atlas.GetSprite("Button_Pause");
     Draw3d();
 }
    void RefreshPreview()
    {
        mAnimationSprite = null;

        if (mAnimation.atlas != null)
        {
            bool isPlayingIgnored = true;
            mAnimationSpriteId = GiraffeSpriteAnimation.Animate(mAnimation, mAnimationTime, ref isPlayingIgnored);
            mAnimationSprite   = mAnimation.frameSprites[mAnimationSpriteId];
        }
    }
Example #9
0
        public void Add(int x, int y, int w, int h, GiraffeSprite sprite)
        {
            // 0---1
            // |\  |
            // | \ |
            // 3--\2

            tP0.x = (x + quadOrigin.x);
            tP0.y = (y + quadOrigin.y);
            tU0.x = sprite.x0;
            tU0.y = sprite.y1;

            tP1.x = (x + w + quadOrigin.x);
            tP1.y = (y + quadOrigin.y);
            tU1.x = sprite.x1;
            tU1.y = sprite.y1;

            tP2.x = (x + w + quadOrigin.x);
            tP2.y = (y + h + quadOrigin.y);
            tU2.x = sprite.x1;
            tU2.y = sprite.y0;

            tP3.x = (x + quadOrigin.x);
            tP3.y = (y + h + quadOrigin.y);
            tU3.x = sprite.x0;
            tU3.y = sprite.y0;

            mBuffer.position[mPositionIterator]  = tP0;
            mBuffer.uv[mPositionIterator]        = tU0;
            mBuffer.colours[mPositionIterator++] = colour;

            mBuffer.position[mPositionIterator]  = tP1;
            mBuffer.uv[mPositionIterator]        = tU1;
            mBuffer.colours[mPositionIterator++] = colour;

            mBuffer.position[mPositionIterator]  = tP2;
            mBuffer.uv[mPositionIterator]        = tU2;
            mBuffer.colours[mPositionIterator++] = colour;

            mBuffer.position[mPositionIterator]  = tP3;
            mBuffer.uv[mPositionIterator]        = tU3;
            mBuffer.colours[mPositionIterator++] = colour;

            mBuffer.indexes[mIndexIterator++] = mIndex;
            mBuffer.indexes[mIndexIterator++] = mIndex + 1;
            mBuffer.indexes[mIndexIterator++] = mIndex + 2;

            mBuffer.indexes[mIndexIterator++] = mIndex;
            mBuffer.indexes[mIndexIterator++] = mIndex + 2;
            mBuffer.indexes[mIndexIterator++] = mIndex + 3;
            mIndex += 4;
        }
Example #10
0
    void FixedUpdate()
    {
        mLayer.Begin(mCount);

        for (int i = 0; i < mCount; i++)
        {
            GiraffeSprite sprite = mBoxes[i % 2];
            mRotations[i] += Time.fixedDeltaTime;
            mScales[i]     = new Vector2(sprite.width, sprite.height) * Mathf.Sin(mRotations[i]) * 8.0f;
            Matrix2D transform = Matrix2D.TRS(mTranslations[i], mRotations[i], mScales[i]);
            mLayer.Add(transform, sprite);
        }

        mLayer.End();
    }
Example #11
0
        public void AddSpriteButton(int name, int x, int y, string spriteName)
        {
            GiraffeSprite sprite       = Widget.Layer.atlas.GetSprite(spriteName);
            SpriteButton  spriteButton = new SpriteButton();

            spriteButton.x0         = x;
            spriteButton.y0         = y;
            spriteButton.tw         = sprite.width;
            spriteButton.x1         = x + sprite.width;
            spriteButton.y1         = y + sprite.height;
            spriteButton.sprite     = sprite;
            spriteButton.estimation = spriteButton.Estimate();
            widgets.Add(name, spriteButton);
            Dirty = true;
        }
Example #12
0
    void UpdateAnimation()
    {
        if (mSpriteAnimation == null)
        {
            return;
        }

        int frame = GiraffeSpriteAnimation.Animate(mSpriteAnimation, mTime, ref mPlaying);

        if (frame != mCurrentFrame)
        {
            GiraffeSprite sprite = mSpriteAnimation.frameSprites[frame];
            mRenderer.sprite = sprite;
            mCurrentFrame    = frame;
        }
    }
Example #13
0
 public void FetchSprites()
 {
     frameSprites = new GiraffeSprite[frames.Count];
     if (atlas == null)
     {
         for (int i = 0; i < frames.Count; i++)
         {
             frameSprites[i] = new GiraffeSprite();
         }
     }
     else
     {
         for (int i = 0; i < frames.Count; i++)
         {
             frameSprites[i] = atlas.GetSprite(frames[i]);
         }
     }
 }
Example #14
0
    void Initialise()
    {
        sprite = atlas.GetSprite(spriteName);

        float invTexWidth  = 1.0f / atlas.texture.width;
        float invTexHeight = 1.0f / atlas.texture.height;

        characters        = new Dictionary <char, GiraffeFontGlyph>(glyphs.Length);
        characterRangeMin = char.MaxValue;
        characterRangeMax = char.MinValue;

        for (int i = 0; i < glyphs.Length; i++)
        {
            GiraffeFontGlyph glyph = glyphs[i];

            char c = (char)glyph.character;
            characters.Add(c, glyph);

            if (c < characterRangeMin)
            {
                characterRangeMin = c;
            }

            if (c > characterRangeMax)
            {
                characterRangeMax = c;
            }


            GiraffeSprite glyphSprite = new GiraffeSprite();
            glyph.sprite = glyphSprite;

            glyphSprite.left   = glyph.x + sprite.left;
            glyphSprite.top    = glyph.y + sprite.top;
            glyphSprite.width  = glyph.width;
            glyphSprite.height = glyph.height;

            glyphSprite.Refresh(invTexWidth, invTexHeight);
        }
    }
Example #15
0
 public void Add(int x, int y, int w, int h, GiraffeSprite sprite)
 {
     mLayer.Add(x, y, w, h, sprite);
 }
Example #16
0
 void Start()
 {
     mLayer = GetComponent <GiraffeLayer>();
     mWhite = mLayer.atlas.GetSprite("Giraffe/White");
 }
Example #17
0
    void Start()
    {
        if (DX8.FirstRun)
        {
            Mode         = PauseMode.Welcome;
            DX8.FirstRun = false;
            PlayerPrefs.SetInt("HasRun", 1);
        }
        else
        {
            Mode = PauseMode.Options;
        }

        White        = Layer.atlas.GetSprite("Gorilla/White");
        Crosshair    = Layer.atlas.GetSprite("Crosshair");
        Floppy       = Layer.atlas.GetSprite("Button_Floppy");
        Power_Up     = Layer.atlas.GetSprite("Power_Up");
        Power_Down   = Layer.atlas.GetSprite("Power_Down");
        Eject_Up     = Layer.atlas.GetSprite("Eject_Up");
        Eject_Down   = Layer.atlas.GetSprite("Eject_Down");
        Button_Up    = Layer.atlas.GetSprite("Button_Up");
        Button_Down  = Layer.atlas.GetSprite("Button_Down");
        Button_Light = Layer.atlas.GetSprite("Button_Light");
        Button_Dark  = Layer.atlas.GetSprite("Button_Dark");
        Checkbox     = Layer.atlas.GetSprite("Check");
        Ghost13      = Layer.atlas.GetSprite("Ghost13");
        Ghost75      = Layer.atlas.GetSprite("Ghost75");
        Ghost150     = Layer.atlas.GetSprite("Ghost150");

        kAboutSize = 0;

        for (int i = 0; i < Strings.kAbout.Length; i++)
        {
            kAboutSize += Font.Estimate(Strings.kAbout[i]);
        }

        kControlsSize = 0;

        for (int i = 0; i < Strings.kControls.Length; i++)
        {
            kControlsSize += Font.Estimate(Strings.kControls[i]);
        }

        kNotEmptyDriveSize = Font.Estimate(Strings.kNotEmptyDrive);

        Scale = Layer.scale;

        WindowW = (50 * 9);
        WindowH = (25 * 9);
        WindowX = Screen.width / 2 / Scale - WindowW / 2;
        WindowY = Screen.height / 2 / Scale - WindowH / 2;

        welcomeHitboxes.Clear();
        welcomeHitboxes.Add(new Hitbox(WindowX + WindowW / 2 - 100, WindowY + WindowH - 14, 100, kAbout_Start, "Start", Font, Gadget.Button));
        welcomeHitboxes.Add(new Hitbox(WindowX + WindowW / 2 + 100, WindowY + WindowH - 14, 100, kAbout_Quit, "Quit", Font, Gadget.Button));

        EstimateQuadSizes(ref welcomeHitboxes_Size, ref welcomeHitboxes);

        tabHitBoxes.Clear();
        tabHitBoxes.Add(new Hitbox(WindowX + 75 * 0, WindowY, 75, kTabs_Controls, "Controls", Font, Gadget.Button));
        tabHitBoxes.Add(new Hitbox(WindowX + 75 * 1, WindowY, 75, kTabs_Options, "Options", Font, Gadget.Button));
        tabHitBoxes.Add(new Hitbox(WindowX + 75 * 2, WindowY, 75, kTabs_Disks, "Disks", Font, Gadget.Button));
        tabHitBoxes.Add(new Hitbox(WindowX + 75 * 3, WindowY, 75, kTabs_About, "About", Font, Gadget.Button));
        tabHitBoxes.Add(new Hitbox(WindowX + WindowW / 2 - (150 / 2), WindowY + WindowH - 15, 150, kTabs_Resume, "[TAB] Resume", Font, Gadget.Button));
        tabHitBoxes.Add(new Hitbox(WindowX + WindowW - 75, WindowY, 75, kTabs_Quit, "Quit", Font, Gadget.Button));

        EstimateQuadSizes(ref tabHitboxes_Size, ref tabHitBoxes);

        optionBoxes.Clear();
        optionBoxes.Add(new Hitbox(WindowX + 8, WindowY + 45 + 0 * 15, 75, kOptions_Heavy, "Heavy Mode", Font, Gadget.Check));
        optionBoxes.Add(new Hitbox(WindowX + 8, WindowY + 45 + 1 * 15, 75, kOptions_KeyboardCapture, "Keyboard Mode [MMB]", Font, Gadget.Check));
        optionBoxes.Add(new Hitbox(WindowX + 8, WindowY + 45 + 2 * 15, 75, kOptions_3D, "3D Mode [LALT]", Font, Gadget.Check));
        optionBoxes.Add(new Hitbox(WindowX + 8, WindowY + 45 + 3 * 15, 75, kOptions_Mute, "Mute Sound", Font, Gadget.Check));
        optionBoxes.Add(new Hitbox(WindowX + 8, WindowY + 45 + 4 * 15, 75, kOptions_ShowOptionsOnStart, "Show options on start", Font, Gadget.Check));

        optionBoxes.Add(new Hitbox(WindowX + WindowW / 2, WindowY + 45 + 0 * 15, 150, kOptions_Eject, "Eject Floppy", Font, Gadget.Button));
        optionBoxes.Add(new Hitbox(WindowX + WindowW / 2, WindowY + 45 + 1 * 15, 150, kOptions_Power, "Power Switch", Font, Gadget.Button));
        optionBoxes.Add(new Hitbox(WindowX + WindowW / 2, WindowY + 45 + 2 * 15, 150, kOptions_Reset, "Reset Simulation", Font, Gadget.Button));

        EstimateQuadSizes(ref optionBoxes_Size, ref optionBoxes);
    }
Example #18
0
 public void AddSprite(GiraffeSprite sprite)
 {
     mSprites.Add(ProcessSprite(sprite));
 }
Example #19
0
 public void ClearSprites()
 {
     mSprites.Clear();
     mWhiteSprite = null;
 }
Example #20
0
    void BuildAtlas()
    {
        mAtlas._importData.atlasOutOfDate = false;

        Texture2D           whiteTex = null;
        GiraffeAtlasBuilder builder  = new GiraffeAtlasBuilder();

        builder.Begin(mAtlas.texture, mAtlas._importData.border, mAtlas._importData.padding);

        if (mAtlas._importData.generateWhiteTexture)
        {
            whiteTex = new Texture2D(kWhiteTexSize, kWhiteTexSize, TextureFormat.ARGB32, false);

            whiteTex.name = "Giraffe/White";
            Color32[] col = new Color32[kWhiteTexSize * kWhiteTexSize];
            for (int i = 0; i < kWhiteTexSize * kWhiteTexSize; i++)
            {
                col[i] = new Color32(255, 255, 255, 255);
            }
            whiteTex.SetPixels32(col);
            whiteTex.Apply(true, false);

            builder.Add(whiteTex.name, whiteTex);
        }

        foreach (var p in mAtlas._importData.parts)
        {
            switch (p.type)
            {
            case GiraffeAtlasImportDataType.None:
                break;

            case GiraffeAtlasImportDataType.Texture2D:
            {
                if (p.textureAsset != null)
                {
                    builder.Add(p.textureAsset.name, p.textureAsset);
                }
            }
            break;

            case GiraffeAtlasImportDataType.TileSheetSquare:
            case GiraffeAtlasImportDataType.TilesheetRectangular:
            {
                if (p.textureAsset != null)
                {
                    var input = builder.Add(p.textureAsset.name, p.textureAsset, false);
                    int x     = 0;
                    int y     = p.textureAsset.height - p.height;
                    for (int i = 0; i < p.count; i++)
                    {
                        input.Add(x, y, p.width, p.height);
                        x += p.width;
                        if (x >= p.textureAsset.width)
                        {
                            x  = 0;
                            y -= p.height;
                        }
                    }
                }
            }
            break;
            }
        }

        var sprites = builder.End();

        if (whiteTex != null)
        {
            Object.DestroyImmediate(whiteTex);
        }

        mAtlas.ClearSprites();
        foreach (var s in sprites)
        {
            var sprite = new GiraffeSprite();
            sprite.name          = s.name;
            sprite.left          = s.x;
            sprite.top           = s.y;
            sprite.width         = s.w;
            sprite.height        = s.h;
            sprite.refreshNeeded = true;
            mAtlas.AddSprite(sprite);
        }

        EditorUtility.SetDirty(mAtlas._importData);
        EditorUtility.SetDirty(mAtlas);

        mAtlas.RefreshSprites();

        AssetDatabase.Refresh();
    }
    public override void OnInspectorGUI()
    {
        bool changed = false;

        GUILayout.BeginVertical();
        GUILayout.Label("Sprite", EditorStyles.boldLabel);
        GUILayout.Space(4);
        EditorGUI.indentLevel++;

        if (mLayer != null)
        {
            GUI.changed          = false;
            mCurrentSpriteNameId = EditorGUILayout.Popup("Sprite", mCurrentSpriteNameId, mSpriteNames);
            if (GUI.changed)
            {
                mRenderer.spriteName = mSpriteNames[mCurrentSpriteNameId];
                changed = true;
            }
        }
        else
        {
            GUI.changed          = false;
            mRenderer.spriteName = EditorGUILayout.TextField("Sprite", mRenderer.spriteName);
            if (GUI.changed)
            {
                changed = true;
            }
        }

        GUI.changed     = false;
        mRenderer.scale = EditorGUILayout.FloatField("Scale", mRenderer.scale);
        if (GUI.changed)
        {
            changed = true;
        }

        EditorGUI.indentLevel--;

        GUILayout.EndVertical();


        BoxCollider2D collider2D = mRenderer.GetComponent <BoxCollider2D>();

        if (mLayer != null && collider2D != null && mAtlas != null)
        {
            GUILayout.BeginVertical();
            GUILayout.Label("Collider", EditorStyles.boldLabel);
            GUILayout.Space(4);
            EditorGUI.indentLevel++;

            if (GUILayout.Button("Resize Collider to sprite"))
            {
                GiraffeSprite sprite = mAtlas.GetSprite(mRenderer.spriteName);
                collider2D.size = new Vector2(sprite.width, sprite.height);
                changed         = true;
            }

            EditorGUI.indentLevel--;

            GUILayout.EndVertical();
        }

        if (changed)
        {
            EditorUtility.SetDirty(mRenderer);
        }
    }
Example #22
0
 public void Add(int x, int y, GiraffeSprite sprite)
 {
     Add(x, y, sprite.width, sprite.height, sprite);
 }
Example #23
0
    public void Add(int x, int y, int w, int h, String spriteName)
    {
        GiraffeSprite sprite = mAtlas.GetSprite(spriteName);

        Add(x, y, w, h, sprite);
    }
Example #24
0
    public void Add(int x, int y, String spriteName)
    {
        GiraffeSprite sprite = mAtlas.GetSprite(spriteName);

        Add(x, y, sprite.width, sprite.height, sprite);
    }
Example #25
0
 void RefreshSprites()
 {
     mSprite = atlas.GetSprite(spriteName);
 }
Example #26
0
 public void Add(Matrix2D transform, GiraffeSprite sprite)
 {
     mLayer.Add(transform, sprite);
 }