示例#1
0
文件: MGame.cpp 项目: mconbere/Newt
void MGame::onBeginScene(void)
{
	MEngine * engine = MEngine::getInstance();

	// get level
	MLevel * level = MEngine::getInstance()->getLevel();
	if(! level)
		return;

	// get current scene
	MScene * scene = level->getCurrentScene();
	if(! scene)
		return;

	// update objects
	scene->updateObjectsMatrices();

	// start sound
	scene->playLoopSounds();

	// prepare physics
	scene->preparePhysics();

	// run script
	if(engine->getScriptContext())
		engine->getScriptContext()->runScript(scene->getScriptFilename());
}
示例#2
0
文件: atlas.cpp 项目: galek/MIngEd
    int ScriptAtlasSelect()
    {
	MEngine* engine = MEngine::getInstance();
	MScriptContext* script = engine->getScriptContext();

	if(Atlas* atlas = (Atlas*)script->getPointer(0))
	    atlas->Select();
	return 0;	
    }
示例#3
0
void MPluginEnd(MScriptExt)
{
    MResource::unregisterFactory("MScriptExt", MScriptExtGetter);
    MEngine* engine = MEngine::getInstance();
    if(engine->getScriptContext() == s_script)
        engine->setScriptContext(NULL);

    delete s_script;
}   
示例#4
0
文件: atlas.cpp 项目: galek/MIngEd
    int ScriptAtlasWrite()
    {
	MEngine* engine = MEngine::getInstance();
	MScriptContext* script = engine->getScriptContext();

	Atlas* atlas = (Atlas*)script->getPointer(0);
	atlas->Save();

	return 0;
    }
示例#5
0
文件: MGame.cpp 项目: mconbere/Newt
void MGame::update(void)
{
	MEngine * engine = MEngine::getInstance();

	// run script
	if(engine->getScriptContext())
		engine->getScriptContext()->callFunction("onSceneUpdate");

	// get level
	MLevel * level = MEngine::getInstance()->getLevel();
	if(! level)
		return;

	// get current scene
	MScene * scene = level->getCurrentScene();
	if(! scene)
		return;

	// update behaviors
	unsigned int i;
	unsigned int oSize = scene->getObjectsNumber();
	for(i=0; i<oSize; i++)
	{
		MObject3d * object = scene->getObjectByIndex(i);
		if(! object->isActive())
			continue;
			
		object->updateBehaviors();
	}

	// update scene
	scene->update();

	// update physics
	scene->updatePhysics();

	// update objects matrices
	scene->updateObjectsMatrices();

	// flush input
	engine->getInputContext()->flush();
}
示例#6
0
文件: atlas.cpp 项目: galek/MIngEd
    int ScriptAtlasImageDestroy()
    {
	MEngine* engine = MEngine::getInstance();
	MScriptContext* script = engine->getScriptContext();

	MImage* image = (MImage*)script->getPointer(0);
	if(image)
	    delete image;

	return 0;
    }
示例#7
0
文件: atlas.cpp 项目: galek/MIngEd
    int ScriptAtlasDestroy()
    {
	MEngine* engine = MEngine::getInstance();
	MScriptContext* script = engine->getScriptContext();

	Atlas* atlas = (Atlas*)script->getPointer(0);
	if(atlas)
	    delete atlas;

	return 0;
    }
示例#8
0
文件: atlas.cpp 项目: galek/MIngEd
    int ScriptAtlasCreate()
    {
	MEngine* engine = MEngine::getInstance();
	MScriptContext* script = engine->getScriptContext();

	unsigned int size = script->getInteger(0);
	const char* name = script->getString(1);
	
	script->pushPointer(new Atlas(size, 4, name));
	return 1;
    }
示例#9
0
文件: atlas.cpp 项目: galek/MIngEd
    int ScriptAtlasImageWrite()
    {
	MEngine* engine = MEngine::getInstance();
	MScriptContext* script = engine->getScriptContext();

	MImage* image = (MImage*)script->getPointer(0);
	const char* file = script->getString(1);

	engine->getImageSaver()->loadData(file, image);
	return 0;
    }
示例#10
0
文件: MScene.cpp 项目: Keedu/maratis
void MScene::begin(void)
{
	MEngine * engine = MEngine::getInstance();
	MScriptContext * scriptContext = engine->getScriptContext();

	updateObjectsMatrices();
	playLoopSounds();
	preparePhysics();

	// run script
	if(scriptContext)
		scriptContext->runScript(getScriptFilename());
}
示例#11
0
文件: atlas.cpp 项目: galek/MIngEd
    int ScriptAtlasImageGetSize()
    {
	MEngine* engine = MEngine::getInstance();
	MScriptContext* script = engine->getScriptContext();

	MImage* image = (MImage*)script->getPointer(0);
	if(image)
	{
	    script->pushInteger(image->getWidth());
	    script->pushInteger(image->getHeight());
	    return 2;
	}
	return 0;
    }
