package com.o3dr.services.android.lib.drone.mission.item.command;
import android.os.Parcel;
import com.o3dr.services.android.lib.drone.mission.item.MissionItem;
import com.o3dr.services.android.lib.drone.mission.MissionItemType;
/**
* Created by fhuya on 11/10/14.
*/
public class YawCondition extends MissionItem implements MissionItem.Command, android.os.Parcelable {
private double angle;
private double angularSpeed;
private boolean isRelative;
public YawCondition(){
super(MissionItemType.YAW_CONDITION);
}
public YawCondition(YawCondition copy){
this();
angle = copy.angle;
angularSpeed = copy.angularSpeed;
isRelative = copy.isRelative;
}
public double getAngle() {
return angle;
}
public void setAngle(double angle) {
this.angle = angle;
}
public double getAngularSpeed() {
return angularSpeed;
}
public void setAngularSpeed(double angularSpeed) {
this.angularSpeed = angularSpeed;
}
public boolean isRelative() {
return isRelative;
}
public void setRelative(boolean isRelative) {
this.isRelative = isRelative;
}
@Override
public String toString() {
return "YawCondition{" +
"angle=" + angle +
", angularSpeed=" + angularSpeed +
", isRelative=" + isRelative +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof YawCondition)) return false;
if (!super.equals(o)) return false;
YawCondition that = (YawCondition) o;
if (Double.compare(that.angle, angle) != 0) return false;
if (Double.compare(that.angularSpeed, angularSpeed) != 0) return false;
return isRelative == that.isRelative;
}
@Override
public int hashCode() {
int result = super.hashCode();
long temp;
temp = Double.doubleToLongBits(angle);
result = 31 * result + (int) (temp ^ (temp >>> 32));
temp = Double.doubleToLongBits(angularSpeed);
result = 31 * result + (int) (temp ^ (temp >>> 32));
result = 31 * result + (isRelative ? 1 : 0);
return result;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
super.writeToParcel(dest, flags);
dest.writeDouble(this.angle);
dest.writeDouble(this.angularSpeed);
dest.writeByte(isRelative ? (byte) 1 : (byte) 0);
}
private YawCondition(Parcel in) {
super(in);
this.angle = in.readDouble();
this.angularSpeed = in.readDouble();
this.isRelative = in.readByte() != 0;
}
@Override
public MissionItem clone() {
return new YawCondition(this);
}
public static final Creator<YawCondition> CREATOR = new Creator<YawCondition>() {
public YawCondition createFromParcel(Parcel source) {
return new YawCondition(source);
}
public YawCondition[] newArray(int size) {
return new YawCondition[size];
}
};
}