Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErwin Coumans <blender@erwincoumans.com>2006-05-23 01:03:43 +0400
committerErwin Coumans <blender@erwincoumans.com>2006-05-23 01:03:43 +0400
commitab71e2a9b55e0982d1134792d10af55464c7ac9e (patch)
tree4a53791a67d3234360107a33c5365d4de4844bb7 /source/gameengine/BlenderRoutines
parent677cf7f1333c634a52227a15d6dcb3351b39febc (diff)
-added basic support for GameActuator 'load game', relative paths were broken, just load file into memory and load blend from memory.
-near sensor support - python binding for PhysicsConstraints.setNumTimeSubSteps (dividing the physics timestep to tradeoff quality for performance)
Diffstat (limited to 'source/gameengine/BlenderRoutines')
-rw-r--r--source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp32
1 files changed, 24 insertions, 8 deletions
diff --git a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
index 9fcbabba546..a270b73c80d 100644
--- a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
+++ b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
@@ -85,8 +85,24 @@
static BlendFileData *load_game_data(char *filename) {
BlendReadError error;
- BlendFileData *bfd= BLO_read_from_file(filename, &error);
-
+ //this doesn't work anymore for relative paths, so use BLO_read_from_memory instead
+ //BlendFileData *bfd= BLO_read_from_file(filename, &error);
+ FILE* file = fopen(filename,"rb");
+ BlendFileData *bfd = 0;
+ if (file)
+ {
+ fseek(file, 0L, SEEK_END);
+ int len= ftell(file);
+ fseek(file, 0L, SEEK_SET);
+ char* filebuffer= new char[len];//MEM_mallocN(len, "text_buffer");
+ int sizeread = fread(filebuffer,len,1,file);
+ if (sizeread==1)
+ {
+ bfd = BLO_read_from_memory(filebuffer, len, &error);
+ }
+ fclose(file);
+ }
+
if (!bfd) {
printf("Loading %s failed: %s\n", filename, BLO_bre_as_string(error));
}
@@ -96,17 +112,17 @@ static BlendFileData *load_game_data(char *filename) {
extern "C" void StartKetsjiShell(struct ScrArea *area,
char* scenename,
- struct Main* maggie,
+ struct Main* maggie1,
struct SpaceIpo *sipo,
int always_use_expand_framing)
{
int exitrequested = KX_EXIT_REQUEST_NO_REQUEST;
- Main* blenderdata = maggie;
+ Main* blenderdata = maggie1;
char* startscenename = scenename;
char pathname[160];
- strcpy (pathname, maggie->name);
+ strcpy (pathname, blenderdata->name);
STR_String exitstring = "";
BlendFileData *bfd= NULL;
@@ -257,8 +273,8 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
Scene *blscene = NULL;
if (!bfd)
{
- blscene = (Scene*) maggie->scene.first;
- for (Scene *sce= (Scene*) maggie->scene.first; sce; sce= (Scene*) sce->id.next)
+ blscene = (Scene*) blenderdata->scene.first;
+ for (Scene *sce= (Scene*) blenderdata->scene.first; sce; sce= (Scene*) sce->id.next)
{
if (startscenename == (sce->id.name+2))
{
@@ -292,7 +308,7 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
}
// create a scene converter, create and convert the startingscene
- KX_ISceneConverter* sceneconverter = new KX_BlenderSceneConverter(maggie,sipo, ketsjiengine);
+ KX_ISceneConverter* sceneconverter = new KX_BlenderSceneConverter(blenderdata,sipo, ketsjiengine);
ketsjiengine->SetSceneConverter(sceneconverter);
if (always_use_expand_framing)