IrrNewt irrlicht\newton framework >> SVN access

Announce new projects or updates of Irrlicht Engine related tools, games, and applications.
Also check the Wiki

Postby freetimecoder » Wed Mar 31, 2010 4:56 pm

Hey,

it is done, the Spring is now useble as a class. I would have made it a IJoint class, but I don't get how they are actually working.

Windows Binary & Source
http://www.freetimestudio.de/IrrNewt_Springs.zip

CSpring.h
Code: Select all
#ifndef CSPRING_H_INCLUDED
#define CSPRING_H_INCLUDED

#include <IrrNewt.hpp>
#include <irrlicht.h>
using namespace irr;

class CSpring{
private:
    newton::IBody *Body_Parent;
    newton::IBody *Body_Child;
    f32 Strength;
    f32 Length;
public:
    CSpring();
    CSpring(newton::IBody *parent,newton::IBody *child,f32 strength=1,f32 length = -1);
    ~CSpring();
    void update();
    void setStrength(f32 pstrength);
    f32 getStrength();
    void setLength(f32 plength);
    f32 getLength();
    void setParent(newton::IBody *pparent);
    newton::IBody *getParent();
    void setChild(newton::IBody *pchild);
    newton::IBody *getChild();
    void drawDebugData(video::IVideoDriver *driver);

};

#endif // CSPRING_H_INCLUDED


CSpring.cpp
Code: Select all
#include "CSpring.h"

CSpring::CSpring(){
    Body_Parent = 0;
    Body_Child = 0;
    Strength = 1;
    Length = 0;
}

CSpring::CSpring(newton::IBody *parent,newton::IBody *child,f32 strength,f32 length){
    Body_Parent = parent;
    Body_Child = child;
    Strength = strength;
    Length = length;
    if(Length<0){
        if(Body_Parent!=0 && Body_Child!=0){
            core::line3d<f32> line;
            line.start = Body_Parent->getNode()->getAbsolutePosition();
            line.end = Body_Child->getNode()->getAbsolutePosition();
            Length = line.getLength();
        }
    }
}

CSpring::~CSpring(){
    Body_Parent = 0;
    Body_Child = 0;
}

void CSpring::update(){
    if(Body_Child!=0 && Body_Parent!=0){
        core::line3d<f32> line;
        line.start = Body_Parent->getNode()->getAbsolutePosition();
        line.end = Body_Child->getNode()->getAbsolutePosition();
        core::vector3df force_direction = line.getVector().normalize();
        f32 curlength = line.getLength();
        f32 factor = curlength-Length;
        core::vector3df force = force_direction*factor;

        Body_Parent->addGlobalForce(Strength*force,line.end);
        Body_Child->addGlobalForce(-Strength*force,line.end);
    }
}

void CSpring::setStrength(f32 pstrength){
    Strength = pstrength;
}

f32 CSpring::getStrength(){
    return Strength;
}

void CSpring::setLength(f32 plength){
    Length = plength;
}

f32 CSpring::getLength(){
    return Length;
}

void CSpring::setParent(newton::IBody *pparent){
    Body_Parent = pparent;
}

newton::IBody *CSpring::getParent(){
    return Body_Parent;
}

void CSpring::setChild(newton::IBody *pchild){
    Body_Child = pchild;
}

newton::IBody *CSpring::getChild(){
    return Body_Child;
}

void CSpring::drawDebugData(video::IVideoDriver *driver){
    if(Body_Child!=0 && Body_Parent!=0){
        video::SMaterial material;
        material.Lighting = false;
        material.Thickness = 3;
        driver->setMaterial(material);
        driver->setTransform(video::ETS_WORLD,core::matrix4());
        driver->draw3DLine(Body_Parent->getNode()->getAbsolutePosition(),Body_Child->getNode()->getAbsolutePosition(),video::SColor(255,255,255,0));
    }
}


