/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.pepsoft.worldpainter.objects;
import javax.vecmath.Point3i;
import java.io.Serializable;
/**
* Abstract base class for {@link WPObject} implementations.
*
* @author pepijn
*/
public abstract class AbstractObject implements WPObject {
@Override
@SuppressWarnings("unchecked") // Responsibility of caller
public <T extends Serializable> T getAttribute(AttributeKey<T> key) {
return key.get(getAttributes());
}
@Override
public AbstractObject clone() {
try {
return (AbstractObject) super.clone();
} catch (CloneNotSupportedException e) {
throw new RuntimeException(e);
}
}
@Override
public final Point3i getOffset() {
return getAttribute(ATTRIBUTE_OFFSET);
}
private static final long serialVersionUID = -5872104411389620683L;
}