public override void Init(string additionalData) { base.Init(additionalData); _turnmodule = ModuleManager.getInstance.GetModule <BattleTurnsModule>(); _turnmodule.Notifications += OnNextTurn; var emitterObj = Node.transform.Find("laser_cube/emitter"); _laserEmitter = emitterObj.GetComponent <LaserEmitter>(); if (_laserEmitter == null) { _laserEmitter = emitterObj.gameObject.AddComponent <LaserEmitter>(); } _laserEmitter.AddBlockTileType(typeof(BlockTile)); _laserEmitter.AddBlockTileType(typeof(LockTile)); _laserEmitter.AddBlockTileType(typeof(GemTile)); _laserEmitter.AddBlockTileType(typeof(BombTile)); _laserEmitter.AddBlockTileType(typeof(LaserTile)); _laserEmitter.AddBlockTileType(typeof(DiskTile)); _laserEmitter.AddBlockTileType(typeof(UpDirectTile)); _laserEmitter.AddBlockTileType(typeof(DownDirectTile)); _laserEmitter.AddBlockTileType(typeof(LeftDirectTile)); _laserEmitter.AddBlockTileType(typeof(RightDirectTile)); switch (additionalData) { case "up": { _dir = new Vector2Int(0, -1); _laserEmitter.transform.localEulerAngles = new Vector3(0, 0, 0); } break; case "down": { _dir = new Vector2Int(0, 1); _laserEmitter.transform.localEulerAngles = new Vector3(0, 0, 180); } break; case "left": { _dir = new Vector2Int(-1, 0); _laserEmitter.transform.localEulerAngles = new Vector3(0, 0, 90); } break; case "right": { _dir = new Vector2Int(1, 0); _laserEmitter.transform.localEulerAngles = new Vector3(0, 0, -90); } break; } }