sample.cpp
Code: Select all
//include haders and link libraries
#include <IrrNewt.hpp>
#include <irrlicht.h>

using namespace irr;

#include "CSpring.h"


//irrlicht variables
IrrlichtDevice* device;
video::IVideoDriver* driver;
scene::ISceneManager* smgr;
scene::ICameraSceneNode* camera;

//level body
irr::newton::IBody* level_body;
//physics world
irr::newton::IWorld* p_world;

f32 idlelength;
f32 Strength;

//-----------------------------------------------------------------
//the event receiver
class MyEventReceiver:public IEventReceiver {
public:
   virtual bool OnEvent(const SEvent& event) {
   if(event.EventType == EET_KEY_INPUT_EVENT) {
        if(event.KeyInput.PressedDown == false) { //pressed down false

         if(event.KeyInput.Key==KEY_KEY_W){
            idlelength++;
            printf("Idle Length: %i\n",(int)idlelength);
         }

         if(event.KeyInput.Key==KEY_KEY_S){
            idlelength--;
            printf("Idle Length: %i\n",(int)idlelength);
         }


         if(event.KeyInput.Key==KEY_KEY_Q){
            Strength+=0.1;
            printf("Strength: %f\n",Strength);
         }

         if(event.KeyInput.Key==KEY_KEY_A){
            Strength-=0.1;
            printf("Strength: %f\n",Strength);
         }


         //exit
         if(event.KeyInput.Key==KEY_ESCAPE)
            device->closeDevice();


      }//else if(event.KeyInput.PressedDown == false) {
   }
   return false;
   }
}my_event_receiver;


