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; } }
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; }
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; }
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); } }
public GiraffeSprite GetSprite(String name) { GiraffeSprite sprite = FindSprite(name); if (sprite == null) { sprite = whiteSprite; } return(ProcessSprite(sprite)); }
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); }
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]; } }
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; }
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(); }
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; }
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; } }
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]); } } }
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); } }
public void Add(int x, int y, int w, int h, GiraffeSprite sprite) { mLayer.Add(x, y, w, h, sprite); }
void Start() { mLayer = GetComponent <GiraffeLayer>(); mWhite = mLayer.atlas.GetSprite("Giraffe/White"); }
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); }
public void AddSprite(GiraffeSprite sprite) { mSprites.Add(ProcessSprite(sprite)); }
public void ClearSprites() { mSprites.Clear(); mWhiteSprite = null; }
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); } }
public void Add(int x, int y, GiraffeSprite sprite) { Add(x, y, sprite.width, sprite.height, sprite); }
public void Add(int x, int y, int w, int h, String spriteName) { GiraffeSprite sprite = mAtlas.GetSprite(spriteName); Add(x, y, w, h, sprite); }
public void Add(int x, int y, String spriteName) { GiraffeSprite sprite = mAtlas.GetSprite(spriteName); Add(x, y, sprite.width, sprite.height, sprite); }
void RefreshSprites() { mSprite = atlas.GetSprite(spriteName); }
public void Add(Matrix2D transform, GiraffeSprite sprite) { mLayer.Add(transform, sprite); }