Aetheria/Assets/Scripts/Editor/SerializerTestWindow.cs
hyperion51 0b46d5ee39 Database Support
Refactored almost everything, but most importantly we now integrate with RethinkDB for game data.
2020-03-22 19:05:26 +00:00

79 lines
2.1 KiB
C#

using System;
using MessagePack;
using MessagePack.Formatters;
using Newtonsoft.Json;
using RethinkDb.Driver;
using RethinkDb.Driver.Net;
using UnityEditor;
using UnityEngine;
using Object = UnityEngine.Object;
public class SerializerTestWindow : EditorWindow
{
// Singleton to avoid multiple instances of window.
private static SerializerTestWindow _instance;
private static readonly RethinkDB R = RethinkDB.R;
private Connection _connection;
private Object _object;
private void OnEnable()
{
_connection = R.Connection().Hostname("asgard.gamecult.games").Port(RethinkDBConstants.DefaultPort).Timeout(60).Connect();
}
public void OnGUI()
{
var obj = new ShieldData() {ID = Guid.NewGuid(), Name = "Foo"} as DatabaseEntry;
// This button serializes the texture reference and print the JSON representation
if (GUILayout.Button("Print MsgPack JSON"))
Debug.Log(MessagePackSerializer.SerializeToJson(obj));
if (GUILayout.Button("Print Newtonsoft JSON"))
Debug.Log(JsonConvert.SerializeObject(obj));
if (GUILayout.Button("Create Database"))
R.DbCreate("Aetheria").Run(_connection);
if (GUILayout.Button("Create Table"))
R.Db("Aetheria").TableCreate("Items").Run(_connection);
if (GUILayout.Button("Send to RethinkDB"))
R.Db("Aetheria").Table("Items").Insert(obj).Run(_connection);
}
#region EditorWindow Boilerplate
public SerializerTestWindow()
{
_instance = this;
}
static SerializerTestWindow ShowWindow()
{
if (_instance == null)
{
SerializerTestWindow window = EditorWindow.GetWindow<SerializerTestWindow>();
window.titleContent = new GUIContent("Serializer Test");
_instance = window;
window.Show();
}
else
_instance.Focus();
return _instance;
}
[MenuItem("Window/Serializer Test Tool")]
static void Init()
{
ShowWindow();
}
#endregion
}