int main(int argc, char** argv) {

    //Get all the framework running
   device = createDevice(video::EDT_OPENGL, core::dimension2d<u32>(800,600), 32,false,false,true);
   smgr=device->getSceneManager();
   driver=device->getVideoDriver();
   p_world=irr::newton::createPhysicsWorld(device);
   device->setEventReceiver(&my_event_receiver);

    //Scene stuff
   camera=smgr->addCameraSceneNodeFPS();
   camera->setPosition(core::vector3df(0,55,-50));
    smgr->addLightSceneNode(0,core::vector3df(0,100,-100));

   //Some ground
   scene::ISceneNode* world_node = smgr->addCubeSceneNode(2);
   world_node->setScale(core::vector3df(102,1,102));
   world_node->setMaterialFlag(video::EMF_NORMALIZE_NORMALS,true);
   world_node->setAutomaticCulling(scene::EAC_OFF);
   irr::newton::SBodyFromNode levelData;
   levelData.Node = world_node;
   levelData.Mass = 0;
   levelData.Type = newton::EBT_PRIMITIVE_BOX;
   level_body = p_world->createBody(levelData);
   irr::newton::IMaterial* ground_material= p_world->createMaterial();
   level_body->setMaterial(ground_material);



    //Hooks for the net
   irr::newton::IMaterial* hook_material= p_world->createMaterial();

    //First hook
   scene::ISceneNode* hook_node = smgr->addCubeSceneNode(2);
   hook_node->setPosition(core::vector3df(-20,60,0));
   irr::newton::SBodyFromNode hook_data1;
   hook_data1.Node = hook_node;
   hook_data1.Mass = 0;
   hook_data1.Type = newton::EBT_PRIMITIVE_BOX;
   irr::newton::IBody* hook_body1 = p_world->createBody(hook_data1);
   hook_body1->setMaterial(hook_material);

    //Second hook
   scene::ISceneNode* hook_node2 = smgr->addCubeSceneNode(2);
   hook_node2->setPosition(core::vector3df(20,60,0));
   irr::newton::SBodyFromNode hook_data2;
   hook_data2.Node = hook_node2;
   hook_data2.Mass = 0;
   hook_data2.Type = newton::EBT_PRIMITIVE_BOX;
   irr::newton::IBody* hook_body2 = p_world->createBody(hook_data2);
   hook_body2->setMaterial(hook_material);


    //Spheres in the net
    irr::newton::IMaterial* sphere_material;
   sphere_material= p_world->createMaterial();
   sphere_material->setElasticity(ground_material, 1);

    //Sphere 1
    scene::ISceneNode* sphere_node1;
   irr::newton::SBodyFromNode sphereData;
    irr::newton::IBody *sphere_body;

   sphere_node1 = smgr->addSphereSceneNode(2);
    sphere_node1->setPosition(core::vector3df(-20,20,0));
   sphereData.Node = sphere_node1;
   sphereData.Type = newton::EBT_PRIMITIVE_ELLIPSOID;
    sphereData.Mass=10;
    sphere_body = p_world->createBody(sphereData);
   sphere_body->addForceContinuous(core::vector3df(0,-9.81,0));//gravity
   sphere_body->addForce(core::vector3df(5,0,5));  //give it a little push
   sphere_body->setMaterial(sphere_material);

    //Sphere 2
    scene::ISceneNode* sphere_node2;
   irr::newton::SBodyFromNode sphereData2;
    irr::newton::IBody *sphere_body2;
   sphere_node2 = smgr->addSphereSceneNode(2);
    sphere_node2->setPosition(core::vector3df(20,20,0));
   sphereData2.Node = sphere_node2;
    sphereData2.Mass=10;
   sphereData2.Type = newton::EBT_PRIMITIVE_ELLIPSOID;
    sphere_body2 = p_world->createBody(sphereData2);
   sphere_body2->addForceContinuous(core::vector3df(0,-9.81,0));   //gravity
   sphere_material= p_world->createMaterial();
   sphere_body2->setMaterial(sphere_material);


    //Set up the spring system
    core::list<CSpring*> list_springs = core::list<CSpring*>();

    //Connect everything with everything
    idlelength = 40.0f;
    Strength = 1;
   CSpring *spring = new CSpring(sphere_body,sphere_body2);
   list_springs.push_back(spring);

   CSpring *spring2 = new CSpring(sphere_body,hook_body2);
   spring2->setLength(20);
   list_springs.push_back(spring2);

   CSpring *spring3 = new CSpring(sphere_body2,hook_body1);
   spring3->setLength(20);
   list_springs.push_back(spring3);

   CSpring *spring4 = new CSpring(sphere_body,hook_body1);
   spring4->setLength(20);
   list_springs.push_back(spring4);

   CSpring *spring5 = new CSpring(sphere_body2,hook_body2);
   spring5->setLength(20);
   list_springs.push_back(spring5);

    printf("\n\n\nChange the middle spring's idle length with W and S. Current Length is: 20\n");
    printf("Change the middle spring's strength with Q and A. Current Strength is: 1\n");

    //Here we go
   while(device->run()) {


        driver->beginScene(true,true,video::SColor(0,0,0,0));

        video::SMaterial material;
        material.Lighting = false;
        material.Thickness = 3;
        driver->setMaterial(material);
        driver->setTransform(video::ETS_WORLD,core::matrix4());
        video::SColor drawcolor=video::SColor(255,200,100,0);
        driver->draw3DLine(hook_node->getPosition(),sphere_node1->getPosition(),drawcolor);
        driver->draw3DLine(hook_node2->getPosition(),sphere_node2->getPosition(),drawcolor);


        spring->setStrength(Strength);
        spring->setLength(idlelength);

        core::list<CSpring*>::Iterator it_spring = list_springs.begin();
        for(;it_spring!=list_springs.end();it_spring++){
            (*it_spring)->update();
            (*it_spring)->drawDebugData(driver);
        }
        p_world->update();


        smgr->drawAll();

        driver->endScene();

}

   device->drop();
   return 0;
}



Have fun.


