DatabaseSavePose.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using MongoDB.Driver;
  5. using MongoDB.Bson;
  6. using MongoDB.Bson.Serialization;
  7. public class DatabaseSavePose : MonoBehaviour
  8. {
  9. public ConfigReader Config;
  10. public float TimeBetweenSaves = 1.0f;
  11. //private string ClientConnection;
  12. //private string DatabaseName;
  13. private IMongoCollection<BsonDocument> collection;
  14. private MongoClient client;
  15. private IMongoDatabase db;
  16. private float t = 0f;
  17. void Start()
  18. {
  19. Connect();
  20. _map();
  21. }
  22. public void Connect()
  23. {
  24. string ClientConnection = Config.configuration.Database.ClientConnection;
  25. string DatabaseName = Config.configuration.Database.DatabaseName;
  26. string coll = Config.configuration.Database.DBCollection;
  27. client = new MongoClient(ClientConnection);
  28. db = client.GetDatabase(DatabaseName);
  29. collection = db.GetCollection<BsonDocument>(coll);
  30. }
  31. private void _map()
  32. {
  33. BsonClassMap.RegisterClassMap<Vector3>(cm =>
  34. {
  35. cm.AutoMap();
  36. cm.SetIgnoreExtraElements(true);
  37. });
  38. BsonClassMap.RegisterClassMap<Quaternion>(cm =>
  39. {
  40. cm.AutoMap();
  41. cm.SetIgnoreExtraElements(true);
  42. });
  43. BsonClassMap.RegisterClassMap<Pose>(cm =>
  44. {
  45. cm.AutoMap();
  46. cm.SetIgnoreExtraElements(true);
  47. });
  48. }
  49. void Update()
  50. {
  51. t += Time.deltaTime;
  52. if (t > TimeBetweenSaves)
  53. {
  54. //save to database
  55. Pose p = new Pose { item = "linerobot",
  56. time = Time.time,
  57. position = transform.position,
  58. quaternion = transform.rotation};
  59. var bson = p.ToBsonDocument();
  60. collection.InsertOne(bson);
  61. t = 0f;
  62. }
  63. }
  64. }
  65. public class Pose
  66. {
  67. public string item;
  68. public float time;
  69. public Vector3 position;
  70. public Quaternion quaternion;
  71. }