Page 5 of 6

Posted: Thu Mar 06, 2008 9:22 pm
by JonLT
thanks alot fuzzy! It's nice to see that the code can be used for something (even if just for fixing :D)

Posted: Tue Mar 11, 2008 6:26 pm
by igorfk
Don't know if this is the right place to ask.

I have a problem assigning a node values, my code compiles without any errors or warnings, but renders nothing when runned, and displaying the message:

Code: Select all

 "TUMLE:no node passed"
When debuging I noticed that this node have no values assigned
[img=http://img155.imageshack.us/img155/5362/debugio3.th.jpg]

this is my class were the debugger points me the problematic node

Code: Select all

classTruck.cpp

#include<irrlicht.h>
#include"classTruck.h"
#include <Newton.h>
#include "tumle.h"
using namespace tumle;
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
CTruck::CTruck()
{
	truckNode=NULL;
	ptruckNode=NULL;
}
CTruck::~CTruck()
{
	delete truckNode;
	delete ptruckNode;
}
void CTruck::set_Truck(IrrlichtDevice* device, stringc truckname,f32 x,f32 y,f32 z,IPhysicsManager *plevelMgr)
{
	model=(truckname+".ms3d");
	truckMgr = device->getSceneManager();
	truckMesh = truckMgr->getMesh(model.c_str());
	truckNode=truckMgr->addOctTreeSceneNode(truckMgr->getMesh(model.c_str()));
	if (truckNode)
	{
		truckNode->setPosition(vector3df(x,y,z));
		truckNode->setMaterialFlag(EMF_LIGHTING, false);
	}
	ptruckNode = plevelMgr->addPhysicsNode(truckNode, EBT_BOX, 10,vector3df(20,20,20));//problematic node
}
its header

Code: Select all

classTruck.h

#ifndef _CLASSTRUCK_H
#define _CLASSTRUCK_H
#include <irrlicht.h>
#include <Newton.h>
#include "tumle.h"
using namespace tumle;
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
class CTruck
{
	public:
		CTruck();
		virtual ~CTruck();
		void set_Truck(IrrlichtDevice* device, stringc truckname,f32 x,f32 y,f32 z,IPhysicsManager *plevelMgr);
		ISceneManager* truckMgr;
		IAnimatedMesh* truckMesh;
		ISceneNode* truckNode;
		IPhysicsNode *ptruckNode;
	private:
		stringc model;
};
#endif
and the main cpp

Code: Select all

rrr.cpp

#include <irrlicht.h>
#include "classTruck.h"
#include <Newton.h>
#include "tumle.h"
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace tumle;
CTruck *objCTruck = new CTruck;
int main()
{
	IrrlichtDevice* device = createDevice(EDT_DIRECT3D9, dimension2d<s32>(320, 240), 16, false, false, true);
	IVideoDriver* driver = device->getVideoDriver();
	ISceneManager* levelMgr = device->getSceneManager();
	ISceneManager* truckMgr = device->getSceneManager();
	device->getCursorControl()->setVisible(false);
	IPhysicsManager *plevelMgr = createPhysicsManager(device);
	objCTruck->set_Truck(device,"truck00",0,700,0,plevelMgr);
	levelMgr->addSceneNode("truckMgr",0);
	ICameraSceneNode* camera = levelMgr->addCameraSceneNodeFPS(0,100.0f,300.0f);
	camera->setPosition(vector3df(0,10,-100));
	while(device->run()) 
	{
		driver->beginScene(true, true, SColor(255,200,200,200));
		levelMgr->drawAll();
		driver->endScene();
		plevelMgr->update();
	}
	delete[] objCTruck;
	device->drop();
	return 0;
}
I now that my code is full o bad practices, and the root of the problem may be just c basics, but I dont know were's the best place to ask such question, I'm very noobish, and I'm trying to fix this error for a long time.

Thanks for any help =D

Posted: Tue Mar 11, 2008 7:18 pm
by Halifax
EDIT:

My first post was wrong, I didn't read over the whole thing correctly. This problem was covered before though, so you should have searched the forums.

IPhysicsManager::addPhysicsNode() cannot accept an OctTreeSceneNode. It only accepts an AnimatedMeshSceneNode or MeshSceneNode.

Code: Select all

ptruckNode = plevelMgr->addPhysicsNode(truckNode, EBT_BOX, 10,vector3df(20,20,20));//
[/code

Posted: Tue Mar 11, 2008 8:06 pm
by igorfk
Thank you very much Halifax!
But even using addAnimatedMeshSceneNode the node still receives nothing

p.s.: this line in the main file must be commented

Code: Select all

ISceneManager* truckMgr = device->getSceneManager();

Posted: Tue Mar 11, 2008 8:51 pm
by Halifax
Okay, well then my other suggestions also come into play then too. I just wasn't sure at the time.

I don't think dynamic allocation works on global variables as an initialization value. So try one of the two at the bottom. (I'm not sure if the first one will work, but the second one should definitely work.)

Code: Select all

CTruck* objCTruck;

int main()
{
     objCTruck = new CTruck;
or

Code: Select all

int main()
{
     CTruck* objCTruck = new CTruck;
And my third problem with your code is that you aren't deleting an array. So change your code for deleting the object to:

Code: Select all

     delete objCTruck;

Posted: Wed Mar 12, 2008 3:29 am
by igorfk
:) you're right Halifax
fixed now.

still, the node dont want to receive arguments, but I think I'm getting more close to solve this. Is there some rule against declare abstract members in a class header? Like this node in the classTruck.h:

Code: Select all

ISceneNode* truckNode;
and then try to assign some value in the cpp of the header?

Code: Select all

truckNode=levelMgr->addAnimatedMeshSceneNode(levelMgr->getMesh(model.c_str()));
In the debugger I'd noticed that the non abstract members, declared in the header file, accept values and the abstract ones not.

I think that this post should be in other topic from now on.

ps: sorry for my noobish and my Englishhh. :)

Posted: Fri Apr 04, 2008 5:42 am
by anandh
help me in moving my enemy character in a defined path.
how to move the physics node.
using the 05 - Controllable player is moving perfect.
if i call setVelocity it is not moving.
may be it is wrong way.what is the perfect method to move a physics node in a defined path.

Long problem

Posted: Tue Apr 08, 2008 9:43 pm
by offmonreal
I use Tumple 1.4 with corrections from the given forum
Problem in management(controlable) of monsters
The collision is necessary for monsters for me only
custom set position and rotation

As district in game hilly... The physics of Newton has not time to push out monsters
And they fail appear a card(map) of the world

It is necessary for me as it uses AI


sorry my bad English..

problem

Posted: Wed Nov 05, 2008 4:12 pm
by 3DModelerMan
I'm trying to use tumle for my game, but I get dimensions and body type do not match printed to stdout I add my objects like this

Code: Select all

IAnimatedMeshSceneNode* battlefield_stage = smgr->addAnimatedMeshSceneNode(smgr->getMesh("battlefield_stage.obj") );
if (battlefield_stage)
{
battlefield_stage->setScale(vector3df(3,3,3) );
battlefield_stage->setPosition(vector3df(10000,10000,0) );
battlefield_stage->setMaterialFlag(EMF_NORMALIZE_NORMALS, true);
battlefield_stage->setMaterialFlag(EMF_BACK_FACE_CULLING, false);
battlefield_stage->setMaterialFlag(EMF_LIGHTING, true);
battlefield_stage->setMaterialType(EMT_TRANSPARENT_ALPHA_CHANNEL);
battlefield_stage->setMaterialTexture( 0, driver->getTexture("battlefield_UV_map.png") );
battlefield_stage->getMaterial(0).EmissiveColor.set(0,100,100,100);
battlefield_stage->setVisible(false);
}

IPhysicsNode* stage_1_physics = pmgr->addPhysicsNode(battlefield_stage, EBT_LEVEL, 100, vector3df(5,5,5));
if (stage_1_physics)
{
stage_1_physics->setGravity(vector3df(0,0,0) );
}

Posted: Wed Nov 19, 2008 11:47 am
by spider-mario
A great thanks to you, JonLT, for this wonderful wrapper :)