I also have a question. I want to create a vehicle, but I don't want to use the inbuild ICar class (because it can just handle "simple" vehicles), so I started to create an own Car as a basis. Problem is, it does barely move. I tried every possible friction configuration and set different masses for the cassis/tires or torque, but it either does not change much or the car gets totally out of control and spins around like crazy. Any ideas what could be wrong?
exe and media: http://www.freetimestudio.de/Car.zip

Code: Select all
//include haders and link libraries
#include <IrrNewt.hpp>
#include <irrlicht.h>
using namespace irr;

//irrlicht variables
IrrlichtDevice* device;
video::IVideoDriver* driver;
scene::ISceneManager* smgr;
scene::ICameraSceneNode* camera;

//level body
irr::newton::IBody* level_body;
//physics world
irr::newton::IWorld* p_world;

int main(int argc, char** argv) {

    //Get all the framework running
   device = createDevice(video::EDT_OPENGL, core::dimension2d<u32>(800,600), 32,false,false,true);
   smgr=device->getSceneManager();
   driver=device->getVideoDriver();
   p_world=irr::newton::createPhysicsWorld(device);

    //Scene stuff
   camera=smgr->addCameraSceneNodeFPS(0,100,0.1);
   camera->setPosition(core::vector3df(-50,20,0));
   camera->setRotation(core::vector3df(0,90,0));
    smgr->addLightSceneNode(0,core::vector3df(0,100,-100));

   //Some ground
   scene::ISceneNode* world_node = smgr->addCubeSceneNode(2);
   world_node->setScale(core::vector3df(50,3,50));
   world_node->setPosition(core::vector3df(0,-15,0));
   world_node->setMaterialFlag(video::EMF_NORMALIZE_NORMALS,true);
   world_node->setAutomaticCulling(scene::EAC_OFF);
   irr::newton::SBodyFromNode levelData;
   levelData.Node = world_node;
   levelData.Mass = 0;
   levelData.Type = newton::EBT_PRIMITIVE_BOX;
   level_body = p_world->createBody(levelData);
   irr::newton::IMaterial* ground_material= p_world->createMaterial();
   level_body->setMaterial(ground_material);


    scene::IMeshSceneNode *node_cassis = smgr->addMeshSceneNode(smgr->getMesh("media/car.b3d"));
    node_cassis->setScale(core::vector3df(10,10,10));
    node_cassis->setMaterialFlag(video::EMF_NORMALIZE_NORMALS,true);
    newton::SBodyFromNode data_cassis;
    data_cassis.Node = node_cassis;
    data_cassis.Mass =1;
    data_cassis.Mesh = node_cassis->getMesh();
    data_cassis.Type = newton::EBT_CONVEX_HULL;
    newton::IBody *body_cassis = p_world->createBody(data_cassis);
    body_cassis->addForceContinuous(core::vector3df(0,-9.81,0));


    //Creating four wheels

   irr::newton::IMaterial* material_wheel= p_world->createMaterial();
    material_wheel->setFriction(ground_material,1,0.1);

    scene::IMeshSceneNode *node_wheel[4];
    newton::IBody *body_wheel[4];
    for(int i = 0;i<4;i++){
        node_wheel[i] = smgr->addMeshSceneNode(smgr->getMesh("media/tire.b3d"));
        node_wheel[i]->setScale(core::vector3df(10,10,10));
        node_wheel[i]->setRotation(core::vector3df(0,0,90));
        node_wheel[i]->setPosition(core::vector3df(0,10,0));
        node_wheel[i]->setMaterialFlag(video::EMF_NORMALIZE_NORMALS,true);
        newton::SBodyFromNode data_wheel;
        data_wheel.Node = node_wheel[i];
        data_wheel.Mesh = node_wheel[i]->getMesh();
        data_wheel.Type = newton::EBT_PRIMITIVE_CYLINDER;
        body_wheel[i] = p_world->createBody(data_wheel);
        body_wheel[i]->addForceContinuous(core::vector3df(0,-9.81,0));
        body_wheel[i]->setMaterial(material_wheel);
    }


    body_wheel[0]->setPosition(core::vector3df(4,-1.3,5.5));
    body_wheel[0]->setRotation(core::vector3df(180,00,90));

    body_wheel[1]->setPosition(core::vector3df(-4,-1.3,5.5));

    body_wheel[2]->setPosition(core::vector3df(4,-1.3,-5.5));
    body_wheel[2]->setRotation(core::vector3df(180,00,90));

    body_wheel[3]->setPosition(core::vector3df(-4,-1.3,-5.5));

    //Connecting them with the cassis
    for(int i=0;i<4;i++){
        core::vector3df pivot,pin0,pin1;
        pivot=body_wheel[i]->getPosition();
        pin0.set(0.0f,0.0f,0.0f);

        irr::newton::SJointHinge joint;
        joint.PinDir.set(1.0f,0.0f,0.0f);
        joint.ParentBody=body_cassis;
        joint.ChildBody=body_wheel[i];
        joint.Pivot=pivot;
        newton::IJointHinge* bjoint=p_world->createJoint(joint);
        bjoint->setCollisionState(false);
    }

    body_cassis->setPosition(core::vector3df(0,8,0));


    //Here we go
   while(device->run()) {

        //"Motor"
         for(int i=2;i<4;i++){
             body_wheel[i]->setTorque(core::vector3df(3,0,0));
         }

        driver->beginScene(true,true,video::SColor(0,0,0,0));

        p_world->update();


        smgr->drawAll();

        p_world->drawAllDebugInfos();
        driver->endScene();

}

   device->drop();
   return 0;
}
User avatar
freetimecoder
 
