我对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”方法这可能吗?
我该怎么做呢?我应该在文档中查找什么?有没有人可以指出的例子?
非常感谢提前。如果上述内容不明确,请告诉我。
答案 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个参数是参数的数量和数组中的参数(需要单独查看)。