好的,各种成功。请不要在最佳实践上打败我,我只是想让这件事继续下去。
所以,我创建了一个类来做我的脏活,我们称之为 ShivaInterface。
ShivaInterface.h
ShivaInterface.mm /*** note the .mm ***/
标题如下:
#import <Foundation/Foundation.h>
@interface ShivaInterface : NSObject{
}
+(const void*)getMyParams:(NSNumber*)x andY:(NSNumber*)y;
@end
并实现为:
#import "ShivaInterface.h"
#import "S3DXPlugin.h" //is this the correct thing to include? it worked for me
@implementation ShivaInterface
+(const void*)getMyParams:(NSNumber*)x andY:(NSNumber*)y{
static S3DX::AIVariable args[2];
args[0].SetNumberValue([x floatValue]);
args[1].SetNumberValue([y floatValue]);
return args;
}
@end
然后在我的纯 Obj-c 方法中:
const void *params = [ShivaInterface getMyParams:[NSNumber numberWithFloat:100.0f] andY:[NSNumber numberWithFloat:100.0f]];
S3DClient_SendEventToCurrentUser("MainAi","onDoRotate",2,params);
这行得通,我意识到它并不漂亮,而且我对 C/C++ 缺乏更深入的了解可能无济于事。
(这里的完整主题:http: //www.stonetrip.com/developer/forum/viewtopic.php?p=29073 #p29073 )