从iOS中调用ShiVa代码

时间:2011-01-31 15:54:40

标签: objective-c ios shiva3d

我对ShiVa3d还是一个新手,对iOS来说还是个新手。

我想开发一款可在iPad上运行的应用。我将在Objective-c中编写相当多的逻辑,这些逻辑将在iOS上运行,并在ShiVa中运行一些简单的lua代码。

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

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

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

3)在我的iOS objective-c代码中,我想用参数

调用这个“ShiVaCameraToPostition”方法

这可能吗?

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

非常感谢提前。如果上述内容不明确,请告诉我。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您无法调用ShiVa方法,您必须使用以下方法调用处理程序:

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

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