Posted: Sat Dec 13, 2008 6:20 pm
by m506
Guys, I'm kind of having the same problem from buhatkj with this wrapper, which i am suspecting to be newton's fault after all.

When i try to retrieve the body mass, in order to set the gravity force using
NewtonBodyGetMassMatrix(body, &mass, &Ixx, &Iyy, &Izz);
the values are corrupted and do not reflect the values i originally defined:

Image

I have defined 1000.0f for mass but the value being returned is different, and it seems that the mass value is actually being retrieved into another variable, probably due to some stack corruption.

Hey buhatkj, did you by any chance solve this stack problem you mentioned some time ago? If so can you please share this with us?

Im kind of stuck here so if anyone has any light to shed i would appreciate
Regards

Tumle & Irrlicht 1.5

Posted: Wed Dec 17, 2008 10:28 am
by mamonth
I have some problem with CameraPhysicsNodeFPS when I using Irrlicht 1.5. I can not rotate camera by mouse. With Irrlicht 1.4.2. tumle works normally. Is that tumle problem or it is bug in my code?
Thanks
NOT A TUMLE PROBLEM!
It happens when I add to camera some nodes as children :(

Posted: Wed Dec 31, 2008 2:53 am
by lab_zj
I also has found this problem.
How to solve it? The FPS camera is a top-level node.

Help

Posted: Tue Jan 20, 2009 2:06 am
by elkar
I'm having a small problem: I replaced my "addPhysicsLevelNode" with raymond's found in the 7th post on the 4th page of this thread, because I wanted to load a .3ds for my world. It worked perfectly for the time being. Now I am trying to add a physics cube to my program, and it compiles successfully. Yet when I run it, the program hangs and then closes. Does this have anything to do with the replaced code? It works perfectly if I just add a cube scene node, but as soon as I make a physics scene node it starts the hang-and-close routine. Here is the code in question:

Code: Select all

IAnimatedMesh* levelMesh = smgr->getMesh("./models/terrain.3ds");
    ISceneNode* levelNode = smgr->addOctTreeSceneNode(levelMesh->getMesh(0), 0, -1, 128);
    levelNode->setMaterialTexture(0, driver->getTexture("./textures/level1/base.jpg"));
    levelNode->setMaterialFlag(EMF_LIGHTING, false);
    levelNode->setPosition(vector3df(0, -35, 0));
    IPhysicsNode* physlevel = pmgr->addPhysicsLevelNode(levelNode, levelMesh->getMesh(0));

    ISceneNode* testCube = smgr->addCubeSceneNode();
    testCube->setMaterialFlag(EMF_LIGHTING, false);
    testCube->setPosition(vector3df(30, 0, 0));
    testCube->setScale(vector3df(1, 1, 1));
    IPhysicsNode* physTestCube = pmgr->addPhysicsNode(testCube, EBT_BOX, 10, vector3df(10, 10, 10)); //^^^^^^This is what cause the hang-and-close^^^^^^^^^^^^^^^^^^^^^^^^

ahhh

Posted: Tue Jan 20, 2009 4:05 am
by 3DModelerMan
That's the problem I had too. I could add as many spheres and cubes as I wanted, but then when I added a level or other node it did the same.
With the level thing though, I noticed it said it resizes the newton world, when I tried to manually resize the newton world it did the same thing.