CelestiaObserver.mm
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:2k
源码类别:

OpenGL

开发平台:

Visual C++

  1. //
  2. //  CelestiaObserver.mm
  3. //  celestia
  4. //
  5. //  Created by Bob Ippolito on Fri Jun 07 2002.
  6. //  Copyright (c) 2002 Chris Laurel. All rights reserved.
  7. //
  8. #import "CelestiaObserver.h"
  9. #import "CelestiaObserver_PrivateAPI.h"
  10. #import "CelestiaUniversalCoord_PrivateAPI.h"
  11. #import "CelestiaVector_PrivateAPI.h"
  12. @implementation CelestiaObserver(PrivateAPI)
  13. -(Observer)observer
  14. {
  15.     return *reinterpret_cast<const Observer*>([_data bytes]);
  16. }
  17. -(CelestiaObserver*)initWithObserver:(Observer)obs
  18. {
  19.     self=[super init];
  20.     _data = [[NSData alloc] initWithBytes:(void *)&obs length:sizeof(Observer)];
  21.     return self;
  22. }
  23. @end
  24. @implementation CelestiaObserver
  25. -(void)dealloc
  26. {
  27.     if (_data != nil) {
  28.         [_data release];
  29.         _data = nil;
  30.     }
  31.     [super dealloc];
  32. }
  33. -(CelestiaUniversalCoord*)position
  34. {
  35.     return [[[CelestiaUniversalCoord alloc] initWithUniversalCoord:[self observer].getPosition()] autorelease];
  36. }
  37. -(CelestiaVector*)orientation
  38. {
  39.     return [CelestiaVector vectorWithQuatf:[self observer].getOrientationf()];
  40. }
  41. -(void)setOrientation:(CelestiaVector*)q
  42. {
  43.     [self observer].setOrientation([q quatd]);
  44. }
  45. -(CelestiaVector*)velocity
  46. {
  47.     return [CelestiaVector vectorWithVec3d:[self observer].getVelocity()];
  48. }
  49. -(void)setVelocity:(CelestiaVector*)v
  50. {
  51.     [self observer].setVelocity([v vec3d]);
  52. }
  53. -(CelestiaVector*)angularVelocity
  54. {
  55.     return [CelestiaVector vectorWithVec3d:[self observer].getAngularVelocity()];
  56. }
  57. -(void)setAngularVelocity:(CelestiaVector*)v
  58. {
  59.     [self observer].setAngularVelocity([v vec3d]);
  60. }
  61. -(void)setPosition:(CelestiaUniversalCoord*)p
  62. {
  63.     [self observer].setPosition([p universalCoord]);
  64. }
  65. -(void)setPositionWithPoint:(CelestiaVector*)p
  66. {
  67.     [self observer].setPosition([p point3d]);
  68. }
  69. -(void)update:(NSNumber*)dt timeScale: (NSNumber*)ts
  70. {
  71.     [self observer].update([dt doubleValue], [ts doubleValue]);
  72. }
  73. -(unsigned int) getLocationFilter
  74. {
  75.     return [self observer].getLocationFilter();
  76. }
  77. -(void) setLocationFilter: (unsigned int) filter
  78. {
  79.     [self observer].setLocationFilter(filter);
  80. }
  81. @end