Posts: 226
Joined: Fri Aug 22, 2008 8:50 pm

Postby freetimecoder » Thu Apr 08, 2010 4:45 pm

Ok, I found out that I can use IVehicleSimple for my project. But how can I tell the tires to not collide with the car body? Setting the material does not work, since I cannot access the joints, can I?

greetings
User avatar
freetimecoder
 
Posts: 226
Joined: Fri Aug 22, 2008 8:50 pm

Postby freetimecoder » Sat Apr 10, 2010 8:54 am

Found that one out, too. I works with vechicle->setCollisionState(false). Next question, how can I add friction to the tires? Since the tires are no body objects I cannot set a material. Can I access the tire's body somehow? I have not found any method returning an IBody.

Would really help if someone would actually answer my questions :P ;) Talking to myself so much cannot be healthy.

greetings
User avatar
freetimecoder
 
Posts: 226
Joined: Fri Aug 22, 2008 8:50 pm

Postby Seven » Sat Apr 10, 2010 12:03 pm

have you guys fixed the issues with the terrainscenenode and IrrNewt with the latest version of Irrlicht? If you have,we would be VERY interested in seeing code for it as we have not been able to get past it..
Seven
 
Posts: 597
Joined: Mon Nov 14, 2005 2:03 pm

Postby freetimecoder » Mon Apr 12, 2010 2:20 pm

How can I add friction to the tires?

Setting friction to the cassis material makes the tires respond in the proper way. Still I have no direct acces to the bodies, but I guess it does not help to ask further questions, since I have to answer them myself, anyway.

greetings
User avatar
freetimecoder
 
Posts: 226
Joined: Fri Aug 22, 2008 8:50 pm

Postby Eigen » Tue Apr 20, 2010 10:10 am

Will IrrNewt be updated to Newton 2.x? I gave it a go myself, and with a lot of code commented out it worked, but it's quite unstable and the raycast (which I use a lot) is not working right.
User avatar
Eigen
Competition winner
 
Posts: 375
Joined: Fri Jan 27, 2006 2:01 pm
Location: Estonia

Postby Virion » Sun Nov 14, 2010 9:20 pm

does anyone still maintaining this project?
User avatar
Virion
 