示例#12
0
文件: atlas.cpp 项目: galek/MIngEd
    int ScriptAtlasGetSize()
    { 
	MEngine* engine = MEngine::getInstance();
	MScriptContext* script = engine->getScriptContext();
	Atlas* atlas = (Atlas*)script->getPointer(0);
	if(atlas)
	{
	    MImage* image = atlas->GetImage();
	    script->pushInteger(image->getWidth());
	    script->pushInteger(image->getHeight());
	    return 2;
	}
	return 0;
    }
示例#13
0
文件: atlas.cpp 项目: galek/MIngEd
    int ScriptAtlasGetUVs()
    {
	MEngine* engine = MEngine::getInstance();
	MScriptContext* script = engine->getScriptContext();

	MVector2 uvs[2];
	if(Atlas* atlas = (Atlas*)script->getPointer(0))
	    atlas->GetUVs(uvs, script->getString(1));

	script->pushFloat(uvs[0].x);
	script->pushFloat(uvs[0].y);
	script->pushFloat(uvs[1].x);
	script->pushFloat(uvs[1].y);
	return 4;
    }
示例#14
0
文件: renderer.cpp 项目: galek/MIngEd
    int ScriptSetColour()
    {
	MEngine* engine = MEngine::getInstance();
	MScriptContext* script = engine->getScriptContext();

	if(script->getArgsNumber() >= 3)
	{
	    g_CurrentColour.r = script->getInteger(0);
	    g_CurrentColour.g = script->getInteger(1);
	    g_CurrentColour.b = script->getInteger(2);
	    if(script->getArgsNumber() >= 4)
		g_CurrentColour.a = script->getInteger(3);
	    else
		g_CurrentColour.a = 255;
	}
    }
示例#15
0
void MPluginStart(MScriptExt)
{
    MResource::registerFactory("MScriptExt", MScriptExtGetter);
    MEngine* engine = MEngine::getInstance();
    s_script = new MScriptExtImpl;

    // copy the existing environment
    MScriptContext* oldScriptContext = engine->getScriptContext();
    char fnName[256];
    if(oldScriptContext)
        for(int i = 0; i < oldScriptContext->getNumCFunctions(); ++i)
        {
            MScriptContext::CFunction fn = oldScriptContext->getCFunction(i, fnName);
            s_script->addFunction(fnName, fn);
        }
        
    engine->setScriptContext(s_script);

    s_script->init();
}
示例#16
0
文件: atlas.cpp 项目: galek/MIngEd
    int ScriptAtlasAdd()
    {
	MEngine* engine = MEngine::getInstance();
	MScriptContext* script = engine->getScriptContext();

	Atlas* atlas = (Atlas*)script->getPointer(0);
	const char* path = script->getString(1);

	MImage* img = new MImage;
	if( engine->getImageLoader()->loadData(path, img) && atlas)
	{
	    MImage* ref = atlas->AddImage(img, path);
	    script->pushPointer(ref);
	    if(ref != img)
		delete img;
	    return ref != NULL ? 1 : 0;
	}

	delete img;
	return 0;
    }
示例#17
0
文件: renderer.cpp 项目: galek/MIngEd
    int ScriptAddQuad()
    {
	MEngine* engine = MEngine::getInstance();
	MScriptContext* script = engine->getScriptContext();
	if(g_Cnt >= MAX_QUAD) return 0;

	MVector3 verts[4];
	MVector2 uvs[4];
	for(int i = 0; i < 4; ++i)
	{
	    MVector2 vert;
	    script->getFloatArray(i*2, &vert.x, 2);
	    verts[i] = MVector3(vert.x, vert.y, 1);
	    script->getFloatArray(i*2 + 1, &uvs[i].x, 2);
	}

	// copy the vertices
	g_Vertices[g_Cnt*6 + 0] = verts[0];
	g_Vertices[g_Cnt*6 + 1] = verts[1];
	g_Vertices[g_Cnt*6 + 2] = verts[2];
	g_Vertices[g_Cnt*6 + 3] = verts[0];
	g_Vertices[g_Cnt*6 + 4] = verts[2];
	g_Vertices[g_Cnt*6 + 5] = verts[3];
	
	// copy the UVs in order
	g_UVs[g_Cnt*6 + 0] = uvs[0];
	g_UVs[g_Cnt*6 + 1] = uvs[1];
	g_UVs[g_Cnt*6 + 2] = uvs[2];
	g_UVs[g_Cnt*6 + 3] = uvs[0];
	g_UVs[g_Cnt*6 + 4] = uvs[2];
	g_UVs[g_Cnt*6 + 5] = uvs[3];

	for(int i = 0; i < 6; ++i)
	    g_Colours[g_Cnt*6 + i] = g_CurrentColour;
	
	g_Cnt ++;

	return 0;
    }