96 lines
2.7 KiB
Java
96 lines
2.7 KiB
Java
//**********************************************************************************************
|
|
// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
|
|
// All rights reserved. Copying, modification,
|
|
// distribution or publication without the prior written
|
|
// consent of the author is prohibited.
|
|
//
|
|
// Created on 23. Februar 2002, 14:05
|
|
//**********************************************************************************************
|
|
package de.hardcode.jxinput.j3d;
|
|
|
|
import de.hardcode.jxinput.Axis;
|
|
|
|
|
|
/**
|
|
* Connects JXInput with J3DInputDevice.
|
|
*
|
|
* @author Herkules
|
|
*/
|
|
public class DeviceConfiguration
|
|
{
|
|
public final static int AXIS_X = 0;
|
|
public final static int AXIS_Y = 1;
|
|
public final static int AXIS_Z = 2;
|
|
|
|
private final static class axisvalue
|
|
{
|
|
private final Axis mAxis;
|
|
private final IsActiveCondition mIsActive;
|
|
private final IsActiveCondition mIsIncremental;
|
|
private final double mScale;
|
|
private final double mOffset;
|
|
private double mValue;
|
|
|
|
axisvalue( Axis axis, IsActiveCondition active, IsActiveCondition incremental, double offset, double scale )
|
|
{
|
|
mAxis = axis;
|
|
mIsActive = active;
|
|
mIsIncremental = incremental;
|
|
mValue = mOffset = offset;
|
|
mScale = scale;
|
|
}
|
|
|
|
double value()
|
|
{
|
|
if ( mIsActive.isActive() )
|
|
{
|
|
double newval = mAxis.getValue() * mScale;
|
|
|
|
if ( mIsIncremental.isActive() )
|
|
mValue += newval;
|
|
else
|
|
mValue = newval + mOffset;
|
|
}
|
|
return mValue;
|
|
}
|
|
}
|
|
|
|
DeviceConfiguration.axisvalue [] mAxisTrans = new DeviceConfiguration.axisvalue[ 3 ];
|
|
DeviceConfiguration.axisvalue [] mAxisRot = new DeviceConfiguration.axisvalue[ 3 ];
|
|
|
|
/**
|
|
* Creates a new instance of DeviceConfiguration.
|
|
*/
|
|
public DeviceConfiguration()
|
|
{
|
|
}
|
|
|
|
|
|
double getTranslational( int axisid )
|
|
{
|
|
DeviceConfiguration.axisvalue val = mAxisTrans[ axisid ];
|
|
return null == val ? 0.0 : val.value();
|
|
}
|
|
|
|
double getRotational( int axisid )
|
|
{
|
|
DeviceConfiguration.axisvalue val = mAxisRot[ axisid ];
|
|
return null == val ? 0.0 : val.value();
|
|
}
|
|
|
|
public void setTranslational( int axisid, Axis axis, IsActiveCondition active, IsActiveCondition incremental, double offset, double scale )
|
|
{
|
|
if ( axisid < 0 || axisid > AXIS_Z )
|
|
throw new IllegalArgumentException();
|
|
mAxisTrans[ axisid ] = new DeviceConfiguration.axisvalue( axis, active, incremental, offset, scale );
|
|
}
|
|
|
|
public void setRotational( int axisid, Axis axis, IsActiveCondition active, IsActiveCondition incremental, double offset, double scale )
|
|
{
|
|
if ( axisid < 0 || axisid > AXIS_Z )
|
|
throw new IllegalArgumentException();
|
|
mAxisRot[ axisid ] = new DeviceConfiguration.axisvalue( axis, active, incremental, offset, scale );
|
|
}
|
|
|
|
}
|