fixes, improvements. firebase
@@ -151,7 +151,7 @@ namespace Darkmatter.Features.Artbook
|
||||
{
|
||||
if (!entry.HasValue || entry.Value.Thumbnail == null) return;
|
||||
var ct = _cts?.Token ?? CancellationToken.None;
|
||||
await _gallery.SaveImageAsync(entry.Value.Thumbnail, entry.Value.Id, ct);
|
||||
await _gallery.SaveImageAsync(entry.Value.Thumbnail, entry.Value.Name, ct);
|
||||
}
|
||||
|
||||
private void HandleLeftEditClicked() => OpenForEdit(GetLeftEntry());
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
using System;
|
||||
using System.Threading;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Darkmatter.Core.Contracts.Features.Capture;
|
||||
using Darkmatter.Core.Contracts.Features.DrawingCatalog;
|
||||
using Darkmatter.Core.Contracts.Features.GameplayFlow;
|
||||
using Darkmatter.Core.Contracts.Features.Progression;
|
||||
using Darkmatter.Core.Contracts.Services.Capture;
|
||||
using Darkmatter.Core.Contracts.Services.Gallery;
|
||||
using Darkmatter.Core.Data.Signals.Features.Capture;
|
||||
@@ -18,19 +19,25 @@ namespace Darkmatter.Features.Capture
|
||||
private readonly IGameplaySceneRefs _refs;
|
||||
private readonly IEventBus _bus;
|
||||
private readonly CaptureConfig _config;
|
||||
private readonly IProgressionSystem _progression;
|
||||
private readonly IDrawingTemplateCatalog _catalog;
|
||||
|
||||
public CaptureSystem(
|
||||
ICaptureService captureService,
|
||||
IGalleryService galleryService,
|
||||
IGameplaySceneRefs refs,
|
||||
IEventBus bus,
|
||||
CaptureConfig config)
|
||||
CaptureConfig config,
|
||||
IProgressionSystem progression,
|
||||
IDrawingTemplateCatalog catalog)
|
||||
{
|
||||
_captureService = captureService;
|
||||
_galleryService = galleryService;
|
||||
_refs = refs;
|
||||
_bus = bus;
|
||||
_config = config;
|
||||
_progression = progression;
|
||||
_catalog = catalog;
|
||||
}
|
||||
|
||||
public async UniTask<byte[]> CapturePngAsync(bool saveToGallery = false, CancellationToken ct = default)
|
||||
@@ -44,9 +51,9 @@ namespace Darkmatter.Features.Capture
|
||||
{
|
||||
if (tex.LoadImage(png))
|
||||
{
|
||||
var fileName = await BuildFileNameAsync();
|
||||
_bus.Publish(new GallerySaveStartedSignal());
|
||||
await _galleryService.SaveImageAsync(tex,
|
||||
$"colorbook_{DateTime.UtcNow:yyyyMMdd_HHmmss}.png", ct);
|
||||
await _galleryService.SaveImageAsync(tex, fileName, ct);
|
||||
success = true;
|
||||
}
|
||||
}
|
||||
@@ -57,5 +64,20 @@ namespace Darkmatter.Features.Capture
|
||||
}
|
||||
return png;
|
||||
}
|
||||
|
||||
private async UniTask<string> BuildFileNameAsync()
|
||||
{
|
||||
var id = _progression.LastOpenedTemplateId;
|
||||
if (string.IsNullOrEmpty(id)) return null;
|
||||
try
|
||||
{
|
||||
var template = await _catalog.LoadAsync(id);
|
||||
return template?.DisplayName;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,12 +2,9 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Darkmatter.Core;
|
||||
using Darkmatter.Core.Contracts.Features.DrawingCatalog;
|
||||
using Darkmatter.Core.Contracts.Features.Progression;
|
||||
using Darkmatter.Core.Data.Signals.Features.Drawing;
|
||||
using Darkmatter.Libs.Observer;
|
||||
using ZLinq;
|
||||
|
||||
namespace Darkmatter.Features.DrawingCatalog.Systems;
|
||||
|
||||
@@ -15,7 +12,6 @@ public sealed class DrawingCatalogController : IDrawingCatalogController
|
||||
{
|
||||
private readonly IDrawingTemplateCatalog _catalog;
|
||||
private readonly IEventBus _bus;
|
||||
private readonly IProgressionSystem _progression;
|
||||
|
||||
private readonly List<string> _visible = new();
|
||||
public IReadOnlyList<string> VisibleIds => _visible;
|
||||
@@ -23,11 +19,9 @@ public sealed class DrawingCatalogController : IDrawingCatalogController
|
||||
|
||||
public DrawingCatalogController(
|
||||
IDrawingTemplateCatalog catalog,
|
||||
IProgressionSystem progression,
|
||||
IEventBus bus)
|
||||
{
|
||||
_catalog = catalog;
|
||||
_progression = progression;
|
||||
_bus = bus;
|
||||
}
|
||||
|
||||
@@ -45,13 +39,8 @@ public sealed class DrawingCatalogController : IDrawingCatalogController
|
||||
private void Refresh()
|
||||
{
|
||||
_visible.Clear();
|
||||
var all = _catalog.AllTemplateIds;
|
||||
foreach (var id in all)
|
||||
if (!_progression.CompletedTemplateIds.AsValueEnumerable().Contains(id))
|
||||
_visible.Add(id);
|
||||
foreach (var id in all)
|
||||
if (_progression.CompletedTemplateIds.AsValueEnumerable().Contains(id))
|
||||
_visible.Add(id);
|
||||
_visible.AddRange(_catalog.AllTemplateIds);
|
||||
_visible.Sort(StringComparer.OrdinalIgnoreCase);
|
||||
ListChanged?.Invoke();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
using System.IO;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Darkmatter.Libs.UnityUtils.Editor
|
||||
{
|
||||
public static class OpenEditorGalleryMenu
|
||||
{
|
||||
private const string MenuPath = "Tools/Colorbook/Open Editor Gallery";
|
||||
|
||||
[MenuItem(MenuPath)]
|
||||
private static void Open()
|
||||
{
|
||||
var dir = Path.Combine(Application.persistentDataPath, "Colorbook-Gallery");
|
||||
Directory.CreateDirectory(dir);
|
||||
EditorUtility.RevealInFinder(dir);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 55aad6d59cbf04999877c8c4b2f55836
|
||||
@@ -21,6 +21,8 @@ namespace Darkmatter.Services.Ads
|
||||
[SerializeField] private bool autoReload = true;
|
||||
[Tooltip("Seconds between auto-reload retries on failure.")]
|
||||
[SerializeField, Min(1f)] private float reloadDelaySeconds = 5f;
|
||||
[Tooltip("Max reload attempts before giving up.")]
|
||||
[SerializeField, Min(1)] private int reloadMaxAttempts = 6;
|
||||
|
||||
public bool IsInitialized => _initialized;
|
||||
public event Action<AdFormat, AdLoadState> LoadStateChanged;
|
||||
@@ -495,8 +497,14 @@ namespace Darkmatter.Services.Ads
|
||||
{
|
||||
try
|
||||
{
|
||||
await UniTask.Delay(TimeSpan.FromSeconds(reloadDelaySeconds), cancellationToken: cancellationToken);
|
||||
await LoadAsync(format, cancellationToken);
|
||||
for (int attempt = 0; attempt < reloadMaxAttempts; attempt++)
|
||||
{
|
||||
await UniTask.Delay(TimeSpan.FromSeconds(reloadDelaySeconds), cancellationToken: cancellationToken);
|
||||
if (cancellationToken.IsCancellationRequested) return;
|
||||
if (IsReady(format)) return;
|
||||
if (await LoadAsync(format, cancellationToken)) return;
|
||||
}
|
||||
Debug.LogWarning($"[AdMobAdService] {format} reload gave up after {reloadMaxAttempts} attempts.");
|
||||
}
|
||||
catch (OperationCanceledException) { }
|
||||
}
|
||||
|
||||
@@ -9,9 +9,7 @@ namespace Darkmatter.Services.Analytics
|
||||
{
|
||||
public void Register(IContainerBuilder builder)
|
||||
{
|
||||
#if FIREBASE_ANALYTICS_PRESENT
|
||||
builder.RegisterEntryPoint<FirebaseAnalyticsSystem>();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,3 @@
|
||||
#if FIREBASE_ANALYTICS
|
||||
using System.Threading;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Firebase.Crashlytics;
|
||||
@@ -10,7 +9,6 @@ namespace Darkmatter.Services.Analytics
|
||||
{
|
||||
public async UniTask StartAsync(CancellationToken cancellation = new CancellationToken())
|
||||
{
|
||||
#if !UNITY_EDITOR
|
||||
await Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task =>
|
||||
{
|
||||
var dependencyStatus = task.Result;
|
||||
@@ -39,8 +37,6 @@ namespace Darkmatter.Services.Analytics
|
||||
// Firebase Unity SDK is not safe to use here.
|
||||
}
|
||||
}, cancellation);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Darkmatter.Services.Gallery
|
||||
{
|
||||
[Serializable]
|
||||
public struct GalleryConfig
|
||||
{
|
||||
public Texture2D Background { get; }
|
||||
|
||||
public GalleryConfig(Texture2D background)
|
||||
{
|
||||
Background = background;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bf2070de4e452444fa248a03c10928a6
|
||||
@@ -1,4 +1,6 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Darkmatter.Core.Contracts.Services.Gallery;
|
||||
@@ -8,36 +10,123 @@ namespace Darkmatter.Services.Gallery
|
||||
{
|
||||
public class GalleryService : IGalleryService
|
||||
{
|
||||
private readonly GalleryConfig _config;
|
||||
|
||||
public GalleryService(GalleryConfig config) => _config = config;
|
||||
|
||||
public async UniTask SaveImageAsync(Texture2D image, string fileName, CancellationToken cancellationToken)
|
||||
{
|
||||
var permission = await NativeGallery.RequestPermissionAsync(NativeGallery.PermissionType.Write,
|
||||
NativeGallery.MediaType.Image);
|
||||
|
||||
if (permission != NativeGallery.Permission.Granted)
|
||||
Texture2D composited = null;
|
||||
Texture2D toSave = image;
|
||||
if (_config.Background != null)
|
||||
{
|
||||
return;
|
||||
composited = CompositeOverBackground(image, _config.Background);
|
||||
toSave = composited;
|
||||
}
|
||||
|
||||
var tcs = new UniTaskCompletionSource();
|
||||
var registration = cancellationToken.Register(() => tcs.TrySetCanceled(cancellationToken));
|
||||
var resolvedName = BuildUniqueFileName(fileName);
|
||||
|
||||
NativeGallery.SaveImageToGallery(image, "Colorbook",
|
||||
filename: $"colorbook_{DateTime.UtcNow:yyyyMMdd_HHmmss}.png", callback: (success, path) =>
|
||||
try
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
var bytes = toSave.EncodeToPNG();
|
||||
var dir = Path.Combine(Application.persistentDataPath, "Colorbook-Gallery");
|
||||
Directory.CreateDirectory(dir);
|
||||
var path = Path.Combine(dir, resolvedName);
|
||||
await File.WriteAllBytesAsync(path, bytes, cancellationToken);
|
||||
Debug.Log($"[GalleryService] (Editor) Image saved to: {path}");
|
||||
#else
|
||||
var permission = await NativeGallery.RequestPermissionAsync(NativeGallery.PermissionType.Write,
|
||||
NativeGallery.MediaType.Image);
|
||||
|
||||
if (permission != NativeGallery.Permission.Granted)
|
||||
{
|
||||
registration.Dispose();
|
||||
if (!success)
|
||||
{
|
||||
Debug.LogError("Failed to save image to gallery.");
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log($"Image saved to gallery at: {path}");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
tcs.TrySetResult();
|
||||
});
|
||||
var tcs = new UniTaskCompletionSource();
|
||||
var registration = cancellationToken.Register(() => tcs.TrySetCanceled(cancellationToken));
|
||||
|
||||
await tcs.Task;
|
||||
NativeGallery.SaveImageToGallery(toSave, "Colorbook",
|
||||
filename: resolvedName, callback: (success, path) =>
|
||||
{
|
||||
registration.Dispose();
|
||||
if (!success)
|
||||
{
|
||||
Debug.LogError("Failed to save image to gallery.");
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log($"Image saved to gallery at: {path}");
|
||||
}
|
||||
|
||||
tcs.TrySetResult();
|
||||
});
|
||||
|
||||
await tcs.Task;
|
||||
#endif
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (composited != null) UnityEngine.Object.Destroy(composited);
|
||||
}
|
||||
}
|
||||
|
||||
private static string BuildUniqueFileName(string baseName)
|
||||
{
|
||||
var prefix = Sanitize(baseName);
|
||||
if (string.IsNullOrEmpty(prefix)) prefix = "drawing";
|
||||
return $"{prefix}_{DateTime.UtcNow:yyyyMMdd_HHmmssfff}.png";
|
||||
}
|
||||
|
||||
private static string Sanitize(string s)
|
||||
{
|
||||
if (string.IsNullOrEmpty(s)) return null;
|
||||
var name = Path.GetFileNameWithoutExtension(s).Trim();
|
||||
var sb = new StringBuilder(name.Length);
|
||||
foreach (var c in name)
|
||||
{
|
||||
if (char.IsLetterOrDigit(c)) sb.Append(c);
|
||||
else if (c == ' ' || c == '-' || c == '_') sb.Append('_');
|
||||
}
|
||||
return sb.Length == 0 ? null : sb.ToString();
|
||||
}
|
||||
|
||||
private static Texture2D CompositeOverBackground(Texture2D captured, Texture2D background)
|
||||
{
|
||||
int bgW = background.width;
|
||||
int bgH = background.height;
|
||||
int cW = captured.width;
|
||||
int cH = captured.height;
|
||||
|
||||
float fit = Mathf.Min(1f, Mathf.Min((float)bgW / cW, (float)bgH / cH));
|
||||
int finalW = Mathf.Max(1, Mathf.RoundToInt(cW * fit));
|
||||
int finalH = Mathf.Max(1, Mathf.RoundToInt(cH * fit));
|
||||
int offsetX = (bgW - finalW) / 2;
|
||||
int offsetY = (bgH - finalH) / 2;
|
||||
|
||||
var rt = RenderTexture.GetTemporary(bgW, bgH, 0, RenderTextureFormat.ARGB32);
|
||||
var prev = RenderTexture.active;
|
||||
try
|
||||
{
|
||||
Graphics.Blit(background, rt);
|
||||
|
||||
RenderTexture.active = rt;
|
||||
GL.PushMatrix();
|
||||
GL.LoadPixelMatrix(0, bgW, bgH, 0);
|
||||
Graphics.DrawTexture(new Rect(offsetX, offsetY, finalW, finalH), captured);
|
||||
GL.PopMatrix();
|
||||
|
||||
var output = new Texture2D(bgW, bgH, TextureFormat.RGBA32, mipChain: false);
|
||||
output.ReadPixels(new Rect(0, 0, bgW, bgH), 0, 0);
|
||||
output.Apply();
|
||||
return output;
|
||||
}
|
||||
finally
|
||||
{
|
||||
RenderTexture.active = prev;
|
||||
RenderTexture.ReleaseTemporary(rt);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,8 +7,11 @@ namespace Darkmatter.Services.Gallery
|
||||
{
|
||||
public class GalleryModule : MonoBehaviour,IModule
|
||||
{
|
||||
[SerializeField] private Texture2D saveBackground;
|
||||
|
||||
public void Register(IContainerBuilder builder)
|
||||
{
|
||||
builder.RegisterInstance(new GalleryConfig(saveBackground));
|
||||
builder.Register<IGalleryService,GalleryService>(Lifetime.Singleton);
|
||||
}
|
||||
}
|
||||
|
||||
BIN
Assets/Darkmatter/Content/.DS_Store
vendored
BIN
Assets/Darkmatter/Content/Colorbook UI/.DS_Store
vendored
BIN
Assets/Darkmatter/Content/Colorbook UI/MainmenuUI/.DS_Store
vendored
Normal file
@@ -64,7 +64,7 @@ MonoBehaviour:
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_Maskable: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
@@ -432,7 +432,7 @@ MonoBehaviour:
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_Maskable: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
@@ -631,7 +631,7 @@ MonoBehaviour:
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_Maskable: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
@@ -750,7 +750,7 @@ MonoBehaviour:
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_Maskable: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
@@ -1328,7 +1328,7 @@ MonoBehaviour:
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_Maskable: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
@@ -1522,7 +1522,7 @@ MonoBehaviour:
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_Maskable: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
@@ -1912,7 +1912,7 @@ MonoBehaviour:
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_Maskable: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
@@ -2123,7 +2123,7 @@ MonoBehaviour:
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_Maskable: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
@@ -2298,7 +2298,7 @@ MonoBehaviour:
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_Maskable: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
@@ -2894,7 +2894,7 @@ MonoBehaviour:
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_Maskable: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
@@ -2969,7 +2969,7 @@ MonoBehaviour:
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_Maskable: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
@@ -3109,7 +3109,7 @@ MonoBehaviour:
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_Maskable: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
|
||||
BIN
Assets/Darkmatter/Content/Colorbook UI/Save Art Background.png
Normal file
|
After Width: | Height: | Size: 948 KiB |
@@ -37,8 +37,8 @@ TextureImporter:
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapU: 0
|
||||
wrapV: 0
|
||||
wrapW: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
@@ -52,9 +52,9 @@ TextureImporter:
|
||||
spriteBorder: {x: 869, y: 876, z: 282, w: 277}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
@@ -67,7 +67,7 @@ TextureImporter:
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
- serializedVersion: 4
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
@@ -80,7 +80,7 @@ TextureImporter:
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
- serializedVersion: 4
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
@@ -93,7 +93,7 @@ TextureImporter:
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
- serializedVersion: 4
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
@@ -106,7 +106,7 @@ TextureImporter:
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
- serializedVersion: 4
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
@@ -119,10 +119,24 @@ TextureImporter:
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: iOS
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
@@ -132,6 +146,8 @@ TextureImporter:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
|
Before Width: | Height: | Size: 49 KiB |
@@ -151,9 +151,9 @@ RectTransform:
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1424266587}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: -31.709412, y: -501}
|
||||
m_AnchorMin: {x: 0.5, y: 0}
|
||||
m_AnchorMax: {x: 0.5, y: 0}
|
||||
m_AnchoredPosition: {x: -39, y: 37}
|
||||
m_SizeDelta: {x: 1124.7546, y: 50}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &17632382
|
||||
@@ -679,6 +679,50 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: e14e6746c7bb4b57808b4d3020dc7bbb, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Services.Capture::Darkmatter.Services.Capture.Installers.CaptureServiceModule
|
||||
--- !u!1 &164240469
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 164240470}
|
||||
- component: {fileID: 164240471}
|
||||
m_Layer: 0
|
||||
m_Name: AnalyticsServiceModule
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &164240470
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 164240469}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1050564725}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &164240471
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 164240469}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 4e89fdd4696924b7facccda23a94a978, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Services.Analytics::Darkmatter.Services.Analytics.AnalyticsModule
|
||||
--- !u!1 &196669901
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -1583,6 +1627,7 @@ Transform:
|
||||
- {fileID: 978572232}
|
||||
- {fileID: 361052051}
|
||||
- {fileID: 1707278033}
|
||||
- {fileID: 164240470}
|
||||
m_Father: {fileID: 1798580248}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1156238479
|
||||
@@ -1632,6 +1677,7 @@ MonoBehaviour:
|
||||
catalog: {fileID: 11400000, guid: 6e2d0c78aa02e4411948adcca14299a5, type: 2}
|
||||
autoReload: 1
|
||||
reloadDelaySeconds: 5
|
||||
reloadMaxAttempts: 6
|
||||
--- !u!1 &1239449674
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -1676,6 +1722,7 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: f03c84255756e497f96c3baa7f6abe16, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Services.Gallery::Darkmatter.Services.Gallery.GalleryServiceModule
|
||||
saveBackground: {fileID: 2800000, guid: 0c8e208e83531f84cb2b842025cdd232, type: 3}
|
||||
--- !u!1 &1315655361
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -1889,12 +1936,12 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.CanvasScaler
|
||||
m_UiScaleMode: 0
|
||||
m_UiScaleMode: 1
|
||||
m_ReferencePixelsPerUnit: 100
|
||||
m_ScaleFactor: 1
|
||||
m_ReferenceResolution: {x: 800, y: 600}
|
||||
m_ReferenceResolution: {x: 1920, y: 1080}
|
||||
m_ScreenMatchMode: 0
|
||||
m_MatchWidthOrHeight: 0
|
||||
m_MatchWidthOrHeight: 0.5
|
||||
m_PhysicalUnit: 3
|
||||
m_FallbackScreenDPI: 96
|
||||
m_DefaultSpriteDPI: 96
|
||||
@@ -1919,7 +1966,7 @@ Canvas:
|
||||
m_SortingBucketNormalizedSize: 0
|
||||
m_VertexColorAlwaysGammaSpace: 1
|
||||
m_UseReflectionProbes: 0
|
||||
m_AdditionalShaderChannelsFlag: 1
|
||||
m_AdditionalShaderChannelsFlag: 25
|
||||
m_UpdateRectTransformForStandalone: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingOrder: 800
|
||||
@@ -2163,6 +2210,7 @@ MonoBehaviour:
|
||||
- {fileID: 978572233}
|
||||
- {fileID: 361052052}
|
||||
- {fileID: 1707278034}
|
||||
- {fileID: 164240471}
|
||||
--- !u!1 &1890425864
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -164,6 +164,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Features.Capture::Darkmatter.Features.Capture.CaptureFeatureModule
|
||||
captureScale: 1
|
||||
galleryBackground: {fileID: 2800000, guid: 0c8e208e83531f84cb2b842025cdd232, type: 3}
|
||||
captureButtonView: {fileID: 376589371}
|
||||
gallerySaveView: {fileID: 0}
|
||||
--- !u!1 &64614225
|
||||
@@ -971,6 +972,82 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier: Features.GameplayFlow::Darkmatter.Features.GameplayFlow.SceneRefs.GameplaySceneRefs
|
||||
paperRoot: {fileID: 1143672390}
|
||||
confetti: {fileID: 1141121867}
|
||||
--- !u!1 &565686254
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 565686255}
|
||||
- component: {fileID: 565686257}
|
||||
- component: {fileID: 565686256}
|
||||
m_Layer: 5
|
||||
m_Name: SavingIndicator
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 0
|
||||
--- !u!224 &565686255
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 565686254}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 993060025}
|
||||
m_Father: {fileID: 2069155641}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &565686256
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 565686254}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0, g: 0, b: 0, a: 0.7607843}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 0}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!222 &565686257
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 565686254}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!1 &600922870
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -1395,6 +1472,143 @@ CanvasRenderer:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 892653812}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!1 &993060024
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 993060025}
|
||||
- component: {fileID: 993060027}
|
||||
- component: {fileID: 993060026}
|
||||
m_Layer: 5
|
||||
m_Name: Saving
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &993060025
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 993060024}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 565686255}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 897.3912, y: 143.6794}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &993060026
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 993060024}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_text: Saving...
|
||||
m_isRightToLeft: 0
|
||||
m_fontAsset: {fileID: 11400000, guid: dde468a43b0440f4a9d121fb1d8f290e, type: 2}
|
||||
m_sharedMaterial: {fileID: -1548830327015913602, guid: dde468a43b0440f4a9d121fb1d8f290e, type: 2}
|
||||
m_fontSharedMaterials: []
|
||||
m_fontMaterial: {fileID: 0}
|
||||
m_fontMaterials: []
|
||||
m_fontColor32:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_enableVertexGradient: 0
|
||||
m_colorMode: 3
|
||||
m_fontColorGradient:
|
||||
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||
topRight: {r: 1, g: 1, b: 1, a: 1}
|
||||
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_fontColorGradientPreset: {fileID: 0}
|
||||
m_spriteAsset: {fileID: 0}
|
||||
m_tintAllSprites: 0
|
||||
m_StyleSheet: {fileID: 0}
|
||||
m_TextStyleHashCode: -1183493901
|
||||
m_overrideHtmlColors: 0
|
||||
m_faceColor:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontSize: 124.7
|
||||
m_fontSizeBase: 124.7
|
||||
m_fontWeight: 400
|
||||
m_enableAutoSizing: 0
|
||||
m_fontSizeMin: 18
|
||||
m_fontSizeMax: 72
|
||||
m_fontStyle: 0
|
||||
m_HorizontalAlignment: 2
|
||||
m_VerticalAlignment: 512
|
||||
m_textAlignment: 65535
|
||||
m_characterSpacing: 0
|
||||
m_characterHorizontalScale: 1
|
||||
m_wordSpacing: 0
|
||||
m_lineSpacing: 0
|
||||
m_lineSpacingMax: 0
|
||||
m_paragraphSpacing: 0
|
||||
m_charWidthMaxAdj: 0
|
||||
m_TextWrappingMode: 1
|
||||
m_wordWrappingRatios: 0.4
|
||||
m_overflowMode: 0
|
||||
m_linkedTextComponent: {fileID: 0}
|
||||
parentLinkedComponent: {fileID: 0}
|
||||
m_enableKerning: 0
|
||||
m_ActiveFontFeatures: 6e72656b
|
||||
m_enableExtraPadding: 0
|
||||
checkPaddingRequired: 0
|
||||
m_isRichText: 1
|
||||
m_EmojiFallbackSupport: 1
|
||||
m_parseCtrlCharacters: 1
|
||||
m_isOrthographic: 1
|
||||
m_isCullingEnabled: 0
|
||||
m_horizontalMapping: 0
|
||||
m_verticalMapping: 0
|
||||
m_uvLineOffset: 0
|
||||
m_geometrySortingOrder: 0
|
||||
m_IsTextObjectScaleStatic: 0
|
||||
m_VertexBufferAutoSizeReduction: 0
|
||||
m_useMaxVisibleDescender: 1
|
||||
m_pageToDisplay: 1
|
||||
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_isUsingLegacyAnimationComponent: 0
|
||||
m_isVolumetricText: 0
|
||||
m_hasFontAssetChanged: 0
|
||||
m_baseMaterial: {fileID: 0}
|
||||
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||
--- !u!222 &993060027
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 993060024}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!1 &1046038182
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -3665,6 +3879,7 @@ RectTransform:
|
||||
m_Children:
|
||||
- {fileID: 201822947}
|
||||
- {fileID: 2022514148}
|
||||
- {fileID: 565686255}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
|
||||
8
Assets/Editor Default Resources.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 04803ed6e44bf4a448f9cc958fb6231f
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/Editor Default Resources/Firebase.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 19c388482cf3c4730b1376e3ad7fd5cb
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Editor Default Resources/Firebase/fb_analytics.png
Executable file
|
After Width: | Height: | Size: 134 B |
@@ -0,0 +1,68 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dc218b335b1d14cd5ae532f65042d829
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Editor Default Resources/Firebase/fb_analytics.png
|
||||
timeCreated: 1473376337
|
||||
licenseType: Pro
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
linearTexture: 1
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
cubemapConvolution: 0
|
||||
cubemapConvolutionSteps: 7
|
||||
cubemapConvolutionExponent: 1.5
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapMode: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
rGBM: 0
|
||||
compressionQuality: 50
|
||||
allowsAlphaSplitting: 0
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot:
|
||||
x: 0.5
|
||||
y: 0.5
|
||||
spriteBorder:
|
||||
x: 0
|
||||
y: 0
|
||||
z: 0
|
||||
w: 0
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 1
|
||||
textureType: 2
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Editor Default Resources/Firebase/fb_analytics_dark.png
Executable file
|
After Width: | Height: | Size: 136 B |
@@ -0,0 +1,68 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9fe4b3bd3b7d2477dac92fb7429d1d1b
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Editor Default Resources/Firebase/fb_analytics_dark.png
|
||||
timeCreated: 1472679008
|
||||
licenseType: Pro
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
linearTexture: 1
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
cubemapConvolution: 0
|
||||
cubemapConvolutionSteps: 7
|
||||
cubemapConvolutionExponent: 1.5
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapMode: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
rGBM: 0
|
||||
compressionQuality: 50
|
||||
allowsAlphaSplitting: 0
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot:
|
||||
x: 0.5
|
||||
y: 0.5
|
||||
spriteBorder:
|
||||
x: 0
|
||||
y: 0
|
||||
z: 0
|
||||
w: 0
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 1
|
||||
textureType: 2
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Editor Default Resources/Firebase/fb_auth.png
Executable file
|
After Width: | Height: | Size: 295 B |
68
Assets/Editor Default Resources/Firebase/fb_auth.png.meta
Normal file
@@ -0,0 +1,68 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 394b3ec4d60c24476a12e4ba696d9e5d
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Editor Default Resources/Firebase/fb_auth.png
|
||||
timeCreated: 1473376335
|
||||
licenseType: Pro
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
linearTexture: 1
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
cubemapConvolution: 0
|
||||
cubemapConvolutionSteps: 7
|
||||
cubemapConvolutionExponent: 1.5
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapMode: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
rGBM: 0
|
||||
compressionQuality: 50
|
||||
allowsAlphaSplitting: 0
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot:
|
||||
x: 0.5
|
||||
y: 0.5
|
||||
spriteBorder:
|
||||
x: 0
|
||||
y: 0
|
||||
z: 0
|
||||
w: 0
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 1
|
||||
textureType: 2
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Editor Default Resources/Firebase/fb_auth_dark.png
Executable file
|
After Width: | Height: | Size: 305 B |
@@ -0,0 +1,68 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3a9e1ef6287664c389bb09e2ac1b23b7
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Editor Default Resources/Firebase/fb_auth_dark.png
|
||||
timeCreated: 1472679008
|
||||
licenseType: Pro
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
linearTexture: 1
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
cubemapConvolution: 0
|
||||
cubemapConvolutionSteps: 7
|
||||
cubemapConvolutionExponent: 1.5
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapMode: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
rGBM: 0
|
||||
compressionQuality: 50
|
||||
allowsAlphaSplitting: 0
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot:
|
||||
x: 0.5
|
||||
y: 0.5
|
||||
spriteBorder:
|
||||
x: 0
|
||||
y: 0
|
||||
z: 0
|
||||
w: 0
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 1
|
||||
textureType: 2
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Editor Default Resources/Firebase/fb_cloud_messaging.png
Executable file
|
After Width: | Height: | Size: 510 B |
@@ -0,0 +1,68 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 837e8e1f35e334e81931d0857680cebf
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Editor Default Resources/Firebase/fb_cloud_messaging.png
|
||||
timeCreated: 1473376336
|
||||
licenseType: Pro
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
linearTexture: 1
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
cubemapConvolution: 0
|
||||
cubemapConvolutionSteps: 7
|
||||
cubemapConvolutionExponent: 1.5
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapMode: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
rGBM: 0
|
||||
compressionQuality: 50
|
||||
allowsAlphaSplitting: 0
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot:
|
||||
x: 0.5
|
||||
y: 0.5
|
||||
spriteBorder:
|
||||
x: 0
|
||||
y: 0
|
||||
z: 0
|
||||
w: 0
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 1
|
||||
textureType: 2
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Editor Default Resources/Firebase/fb_cloud_messaging_dark.png
Executable file
|
After Width: | Height: | Size: 521 B |
@@ -0,0 +1,68 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 20c5b8a1f82cb4aadb77ca20683d2a6e
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Editor Default Resources/Firebase/fb_cloud_messaging_dark.png
|
||||
timeCreated: 1472679008
|
||||
licenseType: Pro
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
linearTexture: 1
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
cubemapConvolution: 0
|
||||
cubemapConvolutionSteps: 7
|
||||
cubemapConvolutionExponent: 1.5
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapMode: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
rGBM: 0
|
||||
compressionQuality: 50
|
||||
allowsAlphaSplitting: 0
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot:
|
||||
x: 0.5
|
||||
y: 0.5
|
||||
spriteBorder:
|
||||
x: 0
|
||||
y: 0
|
||||
z: 0
|
||||
w: 0
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 1
|
||||
textureType: 2
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Editor Default Resources/Firebase/fb_config.png
Executable file
|
After Width: | Height: | Size: 253 B |
68
Assets/Editor Default Resources/Firebase/fb_config.png.meta
Normal file
@@ -0,0 +1,68 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 415eaec414af14d11955222a282aca08
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Editor Default Resources/Firebase/fb_config.png
|
||||
timeCreated: 1473376335
|
||||
licenseType: Pro
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
linearTexture: 1
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
cubemapConvolution: 0
|
||||
cubemapConvolutionSteps: 7
|
||||
cubemapConvolutionExponent: 1.5
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapMode: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
rGBM: 0
|
||||
compressionQuality: 50
|
||||
allowsAlphaSplitting: 0
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot:
|
||||
x: 0.5
|
||||
y: 0.5
|
||||
spriteBorder:
|
||||
x: 0
|
||||
y: 0
|
||||
z: 0
|
||||
w: 0
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 1
|
||||
textureType: 2
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Editor Default Resources/Firebase/fb_config_dark.png
Executable file
|
After Width: | Height: | Size: 253 B |
@@ -0,0 +1,68 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0ad9ef5fff5524355a9670c90a99cbba
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Editor Default Resources/Firebase/fb_config_dark.png
|
||||
timeCreated: 1472679008
|
||||
licenseType: Pro
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
linearTexture: 1
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
cubemapConvolution: 0
|
||||
cubemapConvolutionSteps: 7
|
||||
cubemapConvolutionExponent: 1.5
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapMode: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
rGBM: 0
|
||||
compressionQuality: 50
|
||||
allowsAlphaSplitting: 0
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot:
|
||||
x: 0.5
|
||||
y: 0.5
|
||||
spriteBorder:
|
||||
x: 0
|
||||
y: 0
|
||||
z: 0
|
||||
w: 0
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 1
|
||||
textureType: 2
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Editor Default Resources/Firebase/fb_crashlytics.png
Executable file
|
After Width: | Height: | Size: 454 B |
@@ -0,0 +1,68 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 008a5e76206e49f9b06d8ba144aabb38
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Editor Default Resources/Firebase/fb_crashlytics.png
|
||||
timeCreated: 1473376335
|
||||
licenseType: Pro
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
linearTexture: 1
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
cubemapConvolution: 0
|
||||
cubemapConvolutionSteps: 7
|
||||
cubemapConvolutionExponent: 1.5
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapMode: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
rGBM: 0
|
||||
compressionQuality: 50
|
||||
allowsAlphaSplitting: 0
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot:
|
||||
x: 0.5
|
||||
y: 0.5
|
||||
spriteBorder:
|
||||
x: 0
|
||||
y: 0
|
||||
z: 0
|
||||
w: 0
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 1
|
||||
textureType: 2
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Editor Default Resources/Firebase/fb_crashlytics_dark.png
Executable file
|
After Width: | Height: | Size: 471 B |
@@ -0,0 +1,68 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 214009068900439da4a9cded17d58090
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Editor Default Resources/Firebase/fb_crashlytics_dark.png
|
||||
timeCreated: 1472679008
|
||||
licenseType: Pro
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
linearTexture: 1
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
cubemapConvolution: 0
|
||||
cubemapConvolutionSteps: 7
|
||||
cubemapConvolutionExponent: 1.5
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapMode: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
rGBM: 0
|
||||
compressionQuality: 50
|
||||
allowsAlphaSplitting: 0
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot:
|
||||
x: 0.5
|
||||
y: 0.5
|
||||
spriteBorder:
|
||||
x: 0
|
||||
y: 0
|
||||
z: 0
|
||||
w: 0
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 1
|
||||
textureType: 2
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Editor Default Resources/Firebase/fb_database.png
Executable file
|
After Width: | Height: | Size: 248 B |
@@ -0,0 +1,69 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3eea7b558c67b48e18acf3c278392e3d
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Editor Default Resources/Firebase/fb_database.png
|
||||
timeCreated: 1476203961
|
||||
licenseType: Free
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
linearTexture: 0
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
cubemapConvolution: 0
|
||||
cubemapConvolutionSteps: 7
|
||||
cubemapConvolutionExponent: 1.5
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: -1
|
||||
mipBias: -1
|
||||
wrapMode: -1
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
rGBM: 0
|
||||
compressionQuality: 50
|
||||
allowsAlphaSplitting: 0
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot:
|
||||
x: 0.5
|
||||
y: 0.5
|
||||
spriteBorder:
|
||||
x: 0
|
||||
y: 0
|
||||
z: 0
|
||||
w: 0
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: -1
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Editor Default Resources/Firebase/fb_database_dark.png
Executable file
|
After Width: | Height: | Size: 268 B |
@@ -0,0 +1,69 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9f6bfa9d8aefb40dc92461c372c73b0f
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Editor Default Resources/Firebase/fb_database_dark.png
|
||||
timeCreated: 1476203949
|
||||
licenseType: Free
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
linearTexture: 0
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
cubemapConvolution: 0
|
||||
cubemapConvolutionSteps: 7
|
||||
cubemapConvolutionExponent: 1.5
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: -1
|
||||
mipBias: -1
|
||||
wrapMode: -1
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
rGBM: 0
|
||||
compressionQuality: 50
|
||||
allowsAlphaSplitting: 0
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot:
|
||||
x: 0.5
|
||||
y: 0.5
|
||||
spriteBorder:
|
||||
x: 0
|
||||
y: 0
|
||||
z: 0
|
||||
w: 0
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: -1
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Editor Default Resources/Firebase/fb_functions.png
Executable file
|
After Width: | Height: | Size: 449 B |
@@ -0,0 +1,68 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 953367231f9e3e22e70e5d1c91a40fe5
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Editor Default Resources/Firebase/fb_functions.png
|
||||
timeCreated: 1473376335
|
||||
licenseType: Pro
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
linearTexture: 1
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
cubemapConvolution: 0
|
||||
cubemapConvolutionSteps: 7
|
||||
cubemapConvolutionExponent: 1.5
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapMode: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
rGBM: 0
|
||||
compressionQuality: 50
|
||||
allowsAlphaSplitting: 0
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot:
|
||||
x: 0.5
|
||||
y: 0.5
|
||||
spriteBorder:
|
||||
x: 0
|
||||
y: 0
|
||||
z: 0
|
||||
w: 0
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 1
|
||||
textureType: 2
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Editor Default Resources/Firebase/fb_functions_dark.png
Executable file
|
After Width: | Height: | Size: 464 B |
@@ -0,0 +1,68 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b5aa3e4f7432e1c5698417cc13f85271
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Editor Default Resources/Firebase/fb_functions_dark.png
|
||||
timeCreated: 1472679008
|
||||
licenseType: Pro
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
linearTexture: 1
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
cubemapConvolution: 0
|
||||
cubemapConvolutionSteps: 7
|
||||
cubemapConvolutionExponent: 1.5
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapMode: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
rGBM: 0
|
||||
compressionQuality: 50
|
||||
allowsAlphaSplitting: 0
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot:
|
||||
x: 0.5
|
||||
y: 0.5
|
||||
spriteBorder:
|
||||
x: 0
|
||||
y: 0
|
||||
z: 0
|
||||
w: 0
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 1
|
||||
textureType: 2
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Editor Default Resources/Firebase/fb_storage.png
Executable file
|
After Width: | Height: | Size: 306 B |
78
Assets/Editor Default Resources/Firebase/fb_storage.png.meta
Normal file
@@ -0,0 +1,78 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 573eb851c99f948f4bf2de49322bfd53
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Editor Default Resources/Firebase/fb_storage.png
|
||||
timeCreated: 1481243899
|
||||
licenseType: Pro
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 4
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: -1
|
||||
mipBias: -1
|
||||
wrapMode: -1
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot:
|
||||
x: 0.5
|
||||
y: 0.5
|
||||
spriteBorder:
|
||||
x: 0
|
||||
y: 0
|
||||
z: 0
|
||||
w: 0
|
||||
spritePixelsToUnits: 100
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
platformSettings:
|
||||
- buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Editor Default Resources/Firebase/fb_storage_dark.png
Executable file
|
After Width: | Height: | Size: 304 B |
@@ -0,0 +1,78 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2955864b938094f579ea9902b65ac10c
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Editor Default Resources/Firebase/fb_storage_dark.png
|
||||
timeCreated: 1481243898
|
||||
licenseType: Pro
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 4
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: -1
|
||||
mipBias: -1
|
||||
wrapMode: -1
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot:
|
||||
x: 0.5
|
||||
y: 0.5
|
||||
spriteBorder:
|
||||
x: 0
|
||||
y: 0
|
||||
z: 0
|
||||
w: 0
|
||||
spritePixelsToUnits: 100
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
platformSettings:
|
||||
- buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Editor Default Resources/Firebase/firebase_lockup.png
Executable file
|
After Width: | Height: | Size: 2.6 KiB |
@@ -0,0 +1,68 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9f058f25e8e2d47cfb894951d4d7e48a
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Editor Default Resources/Firebase/firebase_lockup.png
|
||||
timeCreated: 1473376336
|
||||
licenseType: Pro
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
linearTexture: 1
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
cubemapConvolution: 0
|
||||
cubemapConvolutionSteps: 7
|
||||
cubemapConvolutionExponent: 1.5
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapMode: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
rGBM: 0
|
||||
compressionQuality: 50
|
||||
allowsAlphaSplitting: 0
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot:
|
||||
x: 0.5
|
||||
y: 0.5
|
||||
spriteBorder:
|
||||
x: 0
|
||||
y: 0
|
||||
z: 0
|
||||
w: 0
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 1
|
||||
textureType: 2
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Editor Default Resources/Firebase/firebase_lockup_dark.png
Executable file
|
After Width: | Height: | Size: 2.7 KiB |
@@ -0,0 +1,68 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b93330fc8ea08407dbc514b5101afa14
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Editor Default Resources/Firebase/firebase_lockup_dark.png
|
||||
timeCreated: 1472601251
|
||||
licenseType: Pro
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
linearTexture: 1
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
cubemapConvolution: 0
|
||||
cubemapConvolutionSteps: 7
|
||||
cubemapConvolutionExponent: 1.5
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapMode: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
rGBM: 0
|
||||
compressionQuality: 50
|
||||
allowsAlphaSplitting: 0
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot:
|
||||
x: 0.5
|
||||
y: 0.5
|
||||
spriteBorder:
|
||||
x: 0
|
||||
y: 0
|
||||
z: 0
|
||||
w: 0
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 1
|
||||
textureType: 2
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/Firebase.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 76030d6e0df83494e9117b97add1acf4
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/Firebase/Editor.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 92fb8dee4b9814d298c0f231de1e55e0
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
23
Assets/Firebase/Editor/AnalyticsDependencies.xml
Executable file
@@ -0,0 +1,23 @@
|
||||
<!-- Copyright (C) 2019 Google Inc. All Rights Reserved.
|
||||
|
||||
FirebaseAnalytics iOS and Android Dependencies.
|
||||
-->
|
||||
|
||||
<dependencies>
|
||||
<remoteSwiftPackage url="https://github.com/firebase/firebase-ios-sdk.git" version="12.13.0">
|
||||
<swiftPackage name="FirebaseAnalytics" replacesPod="Firebase/Analytics"/>
|
||||
</remoteSwiftPackage>
|
||||
<iosPods>
|
||||
<iosPod name="Firebase/Analytics" version="12.13.0" minTargetSdk="15.0">
|
||||
</iosPod>
|
||||
</iosPods>
|
||||
<androidPackages>
|
||||
<androidPackage spec="com.google.firebase:firebase-analytics:23.2.0">
|
||||
</androidPackage>
|
||||
<androidPackage spec="com.google.firebase:firebase-analytics-unity:13.11.0">
|
||||
<repositories>
|
||||
<repository>Assets/Firebase/m2repository</repository>
|
||||
</repositories>
|
||||
</androidPackage>
|
||||
</androidPackages>
|
||||
</dependencies>
|
||||
11
Assets/Firebase/Editor/AnalyticsDependencies.xml.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1e3c2da79be842cd838a9ddd70d20fa9
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Firebase/Editor/AnalyticsDependencies.xml
|
||||
timeCreated: 1480838400
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
27
Assets/Firebase/Editor/AppDependencies.xml
Executable file
@@ -0,0 +1,27 @@
|
||||
<!-- Copyright (C) 2019 Google Inc. All Rights Reserved.
|
||||
|
||||
FirebaseApp iOS and Android Dependencies.
|
||||
-->
|
||||
|
||||
<dependencies>
|
||||
<remoteSwiftPackage url="https://github.com/firebase/firebase-ios-sdk.git" version="12.13.0">
|
||||
<swiftPackage name="FirebaseCore" replacesPod="Firebase/Core"/>
|
||||
</remoteSwiftPackage>
|
||||
<iosPods>
|
||||
<iosPod name="Firebase/Core" version="12.13.0" minTargetSdk="15.0">
|
||||
</iosPod>
|
||||
</iosPods>
|
||||
<androidPackages>
|
||||
<androidPackage spec="com.google.firebase:firebase-common:22.0.1">
|
||||
</androidPackage>
|
||||
<androidPackage spec="com.google.firebase:firebase-analytics:23.2.0">
|
||||
</androidPackage>
|
||||
<androidPackage spec="com.google.android.gms:play-services-base:18.10.0">
|
||||
</androidPackage>
|
||||
<androidPackage spec="com.google.firebase:firebase-app-unity:13.11.0">
|
||||
<repositories>
|
||||
<repository>Assets/Firebase/m2repository</repository>
|
||||
</repositories>
|
||||
</androidPackage>
|
||||
</androidPackages>
|
||||
</dependencies>
|
||||
11
Assets/Firebase/Editor/AppDependencies.xml.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9b63af95d9364af4a3d8ce58738b6223
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Firebase/Editor/AppDependencies.xml
|
||||
timeCreated: 1480838400
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
25
Assets/Firebase/Editor/CrashlyticsDependencies.xml
Executable file
@@ -0,0 +1,25 @@
|
||||
<!-- Copyright (C) 2019 Google Inc. All Rights Reserved.
|
||||
|
||||
FirebaseCrashlytics iOS and Android Dependencies.
|
||||
-->
|
||||
|
||||
<dependencies>
|
||||
<remoteSwiftPackage url="https://github.com/firebase/firebase-ios-sdk.git" version="12.13.0">
|
||||
<swiftPackage name="FirebaseCrashlytics" replacesPod="Firebase/Crashlytics"/>
|
||||
</remoteSwiftPackage>
|
||||
<iosPods>
|
||||
<iosPod name="Firebase/Crashlytics" version="12.13.0" minTargetSdk="15.0">
|
||||
</iosPod>
|
||||
</iosPods>
|
||||
<androidPackages>
|
||||
<androidPackage spec="com.google.firebase:firebase-crashlytics-ndk:20.0.6">
|
||||
</androidPackage>
|
||||
<androidPackage spec="com.google.firebase:firebase-analytics:23.2.0">
|
||||
</androidPackage>
|
||||
<androidPackage spec="com.google.firebase:firebase-crashlytics-unity:13.11.0">
|
||||
<repositories>
|
||||
<repository>Assets/Firebase/m2repository</repository>
|
||||
</repositories>
|
||||
</androidPackage>
|
||||
</androidPackages>
|
||||
</dependencies>
|
||||
11
Assets/Firebase/Editor/CrashlyticsDependencies.xml.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: be690db6bda046a89e38b20ef9bfe06c
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Firebase/Editor/CrashlyticsDependencies.xml
|
||||
timeCreated: 1480838400
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Firebase/Editor/Firebase.Crashlytics.Editor.dll
Executable file
67
Assets/Firebase/Editor/Firebase.Crashlytics.Editor.dll.meta
Normal file
@@ -0,0 +1,67 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3781f2218eef4d5a823dba406baa434b
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_targets-editor
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Firebase/Editor/Firebase.Crashlytics.Editor.dll
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 3
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 0
|
||||
platformData:
|
||||
Android:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
Any:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
Editor:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
DefaultValueInitialized: true
|
||||
OS: AnyOS
|
||||
Linux64:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
OSXUniversal:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
WebGL:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
Win:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
Win64:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
WindowsStoreApps:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
iOS:
|
||||
enabled: 0
|
||||
settings:
|
||||
CompileFlags:
|
||||
FrameworkDependencies:
|
||||
tvOS:
|
||||
enabled: 0
|
||||
settings:
|
||||
CompileFlags:
|
||||
FrameworkDependencies:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Firebase/Editor/Firebase.Editor.dll
Executable file
67
Assets/Firebase/Editor/Firebase.Editor.dll.meta
Normal file
@@ -0,0 +1,67 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9f2edbf81053418f879076c05f816dc2
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_targets-editor
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Firebase/Editor/Firebase.Editor.dll
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 3
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 0
|
||||
platformData:
|
||||
Android:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
Any:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
Editor:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
DefaultValueInitialized: true
|
||||
OS: AnyOS
|
||||
Linux64:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
OSXUniversal:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
WebGL:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
Win:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
Win64:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
WindowsStoreApps:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
iOS:
|
||||
enabled: 0
|
||||
settings:
|
||||
CompileFlags:
|
||||
FrameworkDependencies:
|
||||
tvOS:
|
||||
enabled: 0
|
||||
settings:
|
||||
CompileFlags:
|
||||
FrameworkDependencies:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
72
Assets/Firebase/Editor/FirebaseAnalytics_version-13.11.0_manifest.txt
Executable file
@@ -0,0 +1,72 @@
|
||||
Assets/Editor Default Resources/Firebase/fb_analytics.png
|
||||
Assets/Editor Default Resources/Firebase/fb_analytics_dark.png
|
||||
Assets/Editor Default Resources/Firebase/fb_auth.png
|
||||
Assets/Editor Default Resources/Firebase/fb_auth_dark.png
|
||||
Assets/Editor Default Resources/Firebase/fb_cloud_messaging.png
|
||||
Assets/Editor Default Resources/Firebase/fb_cloud_messaging_dark.png
|
||||
Assets/Editor Default Resources/Firebase/fb_config.png
|
||||
Assets/Editor Default Resources/Firebase/fb_config_dark.png
|
||||
Assets/Editor Default Resources/Firebase/fb_crashlytics.png
|
||||
Assets/Editor Default Resources/Firebase/fb_crashlytics_dark.png
|
||||
Assets/Editor Default Resources/Firebase/fb_database.png
|
||||
Assets/Editor Default Resources/Firebase/fb_database_dark.png
|
||||
Assets/Editor Default Resources/Firebase/fb_functions.png
|
||||
Assets/Editor Default Resources/Firebase/fb_functions_dark.png
|
||||
Assets/Editor Default Resources/Firebase/fb_storage.png
|
||||
Assets/Editor Default Resources/Firebase/fb_storage_dark.png
|
||||
Assets/Editor Default Resources/Firebase/firebase_lockup.png
|
||||
Assets/Editor Default Resources/Firebase/firebase_lockup_dark.png
|
||||
Assets/ExternalDependencyManager/Editor/1.2.187/Google.IOSResolver.dll
|
||||
Assets/ExternalDependencyManager/Editor/1.2.187/Google.IOSResolver.pdb
|
||||
Assets/ExternalDependencyManager/Editor/1.2.187/Google.JarResolver.dll
|
||||
Assets/ExternalDependencyManager/Editor/1.2.187/Google.JarResolver.pdb
|
||||
Assets/ExternalDependencyManager/Editor/1.2.187/Google.PackageManagerResolver.dll
|
||||
Assets/ExternalDependencyManager/Editor/1.2.187/Google.PackageManagerResolver.pdb
|
||||
Assets/ExternalDependencyManager/Editor/1.2.187/Google.VersionHandlerImpl.dll
|
||||
Assets/ExternalDependencyManager/Editor/1.2.187/Google.VersionHandlerImpl.pdb
|
||||
Assets/ExternalDependencyManager/Editor/CHANGELOG.md
|
||||
Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll
|
||||
Assets/ExternalDependencyManager/Editor/Google.VersionHandler.pdb
|
||||
Assets/ExternalDependencyManager/Editor/LICENSE
|
||||
Assets/ExternalDependencyManager/Editor/README.md
|
||||
Assets/ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.187_manifest.txt
|
||||
Assets/Firebase/Editor/AnalyticsDependencies.xml
|
||||
Assets/Firebase/Editor/AppDependencies.xml
|
||||
Assets/Firebase/Editor/Firebase.Editor.dll
|
||||
Assets/Firebase/Editor/Firebase.Editor.pdb
|
||||
Assets/Firebase/Editor/generate_xml_from_google_services_json.exe
|
||||
Assets/Firebase/Editor/generate_xml_from_google_services_json.py
|
||||
Assets/Firebase/FirebaseApp/Internal/AssemblyInfo.cs
|
||||
Assets/Firebase/FirebaseApp/Internal/Firebase.App.Internal.asmdef
|
||||
Assets/Firebase/FirebaseApp/Internal/FirebaseInterops.cs
|
||||
Assets/Firebase/FirebaseApp/Internal/HttpHelpers.cs
|
||||
Assets/Firebase/FirebaseApp/Internal/link.xml
|
||||
Assets/Firebase/Plugins/Firebase.Analytics.dll
|
||||
Assets/Firebase/Plugins/Firebase.Analytics.pdb
|
||||
Assets/Firebase/Plugins/Firebase.App.dll
|
||||
Assets/Firebase/Plugins/Firebase.App.pdb
|
||||
Assets/Firebase/Plugins/Firebase.Platform.dll
|
||||
Assets/Firebase/Plugins/Firebase.Platform.pdb
|
||||
Assets/Firebase/Plugins/Firebase.TaskExtension.dll
|
||||
Assets/Firebase/Plugins/Firebase.TaskExtension.pdb
|
||||
Assets/Firebase/Plugins/Google.MiniJson.dll
|
||||
Assets/Firebase/Plugins/iOS/Firebase.Analytics.dll
|
||||
Assets/Firebase/Plugins/iOS/Firebase.Analytics.pdb
|
||||
Assets/Firebase/Plugins/iOS/Firebase.App.dll
|
||||
Assets/Firebase/Plugins/iOS/Firebase.App.pdb
|
||||
Assets/Firebase/Plugins/x86_64/FirebaseCppAnalytics.bundle
|
||||
Assets/Firebase/Plugins/x86_64/FirebaseCppAnalytics.dll
|
||||
Assets/Firebase/Plugins/x86_64/FirebaseCppAnalytics.so
|
||||
Assets/Firebase/Plugins/x86_64/FirebaseCppApp-13_11_0.bundle
|
||||
Assets/Firebase/Plugins/x86_64/FirebaseCppApp-13_11_0.dll
|
||||
Assets/Firebase/Plugins/x86_64/FirebaseCppApp-13_11_0.so
|
||||
Assets/Firebase/m2repository/com/google/firebase/firebase-analytics-unity/13.11.0/firebase-analytics-unity-13.11.0.pom
|
||||
Assets/Firebase/m2repository/com/google/firebase/firebase-analytics-unity/13.11.0/firebase-analytics-unity-13.11.0.srcaar
|
||||
Assets/Firebase/m2repository/com/google/firebase/firebase-analytics-unity/maven-metadata.xml
|
||||
Assets/Firebase/m2repository/com/google/firebase/firebase-app-unity/13.11.0/firebase-app-unity-13.11.0.pom
|
||||
Assets/Firebase/m2repository/com/google/firebase/firebase-app-unity/13.11.0/firebase-app-unity-13.11.0.srcaar
|
||||
Assets/Firebase/m2repository/com/google/firebase/firebase-app-unity/maven-metadata.xml
|
||||
Assets/Plugins/iOS/Firebase/libFirebaseCppAnalytics.a
|
||||
Assets/Plugins/iOS/Firebase/libFirebaseCppApp.a
|
||||
Assets/Plugins/tvOS/Firebase/libFirebaseCppAnalytics.a
|
||||
Assets/Plugins/tvOS/Firebase/libFirebaseCppApp.a
|
||||
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a9a3a847307045ea83fa26ebe0fee848
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_manifest
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Firebase/Editor/FirebaseAnalytics_version-13.11.0_manifest.txt
|
||||
- gvhp_manifestname-0Google Analytics
|
||||
- gvhp_manifestname-1FirebaseAnalytics
|
||||
timeCreated: 0
|
||||
71
Assets/Firebase/Editor/FirebaseCrashlytics_version-13.11.0_manifest.txt
Executable file
@@ -0,0 +1,71 @@
|
||||
Assets/Editor Default Resources/Firebase/fb_analytics.png
|
||||
Assets/Editor Default Resources/Firebase/fb_analytics_dark.png
|
||||
Assets/Editor Default Resources/Firebase/fb_auth.png
|
||||
Assets/Editor Default Resources/Firebase/fb_auth_dark.png
|
||||
Assets/Editor Default Resources/Firebase/fb_cloud_messaging.png
|
||||
Assets/Editor Default Resources/Firebase/fb_cloud_messaging_dark.png
|
||||
Assets/Editor Default Resources/Firebase/fb_config.png
|
||||
Assets/Editor Default Resources/Firebase/fb_config_dark.png
|
||||
Assets/Editor Default Resources/Firebase/fb_crashlytics.png
|
||||
Assets/Editor Default Resources/Firebase/fb_crashlytics_dark.png
|
||||
Assets/Editor Default Resources/Firebase/fb_database.png
|
||||
Assets/Editor Default Resources/Firebase/fb_database_dark.png
|
||||
Assets/Editor Default Resources/Firebase/fb_functions.png
|
||||
Assets/Editor Default Resources/Firebase/fb_functions_dark.png
|
||||
Assets/Editor Default Resources/Firebase/fb_storage.png
|
||||
Assets/Editor Default Resources/Firebase/fb_storage_dark.png
|
||||
Assets/Editor Default Resources/Firebase/firebase_lockup.png
|
||||
Assets/Editor Default Resources/Firebase/firebase_lockup_dark.png
|
||||
Assets/ExternalDependencyManager/Editor/1.2.187/Google.IOSResolver.dll
|
||||
Assets/ExternalDependencyManager/Editor/1.2.187/Google.IOSResolver.pdb
|
||||
Assets/ExternalDependencyManager/Editor/1.2.187/Google.JarResolver.dll
|
||||
Assets/ExternalDependencyManager/Editor/1.2.187/Google.JarResolver.pdb
|
||||
Assets/ExternalDependencyManager/Editor/1.2.187/Google.PackageManagerResolver.dll
|
||||
Assets/ExternalDependencyManager/Editor/1.2.187/Google.PackageManagerResolver.pdb
|
||||
Assets/ExternalDependencyManager/Editor/1.2.187/Google.VersionHandlerImpl.dll
|
||||
Assets/ExternalDependencyManager/Editor/1.2.187/Google.VersionHandlerImpl.pdb
|
||||
Assets/ExternalDependencyManager/Editor/CHANGELOG.md
|
||||
Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll
|
||||
Assets/ExternalDependencyManager/Editor/Google.VersionHandler.pdb
|
||||
Assets/ExternalDependencyManager/Editor/LICENSE
|
||||
Assets/ExternalDependencyManager/Editor/README.md
|
||||
Assets/ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.187_manifest.txt
|
||||
Assets/Firebase/Editor/AppDependencies.xml
|
||||
Assets/Firebase/Editor/CrashlyticsDependencies.xml
|
||||
Assets/Firebase/Editor/Firebase.Crashlytics.Editor.dll
|
||||
Assets/Firebase/Editor/Firebase.Crashlytics.Editor.pdb
|
||||
Assets/Firebase/Editor/Firebase.Editor.dll
|
||||
Assets/Firebase/Editor/Firebase.Editor.pdb
|
||||
Assets/Firebase/Editor/generate_xml_from_google_services_json.exe
|
||||
Assets/Firebase/Editor/generate_xml_from_google_services_json.py
|
||||
Assets/Firebase/FirebaseApp/Internal/AssemblyInfo.cs
|
||||
Assets/Firebase/FirebaseApp/Internal/Firebase.App.Internal.asmdef
|
||||
Assets/Firebase/FirebaseApp/Internal/FirebaseInterops.cs
|
||||
Assets/Firebase/FirebaseApp/Internal/HttpHelpers.cs
|
||||
Assets/Firebase/FirebaseApp/Internal/link.xml
|
||||
Assets/Firebase/Plugins/Firebase.App.dll
|
||||
Assets/Firebase/Plugins/Firebase.App.pdb
|
||||
Assets/Firebase/Plugins/Firebase.Crashlytics.dll
|
||||
Assets/Firebase/Plugins/Firebase.Crashlytics.pdb
|
||||
Assets/Firebase/Plugins/Firebase.Platform.dll
|
||||
Assets/Firebase/Plugins/Firebase.Platform.pdb
|
||||
Assets/Firebase/Plugins/Firebase.TaskExtension.dll
|
||||
Assets/Firebase/Plugins/Firebase.TaskExtension.pdb
|
||||
Assets/Firebase/Plugins/Google.MiniJson.dll
|
||||
Assets/Firebase/Plugins/iOS/Firebase.App.dll
|
||||
Assets/Firebase/Plugins/iOS/Firebase.App.pdb
|
||||
Assets/Firebase/Plugins/iOS/Firebase.Crashlytics.dll
|
||||
Assets/Firebase/Plugins/iOS/Firebase.Crashlytics.pdb
|
||||
Assets/Firebase/Plugins/x86_64/FirebaseCppApp-13_11_0.bundle
|
||||
Assets/Firebase/Plugins/x86_64/FirebaseCppApp-13_11_0.dll
|
||||
Assets/Firebase/Plugins/x86_64/FirebaseCppApp-13_11_0.so
|
||||
Assets/Firebase/m2repository/com/google/firebase/firebase-app-unity/13.11.0/firebase-app-unity-13.11.0.pom
|
||||
Assets/Firebase/m2repository/com/google/firebase/firebase-app-unity/13.11.0/firebase-app-unity-13.11.0.srcaar
|
||||
Assets/Firebase/m2repository/com/google/firebase/firebase-app-unity/maven-metadata.xml
|
||||
Assets/Firebase/m2repository/com/google/firebase/firebase-crashlytics-unity/13.11.0/firebase-crashlytics-unity-13.11.0.pom
|
||||
Assets/Firebase/m2repository/com/google/firebase/firebase-crashlytics-unity/13.11.0/firebase-crashlytics-unity-13.11.0.srcaar
|
||||
Assets/Firebase/m2repository/com/google/firebase/firebase-crashlytics-unity/maven-metadata.xml
|
||||
Assets/Plugins/iOS/Firebase/libFirebaseCppApp.a
|
||||
Assets/Plugins/iOS/Firebase/libFirebaseCppCrashlytics.a
|
||||
Assets/Plugins/tvOS/Firebase/libFirebaseCppApp.a
|
||||
Assets/Plugins/tvOS/Firebase/libFirebaseCppCrashlytics.a
|
||||
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6e81ab079399484d877f51756833fe48
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_manifest
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Firebase/Editor/FirebaseCrashlytics_version-13.11.0_manifest.txt
|
||||
- gvhp_manifestname-0Firebase Crashlytics
|
||||
- gvhp_manifestname-1FirebaseCrashlytics
|
||||
timeCreated: 0
|
||||
BIN
Assets/Firebase/Editor/generate_xml_from_google_services_json.exe
Executable file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ae88c0972b7448b5b36def1716f1d711
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Firebase/Editor/generate_xml_from_google_services_json.exe
|
||||
timeCreated: 1480838400
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
498
Assets/Firebase/Editor/generate_xml_from_google_services_json.py
Executable file
@@ -0,0 +1,498 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# Copyright 2016 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
"""Stand-alone implementation of the Gradle Firebase plugin.
|
||||
|
||||
Converts the services json file to xml:
|
||||
https://googleplex-android.googlesource.com/platform/tools/base/+/studio-master-dev/build-system/google-services/src/main/groovy/com/google/gms/googleservices
|
||||
"""
|
||||
|
||||
__author__ = 'Wouter van Oortmerssen'
|
||||
|
||||
import argparse
|
||||
import ctypes
|
||||
import json
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from xml.etree import ElementTree
|
||||
|
||||
if platform.system().lower() == 'windows':
|
||||
import ctypes.wintypes # pylint: disable=g-import-not-at-top
|
||||
|
||||
# Map Python 2's unicode method to encode a string as bytes in python 3.
|
||||
try:
|
||||
unicode('') # See whether unicode class is available (Python < 3)
|
||||
except NameError:
|
||||
unicode = str # pylint: disable=redefined-builtin,invalid-name
|
||||
|
||||
# Input filename if it isn't set.
|
||||
DEFAULT_INPUT_FILENAME = 'app/google-services.json'
|
||||
# Output filename if it isn't set.
|
||||
DEFAULT_OUTPUT_FILENAME = 'res/values/googleservices.xml'
|
||||
# Input filename for .plist files, if it isn't set.
|
||||
DEFAULT_PLIST_INPUT_FILENAME = 'GoogleService-Info.plist'
|
||||
# Output filename for .json files, if it isn't set.
|
||||
DEFAULT_JSON_OUTPUT_FILENAME = 'google-services-desktop.json'
|
||||
|
||||
OAUTH_CLIENT_TYPE_ANDROID_APP = 1
|
||||
OAUTH_CLIENT_TYPE_WEB = 3
|
||||
|
||||
|
||||
def read_xml_value(xml_node):
|
||||
"""Utility method for reading values from the plist XML.
|
||||
|
||||
Args:
|
||||
xml_node: An ElementTree node, that contains a value.
|
||||
|
||||
Returns:
|
||||
The value of the node, or None, if it could not be read.
|
||||
"""
|
||||
if xml_node.tag == 'string':
|
||||
return xml_node.text
|
||||
elif xml_node.tag == 'integer':
|
||||
return int(xml_node.text)
|
||||
elif xml_node.tag == 'real':
|
||||
return float(xml_node.text)
|
||||
elif xml_node.tag == 'false':
|
||||
return 0
|
||||
elif xml_node.tag == 'true':
|
||||
return 1
|
||||
else:
|
||||
# other types of input are ignored. (data, dates, arrays, etc.)
|
||||
return None
|
||||
|
||||
|
||||
def construct_plist_dictionary(xml_root):
|
||||
"""Constructs a dictionary of values based on the contents of a plist file.
|
||||
|
||||
Args:
|
||||
xml_root: An ElementTree node, that represents the root of the xml file
|
||||
that is to be parsed. (Which should be a dictionary containing
|
||||
key-value pairs of the properties that need to be extracted.)
|
||||
|
||||
Returns:
|
||||
A dictionary, containing key-value pairs for all (supported) entries in the
|
||||
node.
|
||||
"""
|
||||
xml_dict = xml_root.find('dict')
|
||||
|
||||
if xml_dict is None:
|
||||
return None
|
||||
|
||||
plist_dict = {}
|
||||
i = 0
|
||||
while i < len(xml_dict):
|
||||
if xml_dict[i].tag == 'key':
|
||||
key = xml_dict[i].text
|
||||
i += 1
|
||||
if i < len(xml_dict):
|
||||
value = read_xml_value(xml_dict[i])
|
||||
if value is not None:
|
||||
plist_dict[key] = value
|
||||
i += 1
|
||||
|
||||
return plist_dict
|
||||
|
||||
|
||||
def update_dict_keys(key_map, input_dict):
|
||||
"""Creates a dict from input_dict with the same values but new keys.
|
||||
|
||||
Two dictionaries are passed to this function: the key_map that represents a
|
||||
mapping of source keys to destination keys, and the input_dict that is the
|
||||
dictionary that is to be duplicated, replacing any key that matches a source
|
||||
key with a destination key. Source keys that are not present in the
|
||||
input_dict will not have their destination key represented in the result.
|
||||
|
||||
In other words, if key_map is `{'old': 'new', 'foo': 'bar'}`, and input_dict
|
||||
is `{'old': 10}`, the result will be `{'new': 10}`.
|
||||
|
||||
Args:
|
||||
key_map (dict): A dictionary of strings to strings that maps source keys to
|
||||
destination keys.
|
||||
input_dict (dict): The dictionary of string keys to any value type, which
|
||||
is to be duplicated, replacing source keys with the corresponding
|
||||
destination keys from key_map.
|
||||
|
||||
Returns:
|
||||
dict: A new dictionary with updated keys.
|
||||
"""
|
||||
return {
|
||||
new_key: input_dict[old_key]
|
||||
for (old_key, new_key) in key_map.items()
|
||||
if old_key in input_dict
|
||||
}
|
||||
|
||||
|
||||
def construct_google_services_json(xml_dict):
|
||||
"""Constructs a google services json file from a dictionary.
|
||||
|
||||
Args:
|
||||
xml_dict: A dictionary of all the key/value pairs that are needed for the
|
||||
output json file.
|
||||
Returns:
|
||||
A string representing the output json file.
|
||||
"""
|
||||
|
||||
try:
|
||||
json_struct = {
|
||||
'project_info':
|
||||
update_dict_keys(
|
||||
{
|
||||
'GCM_SENDER_ID': 'project_number',
|
||||
'DATABASE_URL': 'firebase_url',
|
||||
'PROJECT_ID': 'project_id',
|
||||
'STORAGE_BUCKET': 'storage_bucket'
|
||||
}, xml_dict),
|
||||
'client': [{
|
||||
'client_info': {
|
||||
'mobilesdk_app_id': xml_dict['GOOGLE_APP_ID'],
|
||||
'android_client_info': {
|
||||
'package_name': xml_dict['BUNDLE_ID']
|
||||
}
|
||||
},
|
||||
'api_key': [{
|
||||
'current_key': xml_dict['API_KEY']
|
||||
}],
|
||||
'services': {
|
||||
'analytics_service': {
|
||||
'status': xml_dict['IS_ANALYTICS_ENABLED']
|
||||
},
|
||||
'appinvite_service': {
|
||||
'status': xml_dict['IS_APPINVITE_ENABLED']
|
||||
}
|
||||
}
|
||||
},],
|
||||
'configuration_version':
|
||||
'1'
|
||||
}
|
||||
# OAuth client is optional, but include it if present.
|
||||
if 'CLIENT_ID' in xml_dict:
|
||||
json_struct['client'][0]['oauth_client'] = [{
|
||||
'client_id': xml_dict['CLIENT_ID'],
|
||||
}]
|
||||
return json.dumps(json_struct, indent=2)
|
||||
except KeyError as e:
|
||||
sys.stderr.write('Could not find key in plist file: [%s]\n' % (e.args[0]))
|
||||
return None
|
||||
|
||||
|
||||
def convert_plist_to_json(plist_string, input_filename):
|
||||
"""Converts an input plist string into a .json file and saves it.
|
||||
|
||||
Args:
|
||||
plist_string: The contents of the loaded plist file.
|
||||
|
||||
input_filename: The file name that the plist data was read from.
|
||||
Returns:
|
||||
the converted string, or None if there were errors.
|
||||
"""
|
||||
|
||||
try:
|
||||
root = ElementTree.fromstring(plist_string)
|
||||
except ElementTree.ParseError:
|
||||
sys.stderr.write('Error parsing file %s.\n'
|
||||
'It does not appear to be valid XML.\n' % (input_filename))
|
||||
return None
|
||||
|
||||
plist_dict = construct_plist_dictionary(root)
|
||||
if plist_dict is None:
|
||||
sys.stderr.write('In file %s, could not locate a top-level \'dict\' '
|
||||
'element.\n'
|
||||
'File format should be plist XML, with a top-level '
|
||||
'dictionary containing project settings as key-value '
|
||||
'pairs.\n' % (input_filename))
|
||||
return None
|
||||
|
||||
json_string = construct_google_services_json(plist_dict)
|
||||
return json_string
|
||||
|
||||
|
||||
def gen_string(parent, name, text):
|
||||
"""Generate one <string /> element and put into the list of keeps.
|
||||
|
||||
Args:
|
||||
parent: The object that will hold the string.
|
||||
name: The name to store the string under.
|
||||
text: The text of the string.
|
||||
"""
|
||||
if text:
|
||||
prev = parent.get('tools:keep', '')
|
||||
if prev:
|
||||
prev += ','
|
||||
parent.set('tools:keep', prev + '@string/' + name)
|
||||
child = ElementTree.SubElement(parent, 'string', {
|
||||
'name': name,
|
||||
'translatable': 'false'
|
||||
})
|
||||
child.text = text
|
||||
|
||||
|
||||
def indent(elem, level=0):
|
||||
"""Recurse through XML tree and add indentation.
|
||||
|
||||
Args:
|
||||
elem: The element to recurse over
|
||||
level: The current indentation level.
|
||||
"""
|
||||
i = '\n' + level*' '
|
||||
if elem is not None:
|
||||
if not elem.text or not elem.text.strip():
|
||||
elem.text = i + ' '
|
||||
if not elem.tail or not elem.tail.strip():
|
||||
elem.tail = i
|
||||
for elem in elem:
|
||||
indent(elem, level+1)
|
||||
if not elem.tail or not elem.tail.strip():
|
||||
elem.tail = i
|
||||
else:
|
||||
if level and (not elem.tail or not elem.tail.strip()):
|
||||
elem.tail = i
|
||||
|
||||
|
||||
def argv_as_unicode_win32():
|
||||
"""Returns unicode command line arguments on windows.
|
||||
"""
|
||||
|
||||
get_command_line_w = ctypes.cdll.kernel32.GetCommandLineW
|
||||
get_command_line_w.restype = ctypes.wintypes.LPCWSTR
|
||||
|
||||
# CommandLineToArgvW parses the Unicode command line
|
||||
command_line_to_argv_w = ctypes.windll.shell32.CommandLineToArgvW
|
||||
command_line_to_argv_w.argtypes = [
|
||||
ctypes.wintypes.LPCWSTR,
|
||||
ctypes.POINTER(ctypes.c_int)
|
||||
]
|
||||
command_line_to_argv_w.restype = ctypes.POINTER(
|
||||
ctypes.wintypes.LPWSTR)
|
||||
|
||||
argc = ctypes.c_int(0)
|
||||
argv = command_line_to_argv_w(get_command_line_w(), argc)
|
||||
|
||||
# Strip the python executable from the arguments if it exists
|
||||
# (It would be listed as the first argument on the windows command line, but
|
||||
# not in the arguments to the python script)
|
||||
sys_argv_len = len(sys.argv)
|
||||
return [unicode(argv[i]) for i in
|
||||
range(argc.value - sys_argv_len, argc.value)]
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description=((
|
||||
'Converts a Firebase %s into %s similar to the Gradle plugin, or '
|
||||
'converts a Firebase %s into a %s suitible for use on desktop apps.' %
|
||||
(DEFAULT_INPUT_FILENAME, DEFAULT_OUTPUT_FILENAME,
|
||||
DEFAULT_PLIST_INPUT_FILENAME, DEFAULT_JSON_OUTPUT_FILENAME))))
|
||||
parser.add_argument('-i', help='Override input file name',
|
||||
metavar='FILE', required=False)
|
||||
parser.add_argument('-o', help='Override destination file name',
|
||||
metavar='FILE', required=False)
|
||||
parser.add_argument('-p', help=('Package ID to select within the set of '
|
||||
'packages in the input file. If this is '
|
||||
'not specified, the first package in the '
|
||||
'input file is selected.'))
|
||||
parser.add_argument('-l', help=('List all package IDs referenced by the '
|
||||
'input file. If this is specified, '
|
||||
'the output file is not created.'),
|
||||
action='store_true', default=False, required=False)
|
||||
parser.add_argument('-f', help=('Print project fields from the input file '
|
||||
'in the form \'name=value\\n\' for each '
|
||||
'field. If this is specified, the output '
|
||||
'is not created.'),
|
||||
action='store_true', default=False, required=False)
|
||||
parser.add_argument(
|
||||
'--plist',
|
||||
help=(
|
||||
'Specifies a plist file to convert to a JSON configuration file. '
|
||||
'If this is enabled, the script will expect a .plist file as input, '
|
||||
'which it will convert into %s file. The output file is '
|
||||
'*not* suitable for use with Firebase on Android.' %
|
||||
(DEFAULT_JSON_OUTPUT_FILENAME)),
|
||||
action='store_true',
|
||||
default=False,
|
||||
required=False)
|
||||
|
||||
# python 2 on Windows doesn't handle unicode arguments well, so we need to
|
||||
# pre-process the command line arguments before trying to parse them.
|
||||
if platform.system() == 'Windows':
|
||||
sys.argv = argv_as_unicode_win32()
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.plist:
|
||||
input_filename = DEFAULT_PLIST_INPUT_FILENAME
|
||||
output_filename = DEFAULT_JSON_OUTPUT_FILENAME
|
||||
else:
|
||||
input_filename = DEFAULT_INPUT_FILENAME
|
||||
output_filename = DEFAULT_OUTPUT_FILENAME
|
||||
|
||||
if args.i:
|
||||
# Encode the input string (type unicode) as a normal string (type str)
|
||||
# using the 'utf-8' encoding so that it can be worked with the same as
|
||||
# input names from other sources (like the defaults).
|
||||
input_filename_raw = args.i.encode('utf-8')
|
||||
# Decode the filename to a unicode string using the 'utf-8' encoding to
|
||||
# properly handle filepaths with unicode characters in them.
|
||||
input_filename = input_filename_raw.decode('utf-8')
|
||||
|
||||
if args.o:
|
||||
output_filename = args.o
|
||||
|
||||
with open(input_filename, 'r') as ifile:
|
||||
file_string = ifile.read()
|
||||
|
||||
json_string = None
|
||||
if args.plist:
|
||||
json_string = convert_plist_to_json(file_string, input_filename)
|
||||
if json_string is None:
|
||||
return 1
|
||||
jsobj = json.loads(json_string)
|
||||
else:
|
||||
jsobj = json.loads(file_string)
|
||||
|
||||
root = ElementTree.Element('resources')
|
||||
root.set('xmlns:tools', 'http://schemas.android.com/tools')
|
||||
|
||||
project_info = jsobj.get('project_info')
|
||||
if project_info:
|
||||
gen_string(root, 'firebase_database_url', project_info.get('firebase_url'))
|
||||
gen_string(root, 'gcm_defaultSenderId', project_info.get('project_number'))
|
||||
gen_string(root, 'google_storage_bucket',
|
||||
project_info.get('storage_bucket'))
|
||||
gen_string(root, 'project_id', project_info.get('project_id'))
|
||||
|
||||
if args.f:
|
||||
if not project_info:
|
||||
sys.stderr.write('No project info found in %s.' % input_filename)
|
||||
return 1
|
||||
for field, value in sorted(project_info.items()):
|
||||
sys.stdout.write('%s=%s\n' % (field, value))
|
||||
return 0
|
||||
|
||||
packages = set()
|
||||
client_list = jsobj.get('client')
|
||||
if client_list:
|
||||
# Search for the user specified package in the file.
|
||||
selected_package_name = ''
|
||||
selected_client = client_list[0]
|
||||
find_package_name = args.p
|
||||
for client in client_list:
|
||||
package_name = client.get('client_info', {}).get(
|
||||
'android_client_info', {}).get('package_name', '')
|
||||
if not package_name:
|
||||
package_name = client.get('oauth_client', {}).get(
|
||||
'android_info', {}).get('package_name', '')
|
||||
if package_name:
|
||||
if not selected_package_name:
|
||||
selected_package_name = package_name
|
||||
selected_client = client
|
||||
if package_name == find_package_name:
|
||||
selected_package_name = package_name
|
||||
selected_client = client
|
||||
packages.add(package_name)
|
||||
|
||||
if args.p and selected_package_name != find_package_name:
|
||||
sys.stderr.write('No packages found in %s which match the package '
|
||||
'name %s\n'
|
||||
'\n'
|
||||
'Found the following:\n'
|
||||
'%s\n' % (input_filename, find_package_name,
|
||||
'\n'.join(packages)))
|
||||
return 1
|
||||
|
||||
client_api_key = selected_client.get('api_key')
|
||||
if client_api_key:
|
||||
client_api_key0 = client_api_key[0]
|
||||
gen_string(root, 'google_api_key', client_api_key0.get('current_key'))
|
||||
gen_string(root, 'google_crash_reporting_api_key',
|
||||
client_api_key0.get('current_key'))
|
||||
|
||||
client_info = selected_client.get('client_info')
|
||||
if client_info:
|
||||
gen_string(root, 'google_app_id', client_info.get('mobilesdk_app_id'))
|
||||
|
||||
# Only include the first matching OAuth client ID per type.
|
||||
client_id_web_parsed = False
|
||||
client_id_android_parsed = False
|
||||
|
||||
oauth_client_list = selected_client.get('oauth_client')
|
||||
if oauth_client_list:
|
||||
for oauth_client in oauth_client_list:
|
||||
client_type = oauth_client.get('client_type')
|
||||
client_id = oauth_client.get('client_id')
|
||||
if not (client_type and client_id): continue
|
||||
if (client_type == OAUTH_CLIENT_TYPE_WEB and
|
||||
not client_id_web_parsed):
|
||||
gen_string(root, 'default_web_client_id', client_id)
|
||||
client_id_web_parsed = True
|
||||
if (client_type == OAUTH_CLIENT_TYPE_ANDROID_APP and
|
||||
not client_id_android_parsed):
|
||||
gen_string(root, 'default_android_client_id', client_id)
|
||||
client_id_android_parsed = True
|
||||
|
||||
services = selected_client.get('services')
|
||||
if services:
|
||||
ads_service = services.get('ads_service')
|
||||
if ads_service:
|
||||
gen_string(root, 'test_banner_ad_unit_id',
|
||||
ads_service.get('test_banner_ad_unit_id'))
|
||||
gen_string(root, 'test_interstitial_ad_unit_id',
|
||||
ads_service.get('test_interstitial_ad_unit_id'))
|
||||
analytics_service = services.get('analytics_service')
|
||||
if analytics_service:
|
||||
analytics_property = analytics_service.get('analytics_property')
|
||||
if analytics_property:
|
||||
gen_string(root, 'ga_trackingId',
|
||||
analytics_property.get('tracking_id'))
|
||||
# enable this once we have an example if this service being present
|
||||
# in the json data:
|
||||
maps_service_enabled = False
|
||||
if maps_service_enabled:
|
||||
maps_service = services.get('maps_service')
|
||||
if maps_service:
|
||||
maps_api_key = maps_service.get('api_key')
|
||||
if maps_api_key:
|
||||
for k in range(0, len(maps_api_key)):
|
||||
# generates potentially multiple of these keys, which is
|
||||
# the same behavior as the java plugin.
|
||||
gen_string(root, 'google_maps_key',
|
||||
maps_api_key[k].get('maps_api_key'))
|
||||
|
||||
tree = ElementTree.ElementTree(root)
|
||||
|
||||
indent(root)
|
||||
|
||||
if args.l:
|
||||
for package in sorted(packages):
|
||||
if package:
|
||||
sys.stdout.write(package + '\n')
|
||||
else:
|
||||
path = os.path.dirname(output_filename)
|
||||
|
||||
if path and not os.path.exists(path):
|
||||
os.makedirs(path)
|
||||
|
||||
if not args.plist:
|
||||
tree.write(output_filename, 'utf-8', True)
|
||||
else:
|
||||
with open(output_filename, 'w') as ofile:
|
||||
ofile.write(json_string)
|
||||
|
||||
return 0
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8f18ed76c0f04ce0a65736104f913ef8
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Firebase/Editor/generate_xml_from_google_services_json.py
|
||||
timeCreated: 1480838400
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/Firebase/FirebaseApp.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9bf777e8570954e5faa1c638fd0c68f7
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/Firebase/FirebaseApp/Internal.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d8f2a4a0f471748a1865f7d363c9bdc6
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
6
Assets/Firebase/FirebaseApp/Internal/AssemblyInfo.cs
Executable file
@@ -0,0 +1,6 @@
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
// Grant native C# Unity packages access to Firebase.App's internal helpers
|
||||
[assembly: InternalsVisibleTo("Firebase.Functions")]
|
||||
[assembly: InternalsVisibleTo("Firebase.FirebaseAI")]
|
||||
[assembly: InternalsVisibleTo("Firebase.FirebaseAI.TestApp")]
|
||||
11
Assets/Firebase/FirebaseApp/Internal/AssemblyInfo.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d640bc2403824e5599315e0050b99aeb
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Firebase/FirebaseApp/Internal/AssemblyInfo.cs
|
||||
timeCreated: 1480838400
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
17
Assets/Firebase/FirebaseApp/Internal/Firebase.App.Internal.asmdef
Executable file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "Firebase.App.Internal",
|
||||
"rootNamespace": "Firebase.Internal",
|
||||
"references": [],
|
||||
"includePlatforms": [],
|
||||
"excludePlatforms": [],
|
||||
"allowUnsafeCode": false,
|
||||
"overrideReferences": true,
|
||||
"precompiledReferences": [
|
||||
"Firebase.App.dll",
|
||||
"Firebase.Platform.dll"
|
||||
],
|
||||
"autoReferenced": true,
|
||||
"defineConstraints": [],
|
||||
"versionDefines": [],
|
||||
"noEngineReferences": false
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9b4ce77d2be44f25af03d4cbf9bee9f9
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Firebase/FirebaseApp/Internal/Firebase.App.Internal.asmdef
|
||||
timeCreated: 1480838400
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
461
Assets/Firebase/FirebaseApp/Internal/FirebaseInterops.cs
Executable file
@@ -0,0 +1,461 @@
|
||||
/*
|
||||
* Copyright 2025 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Net.Http;
|
||||
using System.Net.WebSockets;
|
||||
using System.Reflection;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Firebase.Internal
|
||||
{
|
||||
// Contains internal helper methods for interacting with other Firebase libraries.
|
||||
internal static class FirebaseInterops
|
||||
{
|
||||
// The cached fields for FirebaseApp reflection.
|
||||
private static PropertyInfo _dataCollectionProperty = null;
|
||||
|
||||
// The various App Check types needed to retrieve the token, cached via reflection on startup.
|
||||
private static Type _appCheckType;
|
||||
private static MethodInfo _appCheckGetInstanceMethod;
|
||||
private static MethodInfo _appCheckGetTokenMethod;
|
||||
private static MethodInfo _appCheckGetLimitedUseTokenMethod;
|
||||
private static PropertyInfo _appCheckTokenResultProperty;
|
||||
private static PropertyInfo _appCheckTokenTokenProperty;
|
||||
// Used to determine if the App Check reflection initialized successfully, and should work.
|
||||
private static bool _appCheckReflectionInitialized = false;
|
||||
// The header used by the AppCheck token.
|
||||
private const string appCheckHeader = "X-Firebase-AppCheck";
|
||||
|
||||
// The various Auth types needed to retrieve the token, cached via reflection on startup.
|
||||
private static Type _authType;
|
||||
private static MethodInfo _authGetAuthMethod;
|
||||
private static PropertyInfo _authCurrentUserProperty;
|
||||
private static MethodInfo _userTokenAsyncMethod;
|
||||
private static PropertyInfo _userTokenTaskResultProperty;
|
||||
// Used to determine if the Auth reflection initialized successfully, and should work.
|
||||
private static bool _authReflectionInitialized = false;
|
||||
// The header used by the AppCheck token.
|
||||
private const string authHeader = "Authorization";
|
||||
|
||||
static FirebaseInterops()
|
||||
{
|
||||
InitializeAppReflection();
|
||||
InitializeAppCheckReflection();
|
||||
InitializeAuthReflection();
|
||||
}
|
||||
|
||||
private static void LogError(string message)
|
||||
{
|
||||
#if FIREBASEAI_DEBUG_LOGGING
|
||||
UnityEngine.Debug.LogError(message);
|
||||
#endif
|
||||
}
|
||||
|
||||
// Cache the methods needed for FirebaseApp reflection.
|
||||
private static void InitializeAppReflection()
|
||||
{
|
||||
try
|
||||
{
|
||||
_dataCollectionProperty = typeof(FirebaseApp).GetProperty(
|
||||
"IsDataCollectionDefaultEnabled",
|
||||
BindingFlags.Instance | BindingFlags.NonPublic);
|
||||
if (_dataCollectionProperty == null)
|
||||
{
|
||||
LogError("Could not find FirebaseApp.IsDataCollectionDefaultEnabled property via reflection.");
|
||||
return;
|
||||
}
|
||||
if (_dataCollectionProperty.PropertyType != typeof(bool))
|
||||
{
|
||||
LogError("FirebaseApp.IsDataCollectionDefaultEnabled is not a bool, " +
|
||||
$"but is {_dataCollectionProperty.PropertyType}");
|
||||
return;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LogError($"Failed to initialize FirebaseApp reflection: {e}");
|
||||
}
|
||||
}
|
||||
|
||||
// Gets the property FirebaseApp.IsDataCollectionDefaultEnabled.
|
||||
public static bool GetIsDataCollectionDefaultEnabled(FirebaseApp firebaseApp)
|
||||
{
|
||||
if (firebaseApp == null || _dataCollectionProperty == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
return (bool)_dataCollectionProperty.GetValue(firebaseApp);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LogError($"Error accessing 'IsDataCollectionDefaultEnabled': {e}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// SDK version to use if unable to find it.
|
||||
private const string _unknownSdkVersion = "unknown";
|
||||
private static readonly Lazy<string> _sdkVersionFetcher = new(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
// Get the type Firebase.VersionInfo from the assembly that defines FirebaseApp.
|
||||
Type versionInfoType = typeof(FirebaseApp).Assembly.GetType("Firebase.VersionInfo");
|
||||
if (versionInfoType == null)
|
||||
{
|
||||
LogError("Firebase.VersionInfo type not found via reflection");
|
||||
return _unknownSdkVersion;
|
||||
}
|
||||
|
||||
// Firebase.VersionInfo.SdkVersion
|
||||
PropertyInfo sdkVersionProperty = versionInfoType.GetProperty(
|
||||
"SdkVersion",
|
||||
BindingFlags.Static | BindingFlags.NonPublic);
|
||||
if (sdkVersionProperty == null)
|
||||
{
|
||||
LogError("Firebase.VersionInfo.SdkVersion property not found via reflection.");
|
||||
return _unknownSdkVersion;
|
||||
}
|
||||
|
||||
return sdkVersionProperty.GetValue(null) as string ?? _unknownSdkVersion;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LogError($"Error accessing SdkVersion via reflection: {e}");
|
||||
return _unknownSdkVersion;
|
||||
}
|
||||
});
|
||||
|
||||
// Gets the internal property Firebase.VersionInfo.SdkVersion
|
||||
internal static string GetVersionInfoSdkVersion()
|
||||
{
|
||||
return _sdkVersionFetcher.Value;
|
||||
}
|
||||
|
||||
// Cache the various types and methods needed for AppCheck token retrieval.
|
||||
private static void InitializeAppCheckReflection()
|
||||
{
|
||||
const string firebaseAppCheckTypeName = "Firebase.AppCheck.FirebaseAppCheck, Firebase.AppCheck";
|
||||
const string getAppCheckTokenMethodName = "GetAppCheckTokenAsync";
|
||||
const string getLimitedUseAppCheckTokenMethodName = "GetLimitedUseAppCheckTokenAsync";
|
||||
|
||||
try
|
||||
{
|
||||
// Set this to false, to allow easy failing out via return.
|
||||
_appCheckReflectionInitialized = false;
|
||||
|
||||
_appCheckType = Type.GetType(firebaseAppCheckTypeName);
|
||||
if (_appCheckType == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Get the static method GetInstance(FirebaseApp app)
|
||||
_appCheckGetInstanceMethod = _appCheckType.GetMethod(
|
||||
"GetInstance", BindingFlags.Static | BindingFlags.Public, null,
|
||||
new Type[] { typeof(FirebaseApp) }, null);
|
||||
if (_appCheckGetInstanceMethod == null)
|
||||
{
|
||||
LogError("Could not find FirebaseAppCheck.GetInstance method via reflection.");
|
||||
return;
|
||||
}
|
||||
|
||||
// Get the instance method GetAppCheckTokenAsync(bool forceRefresh)
|
||||
_appCheckGetTokenMethod = _appCheckType.GetMethod(
|
||||
getAppCheckTokenMethodName, BindingFlags.Instance | BindingFlags.Public, null,
|
||||
new Type[] { typeof(bool) }, null);
|
||||
if (_appCheckGetTokenMethod == null)
|
||||
{
|
||||
LogError($"Could not find {getAppCheckTokenMethodName} method via reflection.");
|
||||
return;
|
||||
}
|
||||
|
||||
// Get the instance method GetLimitedUseAppCheckTokenAsync()
|
||||
_appCheckGetLimitedUseTokenMethod = _appCheckType.GetMethod(
|
||||
getLimitedUseAppCheckTokenMethodName, BindingFlags.Instance | BindingFlags.Public, null,
|
||||
Type.EmptyTypes, null);
|
||||
if (_appCheckGetLimitedUseTokenMethod == null)
|
||||
{
|
||||
LogError($"Could not find {getLimitedUseAppCheckTokenMethodName} method via reflection.");
|
||||
return;
|
||||
}
|
||||
|
||||
// Should be Task<AppCheckToken>
|
||||
Type appCheckTokenTaskType = _appCheckGetTokenMethod.ReturnType;
|
||||
|
||||
// Get the Result property from the Task<AppCheckToken>
|
||||
_appCheckTokenResultProperty = appCheckTokenTaskType.GetProperty("Result");
|
||||
if (_appCheckTokenResultProperty == null)
|
||||
{
|
||||
LogError("Could not find Result property on App Check token Task.");
|
||||
return;
|
||||
}
|
||||
|
||||
// Should be AppCheckToken
|
||||
Type appCheckTokenType = _appCheckTokenResultProperty.PropertyType;
|
||||
|
||||
_appCheckTokenTokenProperty = appCheckTokenType.GetProperty("Token");
|
||||
if (_appCheckTokenTokenProperty == null)
|
||||
{
|
||||
LogError($"Could not find Token property on AppCheckToken.");
|
||||
return;
|
||||
}
|
||||
|
||||
_appCheckReflectionInitialized = true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LogError($"Exception during static initialization of FirebaseInterops: {e}");
|
||||
}
|
||||
}
|
||||
|
||||
// Gets the AppCheck Token, assuming there is one. Otherwise, returns null.
|
||||
internal static async Task<string> GetAppCheckTokenAsync(FirebaseApp firebaseApp, bool limitedUse = false)
|
||||
{
|
||||
// If AppCheck reflection failed for any reason, nothing to do.
|
||||
if (!_appCheckReflectionInitialized)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// Get the FirebaseAppCheck instance for the current FirebaseApp
|
||||
object appCheckInstance = _appCheckGetInstanceMethod.Invoke(null, new object[] { firebaseApp });
|
||||
if (appCheckInstance == null)
|
||||
{
|
||||
LogError("Failed to get FirebaseAppCheck instance via reflection.");
|
||||
return null;
|
||||
}
|
||||
|
||||
object taskObject;
|
||||
if (limitedUse)
|
||||
{
|
||||
taskObject = _appCheckGetLimitedUseTokenMethod.Invoke(appCheckInstance, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Invoke GetAppCheckTokenAsync(false) - returns a Task<AppCheckToken>
|
||||
taskObject = _appCheckGetTokenMethod.Invoke(appCheckInstance, new object[] { false });
|
||||
}
|
||||
|
||||
if (taskObject is not Task appCheckTokenTask)
|
||||
{
|
||||
LogError($"Invoking GetToken did not return a Task.");
|
||||
return null;
|
||||
}
|
||||
|
||||
// Await the task to get the AppCheckToken result
|
||||
await appCheckTokenTask;
|
||||
|
||||
// Check for exceptions in the task
|
||||
if (appCheckTokenTask.IsFaulted)
|
||||
{
|
||||
LogError($"Error getting App Check token: {appCheckTokenTask.Exception}");
|
||||
return null;
|
||||
}
|
||||
|
||||
// Get the Result property from the Task<AppCheckToken>
|
||||
object tokenResult = _appCheckTokenResultProperty.GetValue(appCheckTokenTask); // This is the AppCheckToken struct
|
||||
if (tokenResult == null)
|
||||
{
|
||||
LogError("App Check token result was null.");
|
||||
return null;
|
||||
}
|
||||
|
||||
// Get the Token property from the AppCheckToken struct
|
||||
string finalToken = _appCheckTokenTokenProperty.GetValue(tokenResult) as string;
|
||||
return finalToken;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// Log any exceptions during the reflection/invocation process
|
||||
LogError($"An error occurred while trying to fetch App Check token: {e}");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// Cache the various types and methods needed for Auth token retrieval.
|
||||
private static void InitializeAuthReflection()
|
||||
{
|
||||
const string firebaseAuthTypeName = "Firebase.Auth.FirebaseAuth, Firebase.Auth";
|
||||
const string getTokenMethodName = "TokenAsync";
|
||||
|
||||
try
|
||||
{
|
||||
// Set this to false, to allow easy failing out via return.
|
||||
_authReflectionInitialized = false;
|
||||
|
||||
_authType = Type.GetType(firebaseAuthTypeName);
|
||||
if (_authType == null)
|
||||
{
|
||||
// Auth assembly likely not present, fine to skip
|
||||
return;
|
||||
}
|
||||
|
||||
// Get the static method GetAuth(FirebaseApp app):
|
||||
_authGetAuthMethod = _authType.GetMethod(
|
||||
"GetAuth", BindingFlags.Static | BindingFlags.Public, null,
|
||||
new Type[] { typeof(FirebaseApp) }, null);
|
||||
if (_authGetAuthMethod == null)
|
||||
{
|
||||
LogError("Could not find FirebaseAuth.GetAuth method via reflection.");
|
||||
return;
|
||||
}
|
||||
|
||||
// Get the CurrentUser property from FirebaseAuth instance
|
||||
_authCurrentUserProperty = _authType.GetProperty("CurrentUser", BindingFlags.Instance | BindingFlags.Public);
|
||||
if (_authCurrentUserProperty == null)
|
||||
{
|
||||
LogError("Could not find FirebaseAuth.CurrentUser property via reflection.");
|
||||
return;
|
||||
}
|
||||
|
||||
// This should be FirebaseUser type
|
||||
Type userType = _authCurrentUserProperty.PropertyType;
|
||||
|
||||
// Get the TokenAsync(bool) method from FirebaseUser
|
||||
_userTokenAsyncMethod = userType.GetMethod(
|
||||
getTokenMethodName, BindingFlags.Instance | BindingFlags.Public, null,
|
||||
new Type[] { typeof(bool) }, null);
|
||||
if (_userTokenAsyncMethod == null)
|
||||
{
|
||||
LogError($"Could not find FirebaseUser.{getTokenMethodName}(bool) method via reflection.");
|
||||
return;
|
||||
}
|
||||
|
||||
// The return type is Task<string>
|
||||
Type tokenTaskType = _userTokenAsyncMethod.ReturnType;
|
||||
|
||||
// Get the Result property from Task<string>
|
||||
_userTokenTaskResultProperty = tokenTaskType.GetProperty("Result");
|
||||
if (_userTokenTaskResultProperty == null)
|
||||
{
|
||||
LogError("Could not find Result property on Auth token Task.");
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if Result property is actually a string
|
||||
if (_userTokenTaskResultProperty.PropertyType != typeof(string))
|
||||
{
|
||||
LogError("Auth token Task's Result property is not a string, " +
|
||||
$"but is {_userTokenTaskResultProperty.PropertyType}");
|
||||
return;
|
||||
}
|
||||
|
||||
_authReflectionInitialized = true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LogError($"Exception during static initialization of Auth reflection in FirebaseInterops: {e}");
|
||||
_authReflectionInitialized = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Gets the Auth Token, assuming there is one. Otherwise, returns null.
|
||||
internal static async Task<string> GetAuthTokenAsync(FirebaseApp firebaseApp)
|
||||
{
|
||||
// If Auth reflection failed for any reason, nothing to do.
|
||||
if (!_authReflectionInitialized)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// Get the FirebaseAuth instance for the given FirebaseApp.
|
||||
object authInstance = _authGetAuthMethod.Invoke(null, new object[] { firebaseApp });
|
||||
if (authInstance == null)
|
||||
{
|
||||
LogError("Failed to get FirebaseAuth instance via reflection.");
|
||||
return null;
|
||||
}
|
||||
|
||||
// Get the CurrentUser property
|
||||
object currentUser = _authCurrentUserProperty.GetValue(authInstance);
|
||||
if (currentUser == null)
|
||||
{
|
||||
// No user logged in, so no token
|
||||
return null;
|
||||
}
|
||||
|
||||
// Invoke TokenAsync(false) - returns a Task<string>
|
||||
object taskObject = _userTokenAsyncMethod.Invoke(currentUser, new object[] { false });
|
||||
if (taskObject is not Task tokenTask)
|
||||
{
|
||||
LogError("Invoking TokenAsync did not return a Task.");
|
||||
return null;
|
||||
}
|
||||
|
||||
// Await the task to get the token result
|
||||
await tokenTask;
|
||||
|
||||
// Check for exceptions in the task
|
||||
if (tokenTask.IsFaulted)
|
||||
{
|
||||
LogError($"Error getting Auth token: {tokenTask.Exception}");
|
||||
return null;
|
||||
}
|
||||
|
||||
// Get the Result property (which is the string token)
|
||||
return _userTokenTaskResultProperty.GetValue(tokenTask) as string;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// Log any exceptions during the reflection/invocation process
|
||||
LogError($"An error occurred while trying to fetch Auth token: {e}");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// Adds the other Firebase tokens to the HttpRequest, as available.
|
||||
internal static async Task AddFirebaseTokensAsync(HttpRequestMessage request, FirebaseApp firebaseApp, string authTokenPrefix = "Firebase", bool limitedUseAppCheckTokens = false)
|
||||
{
|
||||
string appCheckToken = await GetAppCheckTokenAsync(firebaseApp, limitedUseAppCheckTokens);
|
||||
if (!string.IsNullOrEmpty(appCheckToken))
|
||||
{
|
||||
request.Headers.Add(appCheckHeader, appCheckToken);
|
||||
}
|
||||
|
||||
string authToken = await GetAuthTokenAsync(firebaseApp);
|
||||
if (!string.IsNullOrEmpty(authToken))
|
||||
{
|
||||
request.Headers.Add(authHeader, $"{authTokenPrefix} {authToken}");
|
||||
}
|
||||
}
|
||||
|
||||
// Adds the other Firebase tokens to the WebSocket, as available.
|
||||
internal static async Task AddFirebaseTokensAsync(ClientWebSocket socket, FirebaseApp firebaseApp, string authTokenPrefix = "Firebase")
|
||||
{
|
||||
string appCheckToken = await GetAppCheckTokenAsync(firebaseApp);
|
||||
if (!string.IsNullOrEmpty(appCheckToken))
|
||||
{
|
||||
socket.Options.SetRequestHeader(appCheckHeader, appCheckToken);
|
||||
}
|
||||
|
||||
string authToken = await GetAuthTokenAsync(firebaseApp);
|
||||
if (!string.IsNullOrEmpty(authToken))
|
||||
{
|
||||
socket.Options.SetRequestHeader(authHeader, $"{authTokenPrefix} {authToken}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bc30602676ea492eab91b6ff7cd6ba3b
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Firebase/FirebaseApp/Internal/FirebaseInterops.cs
|
||||
timeCreated: 1480838400
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
89
Assets/Firebase/FirebaseApp/Internal/HttpHelpers.cs
Executable file
@@ -0,0 +1,89 @@
|
||||
/*
|
||||
* Copyright 2025 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Firebase.Internal
|
||||
{
|
||||
// Helper functions to help handling the Http calls.
|
||||
internal static class HttpHelpers
|
||||
{
|
||||
internal static async Task SetRequestHeaders(HttpRequestMessage request, FirebaseApp firebaseApp, string authPrefix = "Firebase", bool limitedUseAppCheckTokens = false)
|
||||
{
|
||||
request.Headers.Add("x-goog-api-key", firebaseApp.Options.ApiKey);
|
||||
string version = FirebaseInterops.GetVersionInfoSdkVersion();
|
||||
request.Headers.Add("x-goog-api-client", $"gl-csharp/8.0 fire/{version}");
|
||||
if (FirebaseInterops.GetIsDataCollectionDefaultEnabled(firebaseApp))
|
||||
{
|
||||
request.Headers.Add("X-Firebase-AppId", firebaseApp.Options.AppId);
|
||||
request.Headers.Add("X-Firebase-AppVersion", UnityEngine.Application.version);
|
||||
}
|
||||
// Add additional Firebase tokens to the header.
|
||||
await FirebaseInterops.AddFirebaseTokensAsync(request, firebaseApp, authPrefix, limitedUseAppCheckTokens);
|
||||
}
|
||||
|
||||
// Helper function to throw an exception if the Http Response indicates failure.
|
||||
// Useful as EnsureSuccessStatusCode can leave out relevant information.
|
||||
internal static async Task ValidateHttpResponse(HttpResponseMessage response)
|
||||
{
|
||||
if (response.IsSuccessStatusCode)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Status code indicates failure, try to read the content for more details
|
||||
string errorContent = "No error content available.";
|
||||
if (response.Content != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
errorContent = await response.Content.ReadAsStringAsync();
|
||||
}
|
||||
catch (Exception readEx)
|
||||
{
|
||||
// Handle being unable to read the content
|
||||
errorContent = $"Failed to read error content: {readEx.Message}";
|
||||
}
|
||||
}
|
||||
|
||||
// Construct the exception with as much information as possible.
|
||||
var ex = new HttpRequestException(
|
||||
$"HTTP request failed with status code: {(int)response.StatusCode} ({response.ReasonPhrase}).\n" +
|
||||
$"Error Content: {errorContent}",
|
||||
null
|
||||
);
|
||||
ex.Data["StatusCode"] = response.StatusCode;
|
||||
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
// Extension to get the StatusCode from the exception.
|
||||
internal static class HttpRequestExceptionExtensions
|
||||
{
|
||||
internal static HttpStatusCode? GetStatusCode(this HttpRequestException exception)
|
||||
{
|
||||
if (exception.Data.Contains("StatusCode"))
|
||||
{
|
||||
return (HttpStatusCode)exception.Data["StatusCode"];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
11
Assets/Firebase/FirebaseApp/Internal/HttpHelpers.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: edaf55a8a9944057852d797b4558bf8a
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Firebase/FirebaseApp/Internal/HttpHelpers.cs
|
||||
timeCreated: 1480838400
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
9
Assets/Firebase/FirebaseApp/Internal/link.xml
Executable file
@@ -0,0 +1,9 @@
|
||||
<linker>
|
||||
<assembly fullname="Firebase.Auth">
|
||||
<type fullname="Firebase.Auth.FirebaseAuth" preserve="all"/>
|
||||
<type fullname="Firebase.Auth.FirebaseUser" preserve="all"/>
|
||||
</assembly>
|
||||
<assembly fullname="Firebase.AppCheck">
|
||||
<type fullname="Firebase.AppCheck.FirebaseAppCheck" preserve="all"/>
|
||||
</assembly>
|
||||
</linker>
|
||||
11
Assets/Firebase/FirebaseApp/Internal/link.xml.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 178c4b1924574f9c95f7a7f28adfd218
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Firebase/FirebaseApp/Internal/link.xml
|
||||
timeCreated: 1480838400
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/Firebase/Plugins.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bece1470ff1994d9b94d54ddfdd01fb2
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Firebase/Plugins/Firebase.Analytics.dll
Executable file
81
Assets/Firebase/Plugins/Firebase.Analytics.dll.meta
Normal file
@@ -0,0 +1,81 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 816270c2a2a348e59cb9b7b096a24f50
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Firebase/Plugins/Firebase.Analytics.dll
|
||||
timeCreated: 1480838400
|
||||
PluginImporter:
|
||||
serializedVersion: 1
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
isPreloaded: 0
|
||||
platformData:
|
||||
Android:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
Any:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
Editor:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
DefaultValueInitialized: true
|
||||
OS: AnyOS
|
||||
Linux:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: x86
|
||||
Linux64:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: x86_64
|
||||
LinuxUniversal:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
OSXIntel:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: x86
|
||||
OSXIntel64:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: x86_64
|
||||
OSXUniversal:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
Web:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
WebStreamed:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
Win:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: x86
|
||||
Win64:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: x86_64
|
||||
WindowsStoreApps:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
iOS:
|
||||
enabled: 0
|
||||
settings:
|
||||
CompileFlags:
|
||||
FrameworkDependencies:
|
||||
tvOS:
|
||||
enabled: 0
|
||||
settings:
|
||||
CompileFlags:
|
||||
FrameworkDependencies:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Firebase/Plugins/Firebase.App.dll
Executable file
81
Assets/Firebase/Plugins/Firebase.App.dll.meta
Normal file
@@ -0,0 +1,81 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7311924048bd457bac6d713576c952da
|
||||
labels:
|
||||
- gvh
|
||||
- gvh_version-13.11.0
|
||||
- gvhp_exportpath-Firebase/Plugins/Firebase.App.dll
|
||||
timeCreated: 1480838400
|
||||
PluginImporter:
|
||||
serializedVersion: 1
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
isPreloaded: 0
|
||||
platformData:
|
||||
Android:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
Any:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
Editor:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
DefaultValueInitialized: true
|
||||
OS: AnyOS
|
||||
Linux:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: x86
|
||||
Linux64:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: x86_64
|
||||
LinuxUniversal:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
OSXIntel:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: x86
|
||||
OSXIntel64:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: x86_64
|
||||
OSXUniversal:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
Web:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
WebStreamed:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
Win:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: x86
|
||||
Win64:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: x86_64
|
||||
WindowsStoreApps:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
iOS:
|
||||
enabled: 0
|
||||
settings:
|
||||
CompileFlags:
|
||||
FrameworkDependencies:
|
||||
tvOS:
|
||||
enabled: 0
|
||||
settings:
|
||||
CompileFlags:
|
||||
FrameworkDependencies:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||