-
Notifications
You must be signed in to change notification settings - Fork 4
/
sample.cpp
69 lines (52 loc) · 1.45 KB
/
sample.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <core/core.h>
#include <luacpp/luacpp.h>
#include <luacsp/csp.h>
#include <luacsp/host.h>
#include <iostream>
#include <fstream>
#include <string>
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#include "mycppchannel.h"
int main(int argc, const char* argv[])
{
if(argc<2)
{
return 1;
}
core::InitializeCore();
csp::Host& host = csp::Initialize();
InitializeMyChannels( host.LuaState() );
const char* fileName = argv[1];
std::ifstream file (fileName, std::ios::in|std::ios::binary|std::ios::ate);
if (file.is_open())
{
size_t size = (unsigned int)file.tellg();
char* memblock = CORE_NEW char [size];
file.seekg (0, std::ios::beg);
file.read (memblock, size);
file.close();
char chunkname [1024];
sprintf( chunkname, "@%s", fileName );
lua::Return::Enum valueLoad = host.LuaState().LoadFromMemory(memblock, size, chunkname);
if( valueLoad == lua::Return::OK )
{
lua::Return::Enum valueCall = host.LuaState().Call(0, 0);
if( valueCall == lua::Return::OK )
{
csp::WorkResult::Enum mainCall = host.Main();
const float dt = 1.0f/30.0f;
while( mainCall == lua::Return::YIELD )
{
Sleep( (unsigned int)(dt * 1000.0) );
mainCall = host.Work( dt );
}
}
}
delete[] memblock;
}
ShutdownMyChannels( host.LuaState() );
csp::Shutdown(host);
core::ShutdownCore();
return 0;
}