// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.server.core.util;

import javax.annotation.Nullable;
import com.hypixel.hytale.protocol.Direction;
import com.hypixel.hytale.protocol.Position;
import com.hypixel.hytale.math.vector.Vector3f;
import com.hypixel.hytale.math.vector.Vector3d;
import javax.annotation.Nonnull;
import com.hypixel.hytale.math.vector.Transform;

public class PositionUtil
{
    @Nonnull
    public static com.hypixel.hytale.protocol.Transform toTransformPacket(@Nonnull final Transform transform) {
        final Vector3d position = transform.getPosition();
        final Vector3f rotation = transform.getRotation();
        return new com.hypixel.hytale.protocol.Transform(toPositionPacket(position), toDirectionPacket(rotation));
    }
    
    @Nonnull
    public static Position toPositionPacket(@Nonnull final Vector3d position) {
        return new Position(position.x, position.y, position.z);
    }
    
    @Nonnull
    public static Direction toDirectionPacket(@Nonnull final Vector3f rotation) {
        return new Direction(rotation.getYaw(), rotation.getPitch(), rotation.getRoll());
    }
    
    public static Transform toTransform(@Nullable final com.hypixel.hytale.protocol.Transform transform) {
        if (transform == null) {
            return null;
        }
        return new Transform(toVector3d(transform.position), toRotation(transform.orientation));
    }
    
    @Nonnull
    public static Vector3d toVector3d(@Nonnull final Position position_) {
        return new Vector3d(position_.x, position_.y, position_.z);
    }
    
    @Nonnull
    public static Vector3f toRotation(@Nonnull final Direction orientation) {
        return new Vector3f(orientation.pitch, orientation.yaw, orientation.roll);
    }
    
    public static boolean equals(@Nonnull final Vector3d vector, @Nonnull final Position position) {
        return vector.x == position.x && vector.y == position.y && vector.z == position.z;
    }
    
    public static void assign(@Nonnull final Position position, @Nonnull final Vector3d vector) {
        position.x = vector.x;
        position.y = vector.y;
        position.z = vector.z;
    }
    
    public static boolean equals(@Nonnull final Vector3f vector, @Nonnull final Direction direction) {
        return vector.x == direction.pitch && vector.y == direction.yaw && vector.z == direction.roll;
    }
    
    public static void assign(@Nonnull final Direction direction, @Nonnull final Vector3f vector) {
        direction.pitch = vector.x;
        direction.yaw = vector.y;
        direction.roll = vector.z;
    }
    
    public static void assign(@Nonnull final Position position, @Nonnull final Position other) {
        position.x = other.x;
        position.y = other.y;
        position.z = other.z;
    }
    
    public static void assign(@Nonnull final Direction direction, @Nonnull final Direction other) {
        direction.pitch = other.pitch;
        direction.yaw = other.yaw;
        direction.roll = other.roll;
    }
}
