00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #pragma once
00019
00020 #ifndef _AIAutoCoordinateSystem_H_
00021 #define _AIAutoCoordinateSystem_H_
00022
00023 #include "AIHardSoft.h"
00024
00025 #ifdef _AI_AUTO_COORDINATE_SYSTEM_INCLUDE_H_
00026 #include _AI_AUTO_COORDINATE_SYSTEM_INCLUDE_H_
00027 #elif AI_AUTO_SUITE_AVAILABLE
00028 #include "AutoSuite.h"
00029 extern_declare_suite(AIHardSoft);
00030 #else
00031 #ifndef _AI_AUTO_COORDINATE_SYSTEM_USE_C_LINKAGE_
00032 #define _AI_AUTO_COORDINATE_SYSTEM_USE_C_LINKAGE_ 1
00033 #endif
00034 #if _AI_AUTO_COORDINATE_SYSTEM_USE_C_LINKAGE_
00035 extern "C"
00036 {
00037 #endif
00038
00042 extern AIHardSoftSuite* sAIHardSoft;
00043
00044 #if _AI_AUTO_COORDINATE_SYSTEM_USE_C_LINKAGE_
00045 }
00046 #endif // _AI_AUTO_COORDINATE_SYSTEM_USE_C_LINKAGE_
00047
00048 #endif
00049
00050 namespace ai
00051 {
00058 class AutoCoordinateSystem
00059 {
00060 public:
00070 AutoCoordinateSystem(AICoordinateSystem coordinateSystem= kAICurrentCoordinateSystem)
00071 {
00072 sAIHardSoft->GetCoordinateSystem(fCoordinateSystem);
00073 sAIHardSoft->SetCoordinateSystem(coordinateSystem);
00074 }
00079 ~AutoCoordinateSystem()
00080 {
00081 try
00082 {
00083 sAIHardSoft->SetCoordinateSystem(fCoordinateSystem);
00084 }
00085 catch (...)
00086 {
00087 }
00088 }
00089 private:
00090 ai::int32 fCoordinateSystem;
00091 };
00092 }
00093
00094 #endif