Posts: 2102
Joined: Mon Dec 18, 2006 5:04 am
Location: Malaysia

Postby Granyte » Mon Feb 21, 2011 10:20 pm

does not look like sad the project was abandoned
Granyte
 
Posts: 517
Joined: Tue Jan 25, 2011 11:07 pm

newton vehicle

Postby newleon » Sat May 07, 2011 7:07 am

Hi
I am trying to recompile IrrNewt (downloaded from svn) with Irrlicht 1.7.2 and Newton 1.5.3 under VS2008. First I make a new Win32 Console Application project, then choose Static library and add all .h(hpp) files within IrrNewt include directory to Header files part and all .cpp files from IrrNewt source to Source files. Then I add required directories in Additional Include Directories and finally build the project. After solving the errors, IrrNewt.lib is made. Then I try to compile the hello_world example and I got these linking error:
Code: Select all
1>------ Rebuild All started: Project: myIrrNewt03, Configuration: Debug Win32 ------
1>Deleting intermediate and output files for project 'myIrrNewt03', configuration 'Debug|Win32'
1>Compiling...
1>main.cpp
1>Compiling manifest to resources...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
1>Copyright (C) Microsoft Corporation.  All rights reserved.
1>Linking...
1>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall irr::newton::IWorld::drawAllDebugInfos(void)" (__imp_?drawAllDebugInfos@IWorld@newton@irr@@QAEXXZ) referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall irr::newton::IWorld::update(void)" (__imp_?update@IWorld@newton@irr@@QAEXXZ) referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall irr::newton::IBody::addForceContinuous(class irr::core::vector3d<float>)" (__imp_?addForceContinuous@IBody@newton@irr@@QAEXV?$vector3d@M@core@3@@Z) referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class irr::newton::IBody * __thiscall irr::newton::IWorld::createBody(struct irr::newton::SBodyFromNode)" (__imp_?createBody@IWorld@newton@irr@@QAEPAVIBody@23@USBodyFromNode@23@@Z) referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) class irr::newton::IWorld * __cdecl irr::newton::createPhysicsWorld(class irr::IrrlichtDevice *)" (__imp_?createPhysicsWorld@newton@irr@@YAPAVIWorld@12@PAVIrrlichtDevice@2@@Z) referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class irr::newton::IBody * __thiscall irr::newton::IUtils::launchCube(void)" (__imp_?launchCube@IUtils@newton@irr@@QAEPAVIBody@23@XZ) referenced in function "public: virtual bool __thiscall MyeventReceiver::OnEvent(struct irr::SEvent const &)" (?OnEvent@MyeventReceiver@@UAE_NABUSEvent@irr@@@Z)
1>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class irr::newton::IUtils * __thiscall irr::newton::IWorld::getUtils(void)" (__imp_?getUtils@IWorld@newton@irr@@QAEPAVIUtils@23@XZ) referenced in function "public: virtual bool __thiscall MyeventReceiver::OnEvent(struct irr::SEvent const &)" (?OnEvent@MyeventReceiver@@UAE_NABUSEvent@irr@@@Z)
1>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall irr::newton::IBody::setScale(class irr::core::vector3d<float>)" (__imp_?setScale@IBody@newton@irr@@QAEXV?$vector3d@M@core@3@@Z) referenced in function "public: virtual bool __thiscall MyeventReceiver::OnEvent(struct irr::SEvent const &)" (?OnEvent@MyeventReceiver@@UAE_NABUSEvent@irr@@@Z)
1>C:\Users\newleon\Documents\Visual Studio 2008\Projects\myIrrNewt03\Debug\myIrrNewt03.exe : fatal error LNK1120: 8 unresolved externals
1>Build log was saved at "file://c:\Users\newleon\Documents\Visual Studio 2008\Projects\myIrrNewt03\myIrrNewt01\Debug\BuildLog.htm"
1>myIrrNewt03 - 9 error(s), 0 warning(s)
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========


