This is Misc3DMouseDriver.m in view mode; [Download] [Up]
/* Misc3DMouseDriver.m
*
* The MetaDriver is a very basic driver object. Ever real driver should be a
* subclass of that. It is also used for
*
* For more interface-info see the header file. More in depth information
* can be found in the source-code.
*
* Written by: Thomas Engel
* Created: 11.04.1994 (Copyleft)
* Last modified: 13.04.1994
*/
#import "Misc3DMouseDriver.h"
#import <remote/NXProxy.h>
@implementation Misc3DMouseDriver
- setTarget:anObject
{
if( [anObject conformsTo:@protocol(Misc3DMouseTarget)] )
{
[super setTarget:anObject];
if( [target isProxy] )
[target setProtocolForProxy:@protocol(Misc3DMouseTarget)];
}
targetIsRightHanded = [target worldIsRightHanded];
if( !transformMatrix ) transformMatrix = [MiscRtMatrix new];
return self;
}
- (BOOL)deliverTranslation:(float)x :(float)y :(float)z
andRotation:(float)a :(float)b :(float)c
{
// If we can send an event we will compose the right transformation
// matrix and them we'll pass it along.
// We will return our success flag.
if( !sendEvents ) return NO;
if( syncEvents && awaitingSync ) return NO;
// Looks like we might really send it. depending on the handedness
// we have to adjust the given values. As we remember they alway come
// from a right handed device. (at least we have said they should be
// that way :-)
if( !targetIsRightHanded )
{
z = -z;
a = -a;
b = -b;
}
[transformMatrix setByTranslation:x :y: z andRotation:a :b :c];
[target transformationEvent:transformMatrix];
if( syncEvents ) awaitingSync = YES;
return YES;
}
- (BOOL)deliverKeyPress:(char *)keys
{
return NO;
}
@end
/*
* History: 13.04.94 Changed to work with new Matrix methods.
*
* 11.04.94 Should simplify the other mouse drivers.
*
*
* Bugs: not very likely
*/These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.