1

我对 ShiVa3d 还是很陌生,对 iOS 还是很陌生。

我想开发一个在 iPad 上运行的应用程序。我将在 Objective-c 中编写大量将在 iOS 上运行的逻辑,并在 ShiVa 中编写一些简单的 lua 代码。

这是我想做的一个非常简单的例子:

1)我的应用程序将有一个模型,将加载和查看。

2) 在我的 lua ShiVa 代码中,作为 MainAI 的一部分,我将创建一个接受 x,y,z 等参数的方法,让我们将此方法称为“ShiVaCameraToPostition(objX,objY,objZ)”

3)在我的 iOS 目标 c 代码中,我想用参数调用这个“ShiVaCameraToPostition”方法

这可能吗?

我该怎么做呢?我应该在文档中寻找什么?有没有人们可以指出的例子?

提前谢谢了。请让我知道以上是否有歧义。

4

2 回答 2

1

好的,各种成功。请不要在最佳实践上打败我,我只是想让这件事继续下去。

所以,我创建了一个类来做我的脏活,我们称之为 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 )

于 2011-02-03T09:24:20.410 回答
0

您不能调用看起来像的 ShiVa 方法,您必须使用以下方法调用处理程序:

S3DClient_SendEventToCurrentUser("MainAI","onMyHandler",0);

第三个和第四个参数是参数的数量和数组中的参数(需要单独查看)。

于 2011-02-01T15:36:28.413 回答