I already added Newton.lib Irrlicht.lib IrrNewt.lib (exactly in this order) and I don't have any idea about the origin of these linking errors. I am not sure making just IrrNewt.lib is enough or not, I mean should I make another new project to build IrrNewt.dll file? Is there any comment?
User avatar
newleon
 
Posts: 19
Joined: Mon Jan 10, 2011 7:59 am
Location: Pohang, South Korea

Postby serengeor » Sat May 07, 2011 10:20 am

there should be no need to compile a dll if you will use static library.

since you are using msvc maybe you forgot:
Code: Select all
#pragma comment(lib, "IrrNewt.lib")

:roll:
Working on game: Marrbles (Currently stopped).
User avatar
serengeor
 
Posts: 1695
Joined: Tue Jan 13, 2009 7:34 pm
Location: Lithuania

Postby Barratator » Sun May 15, 2011 3:44 pm

Hello,
I'm trying to use IrrNewt. But when I include the "irrnewt.hpp" VS2010 gives me 168 Errors. Like:


Code: Select all
error C2039: 'newton_contact': Ist kein Element von 'irr::newton::IMaterialContact'   [...]\include\irrnewt\contact.hpp   Line24   1

('newton_contact' is not an element of 'irr::newton::IMaterialContact')

Code: Select all
error C2061: Syntaxfehler: Bezeichner 'NewtonContact'   [...]\include\irrnewt\contact.hpp   Line 21   1

(syntax error: identifier 'NewtonContact')

I'm using irrNewt 0.4 and Irrlicht 1.71. irrNewt is a part of the include path and the .lib is linked.

Does anyone have a solution?

Thanks!
Barratator
 
Posts: 30
Joined: Fri Jan 08, 2010 3:30 pm

Re: IrrNewt irrlicht\newton framework >> SVN access

Postby DimonSE » Thu Jun 07, 2012 11:19 pm

I compile irrNewt with Irrlicht 1.7.3 in Visual studio 2008 ---> http://irrlicht-newton-wrapper.googlecode.com/files/IrrNewt_SDK_0_4.zip

First, I change some parts of .cpp to get compatibility with Irrlicht 1.7.3 (just very small blocks of code)

I've change:
1.
cpp Code: Select all
bool OnEvent(Event event)

change to
cpp Code: Select all
bool OnEvent(const Event& event)


2.
cpp Code: Select all
materials.Texture[0] = 0

change to
cpp Code: Select all
materials.setTexture(0, 0)


3. in ragdoll.cpp
cpp Code: Select all
for (list<ISceneNode*>::Iterator it = children.begin(); it != children.end(); ++it)

change to
cpp Code: Select all
for (list<ISceneNode*>::ConstIterator it = children.begin(); it != children.end(); ++it)


Second, I have done little change in collision.cpp this function:
cpp Code: Select all
NewtonCollision* CreateCollisionTreeTerrain(
                                 IWorld* world,
                                 scene::ISceneNode* node,
                                 irr::s32 LOD,
                                 unsigned int& PolyCount)


to adaptive with new virsion of Irrlicht

So in archive we found recompiled IrrNewt:

./lib/win32-msvs2008/IrrNewt.lib
./bin/visual_studio/IrrNewt.dll
./bin/include

debug version in:
./lib/win32-msvs2008/debug/IrrNewt.lib
./bin_debug/visual_studio/IrrNewt.dll

Also i add Visual studio 2008 .sln files in
./examples/IDE/visual studio
try compile example projects!

In ./libs/ you found Irrlicht 1.7.3 and Newton 1.53

PS: sorry for bad English, I am from Russia :D
DimonSE
 
Posts: 6
Joined: Tue Dec 06, 2011 3:46 pm

Previous

Return to Project Announcements

Who is online

Users browsing this forum: No registered users and 0 guests