summaryrefslogtreecommitdiff
path: root/altoslib/AltosRotation.java
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2016-05-12 23:33:53 -0700
committerKeith Packard <keithp@keithp.com>2016-05-12 23:41:55 -0700
commitb1a90adac9f6e2a609ce1ccd6749462bb5c9adbe (patch)
tree107b6491d8ffc507609f9923353d5454c0664323 /altoslib/AltosRotation.java
parentb13037fad0905c5933d1ff579122ba1357b02eea (diff)
altoslib: Store saved state in version-independent format
Use AltosHashSet for AltosState so that AltosDroid doesn't lose tracker information when the application is upgraded. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altoslib/AltosRotation.java')
-rw-r--r--altoslib/AltosRotation.java20
1 files changed, 19 insertions, 1 deletions
diff --git a/altoslib/AltosRotation.java b/altoslib/AltosRotation.java
index 411ecbdf..e9c447ad 100644
--- a/altoslib/AltosRotation.java
+++ b/altoslib/AltosRotation.java
@@ -17,7 +17,7 @@
package org.altusmetrum.altoslib_11;
-public class AltosRotation {
+public class AltosRotation implements AltosHashable {
private AltosQuaternion rotation;
public double tilt() {
@@ -47,4 +47,22 @@ public class AltosRotation {
AltosQuaternion up = new AltosQuaternion(0, 0, 0, sky);
rotation = up.vectors_to_rotation(orient);
}
+
+ public AltosHashSet hashSet() {
+ AltosHashSet h = new AltosHashSet();
+
+ h.putHashable("rotation", rotation);
+ return h;
+ }
+
+ public AltosRotation(AltosHashSet h) {
+ rotation = new AltosQuaternion(h.getHash("rotation"));
+ }
+
+ public static AltosRotation fromHashSet(AltosHashSet h, AltosRotation def) {
+ if (h == null)
+ return def;
+
+ return new AltosRotation(h);
+ }
}