private void CreateAndStoreMiscObjectsInHex(Hex hex, Layout hexLayout, EditorMiscHexData data, Sprite backgroudSprite) { var backgroundGO = new GameObject("spriteBackGround", typeof(SpriteRenderer)); var fixPos = hexLayout.HexToWorld(hex); var position = new Vector2((float)fixPos.x, (float)fixPos.y); backgroundGO.transform.position = new Vector3(position.x, position.y, position.y); var backgroundRenderer = backgroundGO.GetComponent <SpriteRenderer>(); backgroundRenderer.sprite = backgroudSprite; spriteObjForMiscMap.Add(backgroundGO); var miscTileGO = new GameObject("Misc tile", typeof(EditorMiscHexTile)); var miscTile = miscTileGO.GetComponent <EditorMiscHexTile>(); miscTile.Init(this, data, hex); miscTileGO.GetComponent <MeshFilter>().sharedMesh = MeshUtils.QuadMesh; miscTileGO.GetComponent <MeshRenderer>().sharedMaterial = data.hexMaterial; //-1 in the Z. miscTileGO.transform.position = new Vector3(position.x, position.y, position.y - 1); activeEditorMiscTiles.Add(hex, miscTile); }
public void Init(MapEditor editor, EditorMiscHexData data, Hex hex) { this.editor = editor; this.hex = hex; meshRenderer = GetComponent <MeshRenderer>(); meshRenderer.sharedMaterial = data.hexMaterial; }
private void Update() { if (!Application.isPlaying) { if (meshRenderer.sharedMaterial != prevRendererMaterial) { Debug.Assert(editor != null, "You must call the Init function when creating this object in order to make it work as intended!"); if (editor.MiscDataLookUpTable.TryGetValue(meshRenderer.sharedMaterial, out EditorMiscHexData newData)) { data = newData; prevRendererMaterial = meshRenderer.sharedMaterial; } else { Debug.LogWarning("The material you put on the tile is invalid! Returning the mesh renderer to his previous material"); meshRenderer.sharedMaterial = prevRendererMaterial; } } } }