New Version Update Thread

walaber

16-04-2006 05:18:37

but, the latest version is now up for download from my website and CVS, so anyone interested in the latest version please give it a try.

have a look at the Raycast and Buoyancy demos to see how the new boost bindings work. they are very easy.

BergBoy

16-04-2006 05:39:50

Yay! New Ogrenewt! Good work champ :wink:

smirnof.pl

17-04-2006 09:34:13

Very good news!! I had problems with setCustomForceAndTorqueCallback but now it should work corcectly. fastdelegate was strange... :)

OvermindDL1

17-04-2006 09:42:54

Now all we need is for PLSM2 to use them, havn't mentioned it though as I've yet a need for the more advanced functions in it there. :P

walaber

18-04-2006 00:17:24

I apparently forgot to include a few updated files which were causing compile errors... please re-download the binary from my website, it has been updated.

walaber

18-04-2006 02:50:56

okay, CVS should be updated as well, and working properly. let me know if there are any errors compiling OgreNewt_Main.

I will make some updates to the documentation as well shortly.

quadbyte

13-05-2006 23:53:05

Very bad news for those who dont want use boost but still use OgreNewt.

any workaround ?

Vectrex

14-05-2006 07:20:26

boost is good, it's there to be used, plus it's not like you're including ALL of boost.

OvermindDL1

17-05-2006 23:32:38

It includes the parts of boost it uses, you do not have to download and compile boost. :P

Besides, why on earth would you not have boost, its like a standard...

walaber

21-05-2006 21:27:05

a new update is up on CVS right now and as a binary on my website that fixes several small problems in OgreNewt related to compiling all of the demos without errors, and porting OgreNewt to linux.

basically it's been cleaned up quite a bit, please update!

one note - the OgreNewt::BasicFrameListener has been changed, it nowo inherits from Ogre::FrameListener, instead of the ExampleFrameListener class. as a result it no longer requires passing a pointer to the Ogre::Camera, so that may require some changes to code using it.

Vectrex

22-05-2006 08:44:43

thank you walaber! I really appreciate the maintainance you give this. After having to learn other languages for teaching I realise how great the ogre community are. I can't believe how much others bitch and whine and never give anything away. So thanks 8)

walaber

27-05-2006 19:03:08

OK, yet another version has been updated, I:m calling it 0.08.

this fixes the exit-time crashes in the demos by adding a deInit() function to the debugger, which should be called on application exit, or whenever you stop using the debugger.

Gamey

28-05-2006 03:25:51

Thanks for the fix.

I am very new to this and was trying to get Ogre, OgreNewt, and OgreDotNet all working. The crash had been bugging me and I just dove into looking at it tonight. I had just found the double delete of m_debugnode and went to check the revision history on the file and saw your update.

Thanks again for all of the code you make available.

mysterycoder

28-05-2006 05:07:25

Should the update be used with newton 1.52 or 1.53?

I tried it with 1.52 with OgreNewt from anonymous cvs, and it said the arguments for one of the newton functions had too many parameters.

Then I tried it with 1.53 and I got compile errors in newton headers:

ISO C++ forbids declaration of `size' with no type
error: `size_t' has not been declared


any ideas?

posixninja

28-05-2006 17:22:26

Newton 1.53 is the correct version now. There were some changes in RaySceneQuery between 1.52-1.53, as for the other error, what development enviroment are you compiling it in?

mysterycoder

28-05-2006 17:45:16

I'm compiling it in Code::Blocks with MinGW

walaber

28-05-2006 19:56:56

yeah, there is an error when trying tom compile in Linux / MingW. you need to add a line to newton.h I believe that defines the size_t type... i think there is a post on the newton forums somewhere about it.

mysterycoder

28-05-2006 23:10:45

I searched the newton forums, and I can't find it, I assume I just need to add something like this:

typedef unsigned long size_t;

Any idea what type I should typedef it to?

pjcast

29-05-2006 01:48:47

The way I modified Newton.h to compile properly with OgreNewt was to modify the Newton.h header file to #include a header file that had size_t defined.. I am not on Linux atm, nor do I recal the name of the header file.

pjcast

29-05-2006 02:10:56

I just looked, and I believe it was "#include <stddef.h>" that I added to Newton.h to make it work ;)

mysterycoder

29-05-2006 04:03:47

Cool, thanks a bunch 8)

Vectrex

01-06-2006 16:57:21

I still get the 'deInit' exit bug. I got ogreNewt from addons cvs today. I assume this is the latest?

walaber

01-06-2006 17:23:52

it should be. what's the problem exactly?

Vectrex

01-06-2006 17:28:54

"Unhandled exception at 0x0046b306 in KAT debug.exe: 0xC0000005: Access violation reading location 0xfeef003e."

void Debugger::deInit()
{
if (m_debugnode)
{
m_debugnode->detachAllObjects();

- on that last line in debug

walaber

01-06-2006 19:40:17

had you pressed F3 to show the debug lines before quitting?

walaber

02-06-2006 06:24:29

big update!
Today I added a new class:

Ogre::CollisionPrimitives::TreeCollisionSceneParser().

this is a new way of generating scene geometry. it takes a start SceneNode, and parses through all of its children, making 1 big TreeCollision from all meshes attached.

this should be a big time-saver for those using dotScene, or other scene managers (oFusion?) that parse a file, and create a big tree of SceneNodes and Entities for you. in theory, you should be able to run this afterwards, and get a big TreeCollision for your entire scene.

*you can even inherit from this class, and by filling in 2 user functions, you can filter out Entities you don't want added to the collision, and also set a custom userID for each submesh of each Entity added.

I have updated demo02 to show how it works.

(updated CVS and the binary on my website.)

Vectrex

02-06-2006 17:13:47

cool, works nicely, thanks for that :D
A request (tisk, we're never happy ;) ), can it also have an 'add entity to existing tree' option, so I can for instance do the logic for objects in one spot (the oFusion onEntity callback). I understand it has a callback now but I think I'll have to process all the nodes twice, once from the oFusion callback while they are being loaded and again when I make the final collision.
Also with the callback I tried to implement it but am doing it wrong. Could you provide an example? I personally found oFusion's callbacks easy to implement if you'd like to check them out. I just inherit their callback interface and initialise it with 'this' as the callback reference so I can do the processing locally in my trackManager class.


ps Adding seperate tree collisions *seems* to work ok btw. The major problem I had was that it would place each entity in the world at 0,0,0 relative to it's own pivot point from the modeller and not from the visible mesh. The only way to align them was to set all pivots to a global 0,0,0 point in the modeller which screws lod for starters :)

walaber

02-06-2006 19:16:26

in that case, when you parse the entity (in the oFusion or dotScene callback), you can make a TreeCollision from it, and remember that the TreeCollision is in the local space of the Entity, so you just need to call setPositionOrientation() on the OgreNewt::Body and set it to the global position/orientation of the parent node for that entity.

as for the callback, you just need to inherit from TreeCollisionSceneParser, and implement the 2 functions (getID and entityFilter).

Vectrex

02-06-2006 19:32:55

ah cool, the set position worked. So is there issues with making a seperate tree for each thing compared to using your new single tree parser? Single tree faster maybe? Maybe wonky tree against tree boundries?

I did inherit from parser and implemented the callback, but my brain couldn't figure out how to get the new collision body pointer, m_coll didn't seem to work. Plus can it only be reparsed inside the constuctor?
It's almost the same as oFusion except they have an init function which you pass the callback too (in my case 'this'). Maybe move the stuff out of the constructor and into a method so it can be called easily again. Forgive me if this sounds stupid, I'm not a very good programmer :)

mysterycoder

03-06-2006 00:29:25

Cool, thanks for the new release. :D
I have a request too, maybe in CVS, or for the next release, could you add new lines at the ends of all of the header files?
All of the warnings you get with gcc with standard compiling warnings are are really annoying. I guess I could send you a patch if you want.

Also with gcc 3.45(MinGW) I get this error:

../../../trunk/dependencies/includes/STLPort/stl/_string.c: In member function `stlp_std::basic_string<_CharT, _Traits, _Alloc>& stlp_std::basic_string<_CharT, _Traits, _Alloc>::_M_append(const _CharT*, const _CharT*) [with _CharT = char, _Traits = stlp_std::char_traits<char>, _Alloc = stlp_std::allocator<char>]':
../../../trunk/dependencies/includes/STLPort/stl/_string.c:171: instantiated from `stlp_std::basic_string<_CharT, _Traits, _Alloc>& stlp_std::basic_string<_CharT, _Traits, _Alloc>::append(const _CharT*, const _CharT*) [with _CharT = char, _Traits = stlp_std::char_traits<char>, _Alloc = stlp_std::allocator<char>]'
../../../trunk/dependencies/includes/STLPort/stl/_string_operators.h:58: instantiated from `stlp_std::basic_string<_CharT, _Traits, _Alloc> stlp_std::operator+(const _CharT*, const stlp_std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = stlp_std::char_traits<char>, _Alloc = stlp_std::allocator<char>]'
../../../trunk/dependencies/includes/OGRE/OgreAnimable.h:283: instantiated from here


but, if I comment out this line(line 23 in OgreNewt_TreeColisionSerilializer.cpp)
OGRE_EXCEPT(Ogre::Exception::ERR_INVALIDPARAMS, "Unable to open file " + filename + " for writing","TreeCollisionSerializer::exportTreeCollision");

then it works fine.

persoontje

04-06-2006 08:07:26

had you pressed F3 to show the debug lines before quitting?

I have the same problem here, with the cvs version from yesterday.

I doesnt matter if I press F3 or not. Do you know how to fix this.

This is the error that I get: (its the same I think)

Unhandled exception at 0x00423d76 in newtontest.exe: 0xC0000005: Access violation reading location 0xfeef003e.

In this function

void Debugger::deInit()
{
if (m_debugnode)
{
m_debugnode->detachAllObjects();
if (m_debuglines) { delete m_debuglines; m_debuglines = NULL; }
m_debugnode->getParentSceneNode()->removeAndDestroyChild( m_debugnode->getName() );
m_debugnode = NULL;
}
}

On the line m_debugnode->detachAllObjects();

persoontje

04-06-2006 08:16:20

had you pressed F3 to show the debug lines before quitting?

I have the same problem here, with the cvs version from yesterday.

I doesnt matter if I press F3 or not. Do you know how to fix this.

....


Fixed it! If you add OgreNewt::Debugger::getSingleton().deInit(); do the destructor it works! (I'm adding this line now on the wiki)

jtpsoft

04-06-2006 19:13:56

Will it be in the new version a modified class ragdoll that stay on foot and that do have no conflict with skeleton animation??tnx

walaber

04-06-2006 20:26:22

um... no... :lol:

jtpsoft

04-06-2006 21:34:22

dohhhhhhhhhhhhhhhhhhhhh

ok sigh i think that i will spend 750 000 euro for unreal 3... :wink:

in the meantime i back to play with ragdoll monkey...sigh :(

if u change idea let me know!! :D

walaber

05-06-2006 04:20:56

well to be honest I'm not sure what you're asking. if you want realtime physics-controlled characters (as in 1 body per bone), that's not going to happen any time soon.

for a free library, I think very accurate, easy to-integrate 3D rigid body physics is enough...

jtpsoft

05-06-2006 11:41:53

nono nothing so hard...simply a ragdoll that keep on foot...but i see that i can do this alone,in a few years :lol:

anyway tnx for ogrenewt,he save my life so many time....

and tnx for ragdoll it's my drug!!! :lol: :lol:

when the next release with other figures of the monkey??

jtpsoft

05-06-2006 12:06:22

however i thing that i'll create my ragdoll more simply if i'll undertand how u did to attacch collision primitives to bone instead to SceneNode!!!

and one more thing:how can i update my convexhull parallell to the animation of mesh??is this possible?

with this two things i don't use anymore your ragdoll class but i create my personal more simply actor class....
tnx

SFAOK

05-06-2006 18:28:55

Can anyone tell me the sourceforge address where I can find the lastest CVS?

For example, for nxOgre I can go here :

http://nxogre.cvs.sourceforge.net/nxogre/nxogre/NxOgre/

The reason I ask is because I want to download the latest CVS (the http release doesn't compile due to problems with the raycast function), but I simply cannot find the settings to use in TortoiseCVS (which is the only CVS program that I can get to work with sourceforge).

Any help would be great!

walaber

05-06-2006 21:58:52

http://www.ogre3d.org/phpBB2/viewtopic.php?t=3835

replace "ogrenew" with "ogreaddons" to get all of the ogre addons, including OgreNewt.

mysterycoder

09-06-2006 05:23:01

@walaber: any ideas on my error on the second page of this thread?

walaber

09-06-2006 07:57:40

I'll look into it... it's probably something about the + operator on strings or something.

Tyger

18-06-2006 02:45:50

big update!
Today I added a new class:

Ogre::CollisionPrimitives::TreeCollisionSceneParser().

this is a new way of generating scene geometry. it takes a start SceneNode, and parses through all of its children, making 1 big TreeCollision from all meshes attached.

this should be a big time-saver for those using dotScene, or other scene managers (oFusion?) that parse a file, and create a big tree of SceneNodes and Entities for you. in theory, you should be able to run this afterwards, and get a big TreeCollision for your entire scene.

*you can even inherit from this class, and by filling in 2 user functions, you can filter out Entities you don't want added to the collision, and also set a custom userID for each submesh of each Entity added.

I have updated demo02 to show how it works.

(updated CVS and the binary on my website.)


VERY awesome class. It makes things much easier.

However, there's a slight bug with the design... Specifically, calling virtual functions from the consturctor doesn't do what you expect. The net result is inheriting that class does not do any good.

OvermindDL1

18-06-2006 04:00:59

One of the first rules of inheritence in C++. *NEVER* call a virtual function from a constructor...
Just overwrite the functions he mentioned, you may not even need to make a constructor... (havn't looked at the class to know for sure).

walaber

18-06-2006 05:23:41

oops. well, that's why they call me a hobbyist programmer :oops:

I have updated CVS and my website, you now call a function parseScene() after creating the object. that should fix the inheritence problems.

maxwave

09-07-2006 23:54:38

I download (refresh) latest version of OgreNewt. It don't compile, please fix it:

d:\programming\ogre\ogreaddons\ogrenewt\ogrenewt_main\src\ogrenewt_raycast.cpp(15) : error C2660: 'NewtonWorldRayCast' : function does not take 6 arguments
When I remove last parameter, compile is done. But when I exit from my app i get unhandled exception in "OgreNewt_Debugger.cpp:"
void Debugger::deInit()
{
if (m_debugnode)
{
m_debugnode->detachAllObjects(); <-----------------unhandled exception!!!
if (m_debuglines) { delete m_debuglines; m_debuglines = NULL; }
m_debugnode->getParentSceneNode()->removeAndDestroyChild( m_debugnode->getName() );
m_debugnode = NULL;
}
}

avee

10-07-2006 10:49:43

@ Walaber
Ahoy there!! Nice wrapper you created!! It really helped me & my team in learning how to use a physics engine.. Keep up the good work man!!

@maxwave
d:\programming\ogre\ogreaddons\ogrenewt\ogrenewt_main\src\ogrenewt_raycast.cpp(15) : error C2660: 'NewtonWorldRayCast' : function does not take 6 arguments
You should use the latest Newton Game Dynamics (v1.53) for this to compile, the interface has changed since v1.52.
When I remove last parameter, compile is done. But when I exit from my app i get unhandled exception in "OgreNewt_Debugger.cpp:"
void Debugger::deInit()
{
if (m_debugnode)
{
m_debugnode->detachAllObjects(); <-----------------unhandled exception!!!
if (m_debuglines) { delete m_debuglines; m_debuglines = NULL; }
m_debugnode->getParentSceneNode()->removeAndDestroyChild( m_debugnode->getName() );
m_debugnode = NULL;
}
}


I had this similiar problem, I think the reason is because the debugger singleton is deleted at the end of program, when the m_debugnode is no longer available (it is already deleted by Ogre). So I fixed it by manually (from my game manager class) calling OgreNewt::Debugger::getSingleton().deInit() prior at scene exit..

Hope this helps..

maxwave

10-07-2006 13:08:04

2avee

Big Thank You! :)

maxwave

11-07-2006 19:49:12

Why Ball and Socket joint don't have setCallback function?

walaber

12-07-2006 05:39:41

because the basic ball/socket joint in Newton doesn't have any callbacks.

mangoo

16-08-2006 21:31:09

hi, just found a small error

class TreeCollisionSceneParser

has no dll export


should be

class _OgreNewtExport TreeCollisionSceneParser


otherwise the compiled dll doesnt work

greets
mangoo

walaber

17-08-2006 06:02:29

thanks. I've updated CVS with the changes.

walaber

30-08-2006 17:04:15

the vc7.1 project files still had a reference to "line3d.c / .h", which is now removed. I have updated CVS, and also updated my website binary download to the latest version, with all recent fixes.

Aiursrage2k

08-12-2006 19:41:38

HORRAY it compiled.
I just had to update the code, and by update I mean delete all files reupdate. But it worked so horray.

walaber

22-12-2006 19:30:25

just a quick note to everyone that I am still around... just been VERY busy with work, and have not had any time to work on personal projects.

walaber

19-02-2007 03:07:37

UPDATE

I've updated OgreNewt to be compatible with Eihort Ogre (1.4.x). All of the demos have also been updated to use OIS, etc.

everything should compile OK with the vc8.0 project files, but the vc7.1 files are not updated.

if a vc7.1 user could make the changes and then submit a patch (or just send me the updated .vcproj files) I'd appreciate it!


I also applied the patch that Game_Ender sent me, giving Scons script files, and I also added the requested get() methods for the ContactCallback class.

:arrow: CVS and the binary on my website have been updated.

celic

19-02-2007 10:47:49

Thanks a lot Walaber!

Can you tell more about Scons script please? :)

walaber

19-02-2007 17:51:39

You'll have to ask Game_Ender, I don't actually know anything about them :roll:

trilobite

23-02-2007 04:12:54

Thanks, walaber.

No tweaks necessary in my code for OgreNewt (Yay!)

I had to do a few tweaks to account for new Ogre code and OIS but not too bad.

Game_Ender

23-02-2007 04:38:59

Can you tell more about Scons script please? :)

Scons is a python based build system designed to replace make + autoconf. The scripts I supplied build OgreNewt by using pkg-config to find Ogre along with a default (but overridable) path to the boost libraries. I also run a check to make sure that both Ogre and Boost are in working order before the build continues. Because of the use of pkg-config and assumption of g++ as the default compiler they will only work on linux.

Patches for building the demos are welcome.

EDIT: Fixed link.

OvermindDL1

23-02-2007 20:24:50

That scons.org link you posted is very much dead, it pings, but can't connect to the http server.

Game_Ender

23-02-2007 22:16:34

Thanks, I fixed the link. It was to https not http.

celic

24-02-2007 13:31:46

Thanks for the answer ;-)

OvermindDL1

27-02-2007 01:14:02

Just making sure people have a good link; it is a nice system and doesn't look good if the server doesn't respond. :)

jimmyplus

28-05-2007 09:27:09

:D Thank you!

walaber

15-06-2007 17:21:30

UPDATE

new version is now up on CVS, and the binary on my website.

changes in this version:

:arrow: fixed scale-related bug in TreeCollisionSceneParser
:arrow: optimized a few classes to only write debug data to the Log when compiled in DEBUG mode.
:arrow: added the concept of "Face Winding" to all TreeCollision classes, to allow user-control over the winding of faces as they are passed to Newton. No interface breaking, but you can optionally specify a face winding now.

all of these were implemented this morning. Everything compiles, including the demos, and I ran a few of them quickly to confirm they were working, but I may have broken something, so please report any bugs you find!

epha

04-06-2008 19:46:09

I have just built and run the demos and I am really enjoying battering the zombie with massive balls!:D

I just wanted to say thanks to Walaber for all your work. This wrapper looks amazing.

epha

aoos

15-07-2008 23:54:59

hi! im getting a linker error when i compile the OgreNewt_Main Project:


OgreNewt_BasicFrameListener.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class OIS::InputManager * __cdecl OIS::InputManager::createInputSystem(class std::multimap<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > &)" (__imp_?createInputSystem@InputManager@OIS@@SAPAV12@AAV?$multimap@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@2@@std@@@Z) referenced in function "public: __thiscall OgreNewt::BasicFrameListener::BasicFrameListener(class Ogre::RenderWindow *,class Ogre::SceneManager *,class OgreNewt::World *,int)" (??0BasicFrameListener@OgreNewt@@QAE@PAVRenderWindow@Ogre@@PAVSceneManager@3@PAVWorld@1@H@Z)
lib\Debug_DLL/OgreNewt_Main_vc71_d.dll : fatal error LNK1120: 1 unresolved externals

i'm using Newton Game Dynamics SDK 1.53 VC++ 9 and the latest version of OgreNewt that i just downloaded! can u help me please??

ProfesorX

16-07-2008 02:06:59

Add OIS.lib (OIS_d.lib in debug) to your link dependencies, ant the path to OIS.lib/OIS_d.lib

aoos

16-07-2008 11:16:57

it worked! thanks alot!

walaber

02-08-2008 23:52:28

for anyone who has a copy of beta 16 of Newton 2.0 from Julio, you can give my latest update a try:

http://walaber.com/misc/ogrenewt_for_newton2.rar

this is not complete, but for those interested in using the latest beta, this should get you a long way... be aware the ContactCallback prodecure has changed a lot... have a look at the Contact Callback demo (demo 03) for an example of how it works now.

ogrekekz

14-08-2008 11:01:23

i'm trying to get into this addon and the whole physics stuff. the wiki article is updated regularly but the main content seems to be quite old. does the text stillt work for the latest releases of ogre, ogrenewt and newton sdk?
could someone add a howto for setting up this addon (build configure..) with eclipse and mingw instead of the VC++ variant mentioned in the wiki?

Evak

11-11-2008 18:37:50

Just got Newton 2 from Julio which were migrating to in our Ogre Blitzmax framework. Figured that since were updating to shoggoth we should update the physics too. Looks like newton 2 is now at beta 17 now.

Does the last posted version for beta 16 work with 17?

almondega

14-12-2008 12:57:47

i'm getting a lot of this error:


OgreNewt_World.h(138) : error C3861: 'NewtonGetBodyCount': identifier not found


There's no .h with this func in the OgreNewt 2 and Newton 2 Beta 17

Edit: i searched for cpps who use this function, and didnt find anything, so, i commented out this function, change some samples to ogre 1.6 and worked fine so far

redhead

20-12-2008 14:43:40

Hi,
I have just migrated to Shoggoth release of Ogre. But somehow I can't get my code working.
Errors are as follows:


1>OgreNewt_Main.lib(OgreNewt_Body.obj) : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall Ogre::Vector3::Vector3(class Ogre::Vector3 const &)" (__imp_??0Vector3@Ogre@@QAE@ABV01@@Z) referenced in function "public: class Ogre::Vector3 __thiscall OgreNewt::Body::getOmega(void)const " (?getOmega@Body@OgreNewt@@QBE?AVVector3@Ogre@@XZ)
1>OgreNewt_Main.lib(OgreNewt_CollisionPrimitives.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall Ogre::Vector3::Vector3(class Ogre::Vector3 const &)" (__imp_??0Vector3@Ogre@@QAE@ABV01@@Z)
1>OgreNewt_Main.lib(OgreNewt_Tools.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall Ogre::Vector3::Vector3(class Ogre::Vector3 const &)" (__imp_??0Vector3@Ogre@@QAE@ABV01@@Z)
1>OgreNewt_Main.lib(OgreNewt_CollisionPrimitives.obj) : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall Ogre::Quaternion::Quaternion(class Ogre::Quaternion const &)" (__imp_??0Quaternion@Ogre@@QAE@ABV01@@Z) referenced in function "public: void __thiscall OgreNewt::CollisionPrimitives::TreeCollisionSceneParser::parseScene(class Ogre::SceneNode *,bool,enum OgreNewt::CollisionPrimitives::FaceWinding)" (?parseScene@TreeCollisionSceneParser@CollisionPrimitives@OgreNewt@@QAEXPAVSceneNode@Ogre@@_NW4FaceWinding@23@@Z)
1>..\bin\Debug\Console.exe : fatal error LNK1120: 2 unresolved externals


It is just these two externals lines. Not more not less. Is OgreNewt compatible with Shoggoth??
Libs are linked correctly I think, everything stayed as before, only changed directories of Ogre libs and includes to new one.

EDIT: OK, I have got rid of these errors by rebuilding OgreNewt_Main library with Shoggoth includes...
Compile is fine now, but running it produces this error (translating from czech lang):
"Procedure entry point not found
Procedure entry point
?writeContentsToFile@RenderTarget@Ogre@@QAEXABV?$basic_string
@DU?$char_traits@D@std@@V?allocator@D@2@@std@@@Z could not be found in dynamically linked OgreMain_d.dll library."

Anyone know what to do?

thanks

melven

03-03-2009 18:55:28

I've uploaded a modified version of OgreNewt for newton 20 as a branch to the ogreaddons. You can get it here:
http://svn.ogre3d.org/svnroot/ogreaddon ... t/newton20
It's still under development and has several bugs!

Additional features I implemented (for a full list, have look at the code and the comments in OgreNewt.h):
-Convexcasts
-Additional debug facilities like colored materials and convexcast- and raycastdebugging
-CollisionSerializer for all kind of collisions (thanks to Zero23)
...

Maggot

31-03-2009 14:14:28

When I tried to compile the SVN (http://svn.ogre3d.org/svnroot/ogreaddon ... t/newton20), it first gave me errors that it can't find boost includes, so I threw the boost folder from the original ogrenewt, which seems to be a bit old. After that it complains about an unknown compiler version.

So, what boost version should I use to compile?

Zero23

31-03-2009 17:17:09

Use the newest version of boost :)

Maggot

01-04-2009 14:30:18

------ Build started: Project: Demo08_RagdollExample, Configuration: Release Win32 ------
Compiling...
Ragdoll.cpp
C:\Program Files\Microsoft Visual Studio 9.0\VC\include\xlocale(342) : warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc
C:\ogrenewt\inc\boost/function/function_template.hpp(80) : error C2143: syntax error : missing ';' before 'namespace'
C:\ogrenewt\inc\boost/function/function_template.hpp(980) : error C2838: '()' : illegal qualified name in member declaration
C:\ogrenewt\inc\boost/function/function_template.hpp(80) : see reference to class template instantiation 'boost::function0<R>' being compiled
C:\ogrenewt\inc\boost/function/function_template.hpp(995) : error C2804: binary 'operator ==' has too many parameters
C:\ogrenewt\inc\boost/function/function_template.hpp(1002) : error C2804: binary 'operator !=' has too many parameters
C:\ogrenewt\inc\boost/function/function_template.hpp(1098) : error C2764: 'R' : template parameter not used or deducible in partial specialization 'boost::function<R(void)>'
C:\ogrenewt\inc\boost/function/function_template.hpp(1098) : error C3412: 'boost::function<R(void)>' : cannot specialize template in current scope
C:\ogrenewt\inc\boost/function/function_template.hpp(90) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(96) : see reference to class template instantiation 'boost::boost::detail::function::function_invoker1<FunctionPtr,R,T0>' being compiled
C:\ogrenewt\inc\boost/function/function_template.hpp(106) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(113) : see reference to class template instantiation 'boost::boost::detail::function::void_function_invoker1<FunctionPtr,R,T0>' being compiled
C:\ogrenewt\inc\boost/function/function_template.hpp(122) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(133) : see reference to class template instantiation 'boost::boost::detail::function::function_obj_invoker1<FunctionObj,R,T0>' being compiled
C:\ogrenewt\inc\boost/function/function_template.hpp(143) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(154) : see reference to class template instantiation 'boost::boost::detail::function::void_function_obj_invoker1<FunctionObj,R,T0>' being compiled
C:\ogrenewt\inc\boost/function/function_template.hpp(163) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(171) : see reference to class template instantiation 'boost::boost::detail::function::function_ref_invoker1<FunctionObj,R,T0>' being compiled
C:\ogrenewt\inc\boost/function/function_template.hpp(181) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(189) : see reference to class template instantiation 'boost::boost::detail::function::void_function_ref_invoker1<FunctionObj,R,T0>' being compiled
C:\ogrenewt\inc\boost/function/function_template.hpp(200) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(208) : see reference to class template instantiation 'boost::boost::detail::function::function_mem_invoker1<MemberPtr,R,T0>' being compiled
C:\ogrenewt\inc\boost/function/function_template.hpp(218) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(226) : see reference to class template instantiation 'boost::boost::detail::function::function_void_mem_invoker1<MemberPtr,R,T0>' being compiled
C:\ogrenewt\inc\boost/function/function_template.hpp(330) : error C2065: 'function_ptr_tag' : undeclared identifier
C:\ogrenewt\inc\boost/function/function_template.hpp(360) : error C2913: explicit specialization; 'boost::boost::detail::function::get_invoker1' is not a specialization of a class template
C:\ogrenewt\inc\boost/function/function_template.hpp(395) : error C2913: explicit specialization; 'boost::boost::detail::function::get_invoker1' is not a specialization of a class template
C:\ogrenewt\inc\boost/function/function_template.hpp(430) : error C2913: explicit specialization; 'boost::boost::detail::function::get_invoker1' is not a specialization of a class template
C:\ogrenewt\inc\boost/function/function_template.hpp(464) : error C2913: explicit specialization; 'boost::boost::detail::function::get_invoker1' is not a specialization of a class template
C:\ogrenewt\inc\boost/function/function_template.hpp(483) : error C2059: syntax error : '<L_TYPE_raw>'
C:\ogrenewt\inc\boost/function/function_template.hpp(647) : see reference to class template instantiation 'boost::boost::detail::function::basic_vtable1<R,T0>' being compiled
C:\ogrenewt\inc\boost/function/function_template.hpp(483) : error C2238: unexpected token(s) preceding ';'
C:\ogrenewt\inc\boost/function/function_template.hpp(488) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(494) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(500) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(510) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(509) : error C2535: 'bool boost::boost::detail::function::basic_vtable1<R,T0>::assign_to(F)' : member function already defined or declared
C:\ogrenewt\inc\boost/function/function_template.hpp(488) : see declaration of 'boost::boost::detail::function::basic_vtable1<R,T0>::assign_to'
C:\ogrenewt\inc\boost/function/function_template.hpp(524) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(523) : error C2535: 'bool boost::boost::detail::function::basic_vtable1<R,T0>::assign_to_a(F)' : member function already defined or declared
C:\ogrenewt\inc\boost/function/function_template.hpp(494) : see declaration of 'boost::boost::detail::function::basic_vtable1<R,T0>::assign_to_a'
C:\ogrenewt\inc\boost/function/function_template.hpp(532) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(532) : error C2535: 'bool boost::boost::detail::function::basic_vtable1<R,T0>::assign_to(F)' : member function already defined or declared
C:\ogrenewt\inc\boost/function/function_template.hpp(488) : see declaration of 'boost::boost::detail::function::basic_vtable1<R,T0>::assign_to'
C:\ogrenewt\inc\boost/function/function_template.hpp(545) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(545) : error C2535: 'bool boost::boost::detail::function::basic_vtable1<R,T0>::assign_to_a(F)' : member function already defined or declared
C:\ogrenewt\inc\boost/function/function_template.hpp(494) : see declaration of 'boost::boost::detail::function::basic_vtable1<R,T0>::assign_to_a'
C:\ogrenewt\inc\boost/function/function_template.hpp(563) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(569) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(577) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(576) : error C2535: 'void boost::boost::detail::function::basic_vtable1<R,T0>::assign_functor(FunctionObj)' : member function already defined or declared
C:\ogrenewt\inc\boost/function/function_template.hpp(563) : see declaration of 'boost::boost::detail::function::basic_vtable1<R,T0>::assign_functor'
C:\ogrenewt\inc\boost/function/function_template.hpp(583) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(582) : error C2535: 'void boost::boost::detail::function::basic_vtable1<R,T0>::assign_functor_a(FunctionObj)' : member function already defined or declared
C:\ogrenewt\inc\boost/function/function_template.hpp(569) : see declaration of 'boost::boost::detail::function::basic_vtable1<R,T0>::assign_functor_a'
C:\ogrenewt\inc\boost/function/function_template.hpp(598) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(597) : error C2535: 'bool boost::boost::detail::function::basic_vtable1<R,T0>::assign_to(F)' : member function already defined or declared
C:\ogrenewt\inc\boost/function/function_template.hpp(488) : see declaration of 'boost::boost::detail::function::basic_vtable1<R,T0>::assign_to'
C:\ogrenewt\inc\boost/function/function_template.hpp(610) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(609) : error C2535: 'bool boost::boost::detail::function::basic_vtable1<R,T0>::assign_to_a(F)' : member function already defined or declared
C:\ogrenewt\inc\boost/function/function_template.hpp(494) : see declaration of 'boost::boost::detail::function::basic_vtable1<R,T0>::assign_to_a'
C:\ogrenewt\inc\boost/function/function_template.hpp(625) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(639) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(645) : error C2146: syntax error : missing ';' before identifier 'base'
C:\ogrenewt\inc\boost/function/function_template.hpp(645) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\ogrenewt\inc\boost/function/function_template.hpp(645) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\ogrenewt\inc\boost/function/function_template.hpp(646) : error C2146: syntax error : missing ';' before identifier 'invoker'
C:\ogrenewt\inc\boost/function/function_template.hpp(646) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\ogrenewt\inc\boost/function/function_template.hpp(646) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\ogrenewt\inc\boost/function/function_template.hpp(80) : error C2143: syntax error : missing ';' before 'namespace'
C:\ogrenewt\inc\boost/function/function_template.hpp(710) : error C3083: 'type_traits': the symbol to the left of a '::' must be a type
C:\ogrenewt\inc\boost/function/function_template.hpp(80) : see reference to class template instantiation 'boost::boost::function1<R,T0>' being compiled
C:\ogrenewt\inc\boost/function/function_template.hpp(710) : error C2065: 'ice_not' : undeclared identifier
C:\ogrenewt\inc\boost/function/function_template.hpp(710) : error C2065: 'value' : undeclared identifier
C:\ogrenewt\inc\boost/function/function_template.hpp(710) : error C3083: 'type_traits': the symbol to the left of a '::' must be a type
C:\ogrenewt\inc\boost/function/function_template.hpp(710) : error C2065: 'ice_not' : undeclared identifier
C:\ogrenewt\inc\boost/function/function_template.hpp(710) : error C2065: 'value' : undeclared identifier
C:\ogrenewt\inc\boost/function/function_template.hpp(723) : error C3083: 'type_traits': the symbol to the left of a '::' must be a type
C:\ogrenewt\inc\boost/function/function_template.hpp(723) : error C2065: 'ice_not' : undeclared identifier
C:\ogrenewt\inc\boost/function/function_template.hpp(723) : error C2065: 'value' : undeclared identifier
C:\ogrenewt\inc\boost/function/function_template.hpp(723) : error C3083: 'type_traits': the symbol to the left of a '::' must be a type
C:\ogrenewt\inc\boost/function/function_template.hpp(723) : error C2065: 'ice_not' : undeclared identifier
C:\ogrenewt\inc\boost/function/function_template.hpp(723) : error C2065: 'value' : undeclared identifier
C:\ogrenewt\inc\boost/function/function_template.hpp(775) : error C3083: 'type_traits': the symbol to the left of a '::' must be a type
C:\ogrenewt\inc\boost/function/function_template.hpp(775) : error C2065: 'ice_not' : undeclared identifier
C:\ogrenewt\inc\boost/function/function_template.hpp(776) : error C2065: 'value' : undeclared identifier
C:\ogrenewt\inc\boost/function/function_template.hpp(980) : error C2838: '()' : illegal qualified name in member declaration
C:\ogrenewt\inc\boost/function/function_template.hpp(995) : error C2804: binary 'operator ==' has too many parameters
C:\ogrenewt\inc\boost/function/function_template.hpp(1002) : error C2804: binary 'operator !=' has too many parameters
C:\ogrenewt\inc\boost/function/function_template.hpp(1032) : error C3083: 'type_traits': the symbol to the left of a '::' must be a type
C:\ogrenewt\inc\boost/function/function_template.hpp(1098) : see reference to class template instantiation 'boost::function<R(T0)>' being compiled
C:\ogrenewt\inc\boost/function/function_template.hpp(1032) : error C2065: 'ice_not' : undeclared identifier
C:\ogrenewt\inc\boost/function/function_template.hpp(1032) : error C2065: 'value' : undeclared identifier
C:\ogrenewt\inc\boost/function/function_template.hpp(1032) : error C3083: 'type_traits': the symbol to the left of a '::' must be a type
C:\ogrenewt\inc\boost/function/function_template.hpp(1032) : error C2065: 'ice_not' : undeclared identifier
C:\ogrenewt\inc\boost/function/function_template.hpp(1032) : error C2065: 'value' : undeclared identifier
C:\ogrenewt\inc\boost/function/function_template.hpp(1044) : error C3083: 'type_traits': the symbol to the left of a '::' must be a type
C:\ogrenewt\inc\boost/function/function_template.hpp(1044) : error C2065: 'ice_not' : undeclared identifier
C:\ogrenewt\inc\boost/function/function_template.hpp(1044) : error C2065: 'value' : undeclared identifier
C:\ogrenewt\inc\boost/function/function_template.hpp(1044) : error C3083: 'type_traits': the symbol to the left of a '::' must be a type
C:\ogrenewt\inc\boost/function/function_template.hpp(1044) : error C2065: 'ice_not' : undeclared identifier
C:\ogrenewt\inc\boost/function/function_template.hpp(1044) : error C2065: 'value' : undeclared identifier
C:\ogrenewt\inc\boost/function/function_template.hpp(1073) : error C3083: 'type_traits': the symbol to the left of a '::' must be a type
C:\ogrenewt\inc\boost/function/function_template.hpp(1073) : error C2065: 'ice_not' : undeclared identifier
C:\ogrenewt\inc\boost/function/function_template.hpp(1074) : error C2065: 'value' : undeclared identifier
C:\ogrenewt\inc\boost/function/function_template.hpp(1098) : error C2764: 'R' : template parameter not used or deducible in partial specialization 'boost::function<R(T0)>'
C:\ogrenewt\inc\boost/function/function_template.hpp(1098) : error C2764: 'T0' : template parameter not used or deducible in partial specialization 'boost::function<R(T0)>'
C:\ogrenewt\inc\boost/function/function_template.hpp(1098) : error C3412: 'boost::function<R(T0)>' : cannot specialize template in current scope
C:\ogrenewt\inc\boost/function/function_template.hpp(90) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(96) : see reference to class template instantiation 'boost::boost::boost::detail::function::function_invoker2<FunctionPtr,R,T0,T1>' being compiled
C:\ogrenewt\inc\boost/function/function_template.hpp(106) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(113) : see reference to class template instantiation 'boost::boost::boost::detail::function::void_function_invoker2<FunctionPtr,R,T0,T1>' being compiled
C:\ogrenewt\inc\boost/function/function_template.hpp(122) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(133) : see reference to class template instantiation 'boost::boost::boost::detail::function::function_obj_invoker2<FunctionObj,R,T0,T1>' being compiled
C:\ogrenewt\inc\boost/function/function_template.hpp(143) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(154) : see reference to class template instantiation 'boost::boost::boost::detail::function::void_function_obj_invoker2<FunctionObj,R,T0,T1>' being compiled
C:\ogrenewt\inc\boost/function/function_template.hpp(163) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(171) : see reference to class template instantiation 'boost::boost::boost::detail::function::function_ref_invoker2<FunctionObj,R,T0,T1>' being compiled
C:\ogrenewt\inc\boost/function/function_template.hpp(181) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(189) : see reference to class template instantiation 'boost::boost::boost::detail::function::void_function_ref_invoker2<FunctionObj,R,T0,T1>' being compiled
C:\ogrenewt\inc\boost/function/function_template.hpp(200) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(208) : see reference to class template instantiation 'boost::boost::boost::detail::function::function_mem_invoker2<MemberPtr,R,T0,T1>' being compiled
C:\ogrenewt\inc\boost/function/function_template.hpp(218) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(226) : see reference to class template instantiation 'boost::boost::boost::detail::function::function_void_mem_invoker2<MemberPtr,R,T0,T1>' being compiled
C:\ogrenewt\inc\boost/function/function_template.hpp(330) : error C2065: 'function_ptr_tag' : undeclared identifier
C:\ogrenewt\inc\boost/function/function_template.hpp(360) : error C2913: explicit specialization; 'boost::boost::boost::detail::function::get_invoker2' is not a specialization of a class template
C:\ogrenewt\inc\boost/function/function_template.hpp(395) : error C2913: explicit specialization; 'boost::boost::boost::detail::function::get_invoker2' is not a specialization of a class template
C:\ogrenewt\inc\boost/function/function_template.hpp(430) : error C2913: explicit specialization; 'boost::boost::boost::detail::function::get_invoker2' is not a specialization of a class template
C:\ogrenewt\inc\boost/function/function_template.hpp(464) : error C2913: explicit specialization; 'boost::boost::boost::detail::function::get_invoker2' is not a specialization of a class template
C:\ogrenewt\inc\boost/function/function_template.hpp(483) : error C2059: syntax error : '<L_TYPE_raw>'
C:\ogrenewt\inc\boost/function/function_template.hpp(647) : see reference to class template instantiation 'boost::boost::boost::detail::function::basic_vtable2<R,T0,T1>' being compiled
C:\ogrenewt\inc\boost/function/function_template.hpp(483) : error C2238: unexpected token(s) preceding ';'
C:\ogrenewt\inc\boost/function/function_template.hpp(488) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(494) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(500) : error C2061: syntax error : identifier 'function_buffer'
C:\ogrenewt\inc\boost/function/function_template.hpp(500) : fatal error C1003: error count exceeds 100; stopping compilation
OgreNewtonFrameListener.cpp
C:\Program Files\Microsoft Visual Studio 9.0\VC\include\xlocale(342) : warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc
Build log was saved at "file://c:\ogrenewt\demos\bin\Demo08_RagdollExample\Demo08_RagdollExample.dir\Release\BuildLog.htm"
Demo08_RagdollExample - 106 error(s), 2 warning(s)


It's version 1.38.0, why these errors? Would be fun to get even 1 physics wrapper working with ogre :x

Zero23

01-04-2009 17:38:38

Hmm you compile there the demo! And I dont know if melven get them all to work!
Do you can compile OgreNewt self?

melven

01-04-2009 21:27:08

Maggot, if you want a stable version, use newton 1.53 and the official OgreNewt. I never tested the demos in Windows (I'm using Linux), if you have created Visual-Studio projects from the cmake-files - they're sometimes not working...

Compiling the library (not the demos) should work with the VS project files though.

And really have a look at the comments in the OgreNewt.h file, there you find things like "multithreading doesn't work" ;-)

Maggot

02-04-2009 11:39:07

Oh ok, yeah I got ogrenewt to compile, thanks for pointing that out

toum

26-04-2009 16:21:53

Maggot, if you want a stable version, use newton 1.53 and the official OgreNewt. I never tested the demos in Windows (I'm using Linux), if you have created Visual-Studio projects from the cmake-files - they're sometimes not working...

Compiling the library (not the demos) should work with the VS project files though.

And really have a look at the comments in the OgreNewt.h file, there you find things like "multithreading doesn't work" ;-)


Where is the official ogrenewt?

thanks

Zero23

26-04-2009 20:44:49

You find the official 1.53 version in the svn trunk of ogreaddons.

Virginie

19-05-2009 10:51:38

I'm angry.

You have modified OgreNewt for Newton 2.0 without say anything and without to be here to help with the modifications.
I need OgreNewt to work and the importants modifications stop me in my work!

Excuse me I was unnerve but when you do some modification you should tell us to your changement and how to adapt us.

melven

19-05-2009 14:31:44

This post is related to the OgreNewt version found here: http://svn.ogre3d.org/svnroot/ogreaddon ... t/newton20
Hey I'm working at an "unofficial" version that's only committed as a branch and it's still under development...
If you need it for work, I'm not shure if you should already use newton 2.0 beta and this version of OgreNewt...
There are still bugs in newton 2.0 beta (Julio knows them and wanted to correct them in the next release) and for a productive environment I wouldn't say that my version of OgreNewt is tested sufficiently!

About the latest changes:

1. I added shared pointers (boost::shared_ptr) for collisions in order to prevent pointer errors (there were no problems with the newton-collisions before, but
when using one collisions for several bodies (each of them saves a pointer to the collision), it is difficult to decide when to delete the OgreNewt::Collision).
If you don't want to use shared pointers, you can disable them with a preprocessor directive.
Modifications needed:
- Remove all "delete collision"
- Create a collision like this: "OgreNewt::CollisionPtr col(new OgreNewt::CollisionPrimitives::Cylinder(m_World, 2.5, 5))"
- In order to do a secure cast from a CollisionPtr to a ConvexCollisionPtr use: "boost::dynamic_pointer_cast<OgreNewt::ConvexCollision>(col)"
- For other things that are possible with shared_ptrs have a look at the boost::shared_ptr documentation (e.g. "use col.reset()" instead of "col=NULL;")

2. I replaced the void* with an Ogre::Any for userdata-pointers. Again: if you want the void* back, you can archieve it with a preprocessor directive...
Modifications needed:
- Set the userdata: "body->setUserData( Ogre::Any( MyClassObjectPointer ))"
- Retrieve userdata: "MyClass* MyClassObjectPointer = Ogre::any_cast<MyClass*>(body->getUserData())"

deadvirus

24-06-2009 23:17:08

melven why isn't the BasicFrameListener included in the project on the last OgreNewt? I've added it and it game me some errors, that were easily fixed by adding #include <OgreStringConverter.h> #include <OgreLogManager.h>. Can you add it in a next update?

Sincerely,
DeadVirus

deadvirus

10-07-2009 22:31:38

I think there's a problem with the reverse face winding of treecollisions. And I think the problem is in lines 377 378 379 of the OgreNewt_CollisionPrimitives.cpp file:

rev_poly_verts[0] = poly_verts[0];
rev_poly_verts[0] = poly_verts[2];
rev_poly_verts[0] = poly_verts[1];


it should be:

rev_poly_verts[0] = poly_verts[0];
rev_poly_verts[1] = poly_verts[2];
rev_poly_verts[2] = poly_verts[1];

kallaspriit

11-07-2009 08:46:30

You are probably right, that sure looks wrong :P

Melvin, are you still updating your 2.0 wrapper, I have checked the SVN and there doesn't seem to be anything new. For example this bug, the one I pointed out about adding global force and maybe multithreading support? Would be nice to get total NGD 2 coverage to everyone using the great Ogre :P

Zero23

28-07-2009 22:03:03

Melven dont have time at the moment.
Thank you for the Bug and the fix :D

Here is an Patch that you can use OgreNewt with the newest Version of Newton 2.04.
I hope Melven will upload this to the svn, I will ask him.

Index: inc/OgreNewt_Collision.h
===================================================================
--- inc/OgreNewt_Collision.h (revision 2721)
+++ inc/OgreNewt_Collision.h (working copy)
@@ -69,13 +69,6 @@
*/
const World* getWorld() const {return m_world;}

- //! set a user ID for collision callback identification
- /*!
- you can set different IDs for each piece in a compound collision object, and then use these IDs in a collision callback to
- determine which part is currently colliding.
- */
- void setUserID( unsigned id ) const { NewtonCollisionSetUserID( m_col, id); }
-
//! get user ID, for collision callback identification
unsigned getUserID() const { return NewtonCollisionGetUserID( m_col ); }

@@ -132,7 +125,6 @@
void setAsTriggerVolume(bool trigger) { NewtonCollisionSetAsTriggerVolume(m_col, (int)trigger); }
};

-
#ifdef OGRENEWT_NO_COLLISION_SHAREDPTR
typedef Collision* CollisionPtr;
typedef ConvexCollision* ConvexCollisionPtr;
Index: inc/OgreNewt_CollisionPrimitives.h
===================================================================
--- inc/OgreNewt_CollisionPrimitives.h (revision 2721)
+++ inc/OgreNewt_CollisionPrimitives.h (working copy)
@@ -56,9 +56,10 @@
\param size vector representing width, height, depth
\param orient orientation offset of the primitive
\param pos position offset of the primitive
+ \param shapeID ID for this Collision
*/
Box( const World* world, const Ogre::Vector3& size,
- const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO );
+ const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, const int shapeID = 1 );

//! destructor
~Box() {}
@@ -82,9 +83,10 @@
\param size vector representing radius for all 3 axis
\param orient orientation offset of the primitive
\param pos position offset of the primitive
+ \param shapeID ID for this Collision
*/
Ellipsoid(const World* world, const Ogre::Vector3& size,
- const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO );
+ const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, const int shapeID = 1 );

//! destructor
~Ellipsoid() {}
@@ -109,9 +111,10 @@
\param height height of the cylinder (X axis)
\param orient orientation offset of the primitive
\param pos position offset of the primitive
+ \param shapeID ID for this Collision
*/
Cylinder( const World* world, Ogre::Real radius, Ogre::Real height,
- const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO );
+ const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, const int shapeID = 1 );

//! destructor
~Cylinder() {}
@@ -136,9 +139,10 @@
\param height height of the capsule (X axis)
\param orient orientation offset of the primitive
\param pos position offset of the primitive
+ \param shapeID ID for this Collision
*/
Capsule( const World* world, Ogre::Real radius, Ogre::Real height,
- const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO );
+ const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, const int shapeID = 1 );

//! destructor
~Capsule() {}
@@ -163,9 +167,10 @@
\param height height of the cone (X axis)
\param orient orientation offset of the primitive
\param pos position offset of the primitive
+ \param shapeID ID for this Collision
*/
Cone( const World* world, Ogre::Real radius, Ogre::Real height,
- const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO );
+ const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, const int shapeID = 1 );

//! destructor
~Cone() {}
@@ -190,9 +195,10 @@
\param height height of the chamfer cylinder (X axis)
\param orient orientation offset of the primitive
\param pos position offset of the primitive
+ \param shapeID ID for this Collision
*/
ChamferCylinder( const World* world, Ogre::Real radius, Ogre::Real height,
- const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO );
+ const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, const int shapeID = 1 );

//! destructor
~ChamferCylinder() {}
@@ -222,9 +228,10 @@
\param pos position offset of the primitive
\parem tolerance a tolerance passed to newton
\param forceScale if set to something else then (0,0,0), the value of this argument will be used as scale instead of the parent-node's scale
+ \param shapeID ID for this Collision
*/
ConvexHull( const World* world, Ogre::Entity* ent,
- const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, Ogre::Real tolerance = 0.001f , const Ogre::Vector3& forceScale = Ogre::Vector3::ZERO);
+ const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, Ogre::Real tolerance = 0.001f , const Ogre::Vector3& forceScale = Ogre::Vector3::ZERO, const int shapeID = 1 );

/*!
Overloaded constructor. pass a pointer to an array of vertices and the hull will be made from that.
@@ -234,9 +241,10 @@
\param orient orientation offset of the primitive
\param pos position offset of the primitive
\param tolerance a tolerance passed to newton
+ \param shapeID ID for this Collision
*/
ConvexHull( const World* world, const Ogre::Vector3* verts, int vertcount,
- const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, Ogre::Real tolerance = 0.001f );
+ const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, Ogre::Real tolerance = 0.001f, const int shapeID = 1 );

//! destructor
~ConvexHull() {}
@@ -266,8 +274,9 @@
\param world pointer to the OgreNewt::World
\param ent pointer to an Ogre::Entitiy, if it is attached to a node, the scale of the parent node is used
\param optimize bool whether you want to optimize the collision or not.
+ \param shapeID ID for this Collision
*/
- TreeCollision( const World* world, Ogre::Entity* ent, bool optimize, FaceWinding fw = FW_DEFAULT );
+ TreeCollision( const World* world, Ogre::Entity* ent, bool optimize, FaceWinding fw = FW_DEFAULT, const int shapeID = 1 );

//! constructor
/*!
@@ -279,8 +288,9 @@
\param vertices pointer to array of vertices (positions only).
\param indices pointer to array of indices.
\param optimize bool whether you want to optimize the collision or not.
+ \param shapeID ID for this Collision
*/
- TreeCollision( const World* world, int numVertices, int numIndices, const float *vertices, const int *indices, bool optimize, FaceWinding fw = FW_DEFAULT);
+ TreeCollision( const World* world, int numVertices, int numIndices, const float *vertices, const int *indices, bool optimize, FaceWinding fw = FW_DEFAULT, const int shapeID = 1);

//! constructor
/*!
@@ -291,14 +301,18 @@
\param vertices pointer to array of Ogre::Vector3 vertices (positions only)
\param indexData pointer to Ogre::IndexData for the mesh
\param optimize bool whether you want to optimize the collision or not.
+ \param shapeID ID for this Collision
*/
- TreeCollision( const World* world, int numVertices, Ogre::Vector3* vertices, Ogre::IndexData* indexData, bool optimize, FaceWinding fw = FW_DEFAULT);
+ TreeCollision( const World* world, int numVertices, Ogre::Vector3* vertices, Ogre::IndexData* indexData, bool optimize, FaceWinding fw = FW_DEFAULT, const int shapeID = 1);

//! destructor
virtual ~TreeCollision() {}

//! start a tree collision creation
- void start();
+ /*!
+ \param shapeID ID for this Collision
+ */
+ void start(const int shapeID = 1);

//! add a poly to the tree collision
/*!
@@ -421,9 +435,10 @@
\param orient orientation offset of the primitive
\param pos position offset of the primitive
\param tolerance a tolerance passed to newton
+ \param shapeID ID for this Collision
*/
Pyramid( const World* world, const Ogre::Vector3& size,
- const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, Ogre::Real tolerance = 0.001f );
+ const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, Ogre::Real tolerance = 0.001f, const int shapeID = 1 );

//! destructor
~Pyramid() {}
Index: inc/OgreNewt_CollisionSerializer.h
===================================================================
--- inc/OgreNewt_CollisionSerializer.h (revision 2721)
+++ inc/OgreNewt_CollisionSerializer.h (working copy)
@@ -42,7 +42,7 @@
Deserialize the Collision from a DataStream.
this will create a NEW Collision object
*/
- OgreNewt::CollisionPtr importCollision(Ogre::DataStreamPtr& stream, OgreNewt::World* world);
+ OgreNewt::CollisionPtr importCollision(Ogre::DataStreamPtr& stream, const OgreNewt::World* world);

private:
/*!
Index: inc/OgreNewt_RayCast.h
===================================================================
--- inc/OgreNewt_RayCast.h (revision 2721)
+++ inc/OgreNewt_RayCast.h (working copy)
@@ -144,7 +144,7 @@
int getHitCount() const;

//! retrieve the raycast info for a specific hit.
- BasicRaycastInfo getInfoAt( int hitnum ) const;
+ BasicRaycastInfo getInfoAt( size_t hitnum ) const;

//! get the closest body hit by the ray.
BasicRaycastInfo getFirstHit() const;
Index: src/OgreNewt_CollisionPrimitives.cpp
===================================================================
--- src/OgreNewt_CollisionPrimitives.cpp (revision 2721)
+++ src/OgreNewt_CollisionPrimitives.cpp (working copy)
@@ -30,13 +30,13 @@
Box::Box(const World* world) : ConvexCollision( world )
{}

- Box::Box( const World* world, const Ogre::Vector3& size, const Ogre::Quaternion& orient, const Ogre::Vector3& pos ) : ConvexCollision( world )
+ Box::Box( const World* world, const Ogre::Vector3& size, const Ogre::Quaternion& orient, const Ogre::Vector3& pos, const int shapeID ) : ConvexCollision( world )
{
float matrix[16];

OgreNewt::Converters::QuatPosToMatrix( orient, pos, &matrix[0] );

- m_col = NewtonCreateBox( m_world->getNewtonWorld(), (float)size.x, (float)size.y, (float)size.z, &matrix[0] );
+ m_col = NewtonCreateBox( m_world->getNewtonWorld(), (float)size.x, (float)size.y, (float)size.z, shapeID, &matrix[0] );
}


@@ -45,13 +45,13 @@
Ellipsoid::Ellipsoid(const World* world) : ConvexCollision( world )
{}

- Ellipsoid::Ellipsoid( const World* world, const Ogre::Vector3& size, const Ogre::Quaternion& orient, const Ogre::Vector3& pos ) : ConvexCollision( world )
+ Ellipsoid::Ellipsoid( const World* world, const Ogre::Vector3& size, const Ogre::Quaternion& orient, const Ogre::Vector3& pos, const int shapeID ) : ConvexCollision( world )
{
float matrix[16];

OgreNewt::Converters::QuatPosToMatrix( orient, pos, &matrix[0] );

- m_col = NewtonCreateSphere( m_world->getNewtonWorld(), (float)size.x, (float)size.y, (float)size.z, &matrix[0] );
+ m_col = NewtonCreateSphere( m_world->getNewtonWorld(), (float)size.x, (float)size.y, (float)size.z, shapeID, &matrix[0] );
}


@@ -60,13 +60,13 @@
{}

Cylinder::Cylinder( const World* world, Ogre::Real radius, Ogre::Real height,
- const Ogre::Quaternion& orient, const Ogre::Vector3& pos ) : ConvexCollision( world )
+ const Ogre::Quaternion& orient, const Ogre::Vector3& pos, const int shapeID ) : ConvexCollision( world )
{
float matrix[16];

OgreNewt::Converters::QuatPosToMatrix( orient, pos, &matrix[0] );

- m_col = NewtonCreateCylinder( m_world->getNewtonWorld(), (float)radius, (float)height, &matrix[0] );
+ m_col = NewtonCreateCylinder( m_world->getNewtonWorld(), (float)radius, (float)height, shapeID, &matrix[0] );
}


@@ -75,13 +75,13 @@
{}

Capsule::Capsule( const World* world, Ogre::Real radius, Ogre::Real height,
- const Ogre::Quaternion& orient, const Ogre::Vector3& pos ) : ConvexCollision( world )
+ const Ogre::Quaternion& orient, const Ogre::Vector3& pos, const int shapeID ) : ConvexCollision( world )
{
float matrix[16];

OgreNewt::Converters::QuatPosToMatrix( orient, pos, &matrix[0] );

- m_col = NewtonCreateCapsule( m_world->getNewtonWorld(), (float)radius, (float)height, &matrix[0] );
+ m_col = NewtonCreateCapsule( m_world->getNewtonWorld(), (float)radius, (float)height, shapeID, &matrix[0] );
}


@@ -90,13 +90,13 @@
{}

Cone::Cone( const World* world, Ogre::Real radius, Ogre::Real height,
- const Ogre::Quaternion& orient, const Ogre::Vector3& pos ) : ConvexCollision( world )
+ const Ogre::Quaternion& orient, const Ogre::Vector3& pos, const int shapeID ) : ConvexCollision( world )
{
float matrix[16];

OgreNewt::Converters::QuatPosToMatrix( orient, pos, &matrix[0] );

- m_col = NewtonCreateCone( m_world->getNewtonWorld(), (float)radius, (float)height, &matrix[0] );
+ m_col = NewtonCreateCone( m_world->getNewtonWorld(), (float)radius, (float)height, shapeID, &matrix[0] );
}

// OgreNewt::CollisionPrimitives::ChamferCylinder
@@ -104,13 +104,13 @@
{}

ChamferCylinder::ChamferCylinder( const World* world, Ogre::Real radius, Ogre::Real height,
- const Ogre::Quaternion& orient, const Ogre::Vector3& pos ) : ConvexCollision( world )
+ const Ogre::Quaternion& orient, const Ogre::Vector3& pos, const int shapeID ) : ConvexCollision( world )
{
float matrix[16];

OgreNewt::Converters::QuatPosToMatrix( orient, pos, &matrix[0] );

- m_col = NewtonCreateChamferCylinder( m_world->getNewtonWorld(), (float)radius, (float)height, &matrix[0] );
+ m_col = NewtonCreateChamferCylinder( m_world->getNewtonWorld(), (float)radius, (float)height, shapeID, &matrix[0] );
}


@@ -119,7 +119,7 @@
ConvexHull::ConvexHull(const World* world) : ConvexCollision( world )
{}

- ConvexHull::ConvexHull( const World* world, Ogre::Entity* obj, const Ogre::Quaternion& orient, const Ogre::Vector3& pos, Ogre::Real tolerance, const Ogre::Vector3& forceScale ) : ConvexCollision( world )
+ ConvexHull::ConvexHull( const World* world, Ogre::Entity* obj, const Ogre::Quaternion& orient, const Ogre::Vector3& pos, Ogre::Real tolerance, const Ogre::Vector3& forceScale, const int shapeID ) : ConvexCollision( world )
{
Ogre::Vector3 scale(1.0,1.0,1.0);

@@ -235,7 +235,7 @@
OgreNewt::Converters::QuatPosToMatrix( orient, pos, &matrix[0] );

//okay, let's try making the ConvexHull!
- m_col = NewtonCreateConvexHull( m_world->getNewtonWorld(), (int)total_verts, (float*)&vertices[0].x, sizeof(Ogre::Vector3), tolerance, &matrix[0] );
+ m_col = NewtonCreateConvexHull( m_world->getNewtonWorld(), (int)total_verts, (float*)&vertices[0].x, sizeof(Ogre::Vector3), tolerance, shapeID, &matrix[0] );

delete []vertices;

@@ -243,13 +243,13 @@


// OgreNewt::CollisionPrimitives::ConvexHull
- ConvexHull::ConvexHull( const World* world, const Ogre::Vector3* verts, int vertcount, const Ogre::Quaternion& orient, const Ogre::Vector3& pos, Ogre::Real tolerance ) : ConvexCollision( world )
+ ConvexHull::ConvexHull( const World* world, const Ogre::Vector3* verts, int vertcount, const Ogre::Quaternion& orient, const Ogre::Vector3& pos, Ogre::Real tolerance, const int shapeID ) : ConvexCollision( world )
{
float matrix[16];
OgreNewt::Converters::QuatPosToMatrix( orient, pos, &matrix[0] );

//make the collision primitive.
- m_col = NewtonCreateConvexHull( m_world->getNewtonWorld(), vertcount, (float*)&verts[0].x, sizeof(Ogre::Vector3), tolerance, &matrix[0]);
+ m_col = NewtonCreateConvexHull( m_world->getNewtonWorld(), vertcount, (float*)&verts[0].x, sizeof(Ogre::Vector3), tolerance, shapeID, &matrix[0]);
}


@@ -260,11 +260,11 @@
}


- TreeCollision::TreeCollision( const World* world, Ogre::Entity* obj, bool optimize, FaceWinding fw ) : Collision( world )
+ TreeCollision::TreeCollision( const World* world, Ogre::Entity* obj, bool optimize, FaceWinding fw, const int shapeID ) : Collision( world )
{
Ogre::Vector3 scale;

- start();
+ start(shapeID);

Ogre::MeshPtr mesh = obj->getMesh();

@@ -394,9 +394,9 @@
}


- TreeCollision::TreeCollision(const OgreNewt::World *world, int numVertices, int numIndices, const float *vertices, const int *indices, bool optimize, FaceWinding fw) : OgreNewt::Collision( world )
+ TreeCollision::TreeCollision(const OgreNewt::World *world, int numVertices, int numIndices, const float *vertices, const int *indices, bool optimize, FaceWinding fw, const int shapeID) : OgreNewt::Collision( world )
{
- start();
+ start(shapeID);

int numPolys = numIndices / 3;

@@ -435,9 +435,9 @@
}


- TreeCollision::TreeCollision( const World* world, int numVertices, Ogre::Vector3* vertices, Ogre::IndexData* indexData, bool optimize, FaceWinding fw) : Collision( world )
+ TreeCollision::TreeCollision( const World* world, int numVertices, Ogre::Vector3* vertices, Ogre::IndexData* indexData, bool optimize, FaceWinding fw, const int shapeID ) : Collision( world )
{
- start();
+ start(shapeID);

unsigned int numPolys = indexData->indexCount / 3;
Ogre::HardwareIndexBufferSharedPtr hwIndexBuffer=indexData->indexBuffer;
@@ -499,9 +499,9 @@
}


- void TreeCollision::start()
+ void TreeCollision::start(const int shapeID)
{
- m_col = NewtonCreateTreeCollision( m_world->getNewtonWorld() );
+ m_col = NewtonCreateTreeCollision( m_world->getNewtonWorld(), shapeID );
NewtonTreeCollisionBeginBuild( m_col );
}

@@ -694,8 +694,8 @@
{
Ogre::Vector3 rev_poly_verts[3];
rev_poly_verts[0] = poly_verts[0];
- rev_poly_verts[0] = poly_verts[2];
- rev_poly_verts[0] = poly_verts[1];
+ rev_poly_verts[1] = poly_verts[2];
+ rev_poly_verts[2] = poly_verts[1];

addPoly( rev_poly_verts, cs );
}
@@ -744,7 +744,7 @@
Pyramid::Pyramid(const World* world) : ConvexCollision( world )
{}

- Pyramid::Pyramid( const World* world, const Ogre::Vector3& size, const Ogre::Quaternion& orient, const Ogre::Vector3& pos, Ogre::Real tolerance ) : ConvexCollision( world )
+ Pyramid::Pyramid( const World* world, const Ogre::Vector3& size, const Ogre::Quaternion& orient, const Ogre::Vector3& pos, Ogre::Real tolerance, const int shapeID ) : ConvexCollision( world )
{
float matrix[16];

@@ -773,7 +773,7 @@
vertices [idx++] = 0.0f;

//make the collision primitive.
- m_col = NewtonCreateConvexHull( m_world->getNewtonWorld(), 5, vertices, sizeof(float)*3, tolerance, &matrix[0]);
+ m_col = NewtonCreateConvexHull( m_world->getNewtonWorld(), 5, vertices, sizeof(float)*3, tolerance, shapeID, &matrix[0]);


delete []vertices;
Index: src/OgreNewt_CollisionSerializer.cpp
===================================================================
--- src/OgreNewt_CollisionSerializer.cpp (revision 2721)
+++ src/OgreNewt_CollisionSerializer.cpp (working copy)
@@ -33,7 +33,7 @@
}


- CollisionPtr CollisionSerializer::importCollision(Ogre::DataStreamPtr& stream, OgreNewt::World* world)
+ CollisionPtr CollisionSerializer::importCollision(Ogre::DataStreamPtr& stream, const OgreNewt::World* world)
{
CollisionPtr dest;

Index: src/OgreNewt_PlayerController.cpp
===================================================================
--- src/OgreNewt_PlayerController.cpp (revision 2721)
+++ src/OgreNewt_PlayerController.cpp (working copy)
@@ -245,10 +245,10 @@
{
// find first contact with each body and cache it
resize(0);
- for(int i = 0; i < size(); i++)
+ for(size_type i = 0; i < size(); i++)
{
Body* body = cast.getInfoAt(i).mBody;
- int j;
+ size_type j;
for( j = 0; j < size(); j++ )
{
if( body == at(j) )
Index: src/OgreNewt_RayCast.cpp
===================================================================
--- src/OgreNewt_RayCast.cpp (revision 2721)
+++ src/OgreNewt_RayCast.cpp (working copy)
@@ -144,7 +144,7 @@
}


- BasicRaycast::BasicRaycastInfo BasicRaycast::getInfoAt( int hitnum ) const
+ BasicRaycast::BasicRaycastInfo BasicRaycast::getInfoAt( size_t hitnum ) const
{
BasicRaycast::BasicRaycastInfo ret;

deadvirus

31-07-2009 15:41:09

Melven dont have time at the moment.
Thank you for the Bug and the fix :D

Here is an Patch that you can use OgreNewt with the newest Version of Newton 2.04.
I hope Melven will upload this to the svn, I will ask him.

Index: inc/OgreNewt_Collision.h
===================================================================
--- inc/OgreNewt_Collision.h (revision 2721)
+++ inc/OgreNewt_Collision.h (working copy)
@@ -69,13 +69,6 @@
*/
const World* getWorld() const {return m_world;}

- //! set a user ID for collision callback identification
- /*!
- you can set different IDs for each piece in a compound collision object, and then use these IDs in a collision callback to
- determine which part is currently colliding.
- */
- void setUserID( unsigned id ) const { NewtonCollisionSetUserID( m_col, id); }
-
//! get user ID, for collision callback identification
unsigned getUserID() const { return NewtonCollisionGetUserID( m_col ); }

@@ -132,7 +125,6 @@
void setAsTriggerVolume(bool trigger) { NewtonCollisionSetAsTriggerVolume(m_col, (int)trigger); }
};

-
#ifdef OGRENEWT_NO_COLLISION_SHAREDPTR
typedef Collision* CollisionPtr;
typedef ConvexCollision* ConvexCollisionPtr;
Index: inc/OgreNewt_CollisionPrimitives.h
===================================================================
--- inc/OgreNewt_CollisionPrimitives.h (revision 2721)
+++ inc/OgreNewt_CollisionPrimitives.h (working copy)
@@ -56,9 +56,10 @@
\param size vector representing width, height, depth
\param orient orientation offset of the primitive
\param pos position offset of the primitive
+ \param shapeID ID for this Collision
*/
Box( const World* world, const Ogre::Vector3& size,
- const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO );
+ const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, const int shapeID = 1 );

//! destructor
~Box() {}
@@ -82,9 +83,10 @@
\param size vector representing radius for all 3 axis
\param orient orientation offset of the primitive
\param pos position offset of the primitive
+ \param shapeID ID for this Collision
*/
Ellipsoid(const World* world, const Ogre::Vector3& size,
- const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO );
+ const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, const int shapeID = 1 );

//! destructor
~Ellipsoid() {}
@@ -109,9 +111,10 @@
\param height height of the cylinder (X axis)
\param orient orientation offset of the primitive
\param pos position offset of the primitive
+ \param shapeID ID for this Collision
*/
Cylinder( const World* world, Ogre::Real radius, Ogre::Real height,
- const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO );
+ const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, const int shapeID = 1 );

//! destructor
~Cylinder() {}
@@ -136,9 +139,10 @@
\param height height of the capsule (X axis)
\param orient orientation offset of the primitive
\param pos position offset of the primitive
+ \param shapeID ID for this Collision
*/
Capsule( const World* world, Ogre::Real radius, Ogre::Real height,
- const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO );
+ const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, const int shapeID = 1 );

//! destructor
~Capsule() {}
@@ -163,9 +167,10 @@
\param height height of the cone (X axis)
\param orient orientation offset of the primitive
\param pos position offset of the primitive
+ \param shapeID ID for this Collision
*/
Cone( const World* world, Ogre::Real radius, Ogre::Real height,
- const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO );
+ const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, const int shapeID = 1 );

//! destructor
~Cone() {}
@@ -190,9 +195,10 @@
\param height height of the chamfer cylinder (X axis)
\param orient orientation offset of the primitive
\param pos position offset of the primitive
+ \param shapeID ID for this Collision
*/
ChamferCylinder( const World* world, Ogre::Real radius, Ogre::Real height,
- const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO );
+ const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, const int shapeID = 1 );

//! destructor
~ChamferCylinder() {}
@@ -222,9 +228,10 @@
\param pos position offset of the primitive
\parem tolerance a tolerance passed to newton
\param forceScale if set to something else then (0,0,0), the value of this argument will be used as scale instead of the parent-node's scale
+ \param shapeID ID for this Collision
*/
ConvexHull( const World* world, Ogre::Entity* ent,
- const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, Ogre::Real tolerance = 0.001f , const Ogre::Vector3& forceScale = Ogre::Vector3::ZERO);
+ const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, Ogre::Real tolerance = 0.001f , const Ogre::Vector3& forceScale = Ogre::Vector3::ZERO, const int shapeID = 1 );

/*!
Overloaded constructor. pass a pointer to an array of vertices and the hull will be made from that.
@@ -234,9 +241,10 @@
\param orient orientation offset of the primitive
\param pos position offset of the primitive
\param tolerance a tolerance passed to newton
+ \param shapeID ID for this Collision
*/
ConvexHull( const World* world, const Ogre::Vector3* verts, int vertcount,
- const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, Ogre::Real tolerance = 0.001f );
+ const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, Ogre::Real tolerance = 0.001f, const int shapeID = 1 );

//! destructor
~ConvexHull() {}
@@ -266,8 +274,9 @@
\param world pointer to the OgreNewt::World
\param ent pointer to an Ogre::Entitiy, if it is attached to a node, the scale of the parent node is used
\param optimize bool whether you want to optimize the collision or not.
+ \param shapeID ID for this Collision
*/
- TreeCollision( const World* world, Ogre::Entity* ent, bool optimize, FaceWinding fw = FW_DEFAULT );
+ TreeCollision( const World* world, Ogre::Entity* ent, bool optimize, FaceWinding fw = FW_DEFAULT, const int shapeID = 1 );

//! constructor
/*!
@@ -279,8 +288,9 @@
\param vertices pointer to array of vertices (positions only).
\param indices pointer to array of indices.
\param optimize bool whether you want to optimize the collision or not.
+ \param shapeID ID for this Collision
*/
- TreeCollision( const World* world, int numVertices, int numIndices, const float *vertices, const int *indices, bool optimize, FaceWinding fw = FW_DEFAULT);
+ TreeCollision( const World* world, int numVertices, int numIndices, const float *vertices, const int *indices, bool optimize, FaceWinding fw = FW_DEFAULT, const int shapeID = 1);

//! constructor
/*!
@@ -291,14 +301,18 @@
\param vertices pointer to array of Ogre::Vector3 vertices (positions only)
\param indexData pointer to Ogre::IndexData for the mesh
\param optimize bool whether you want to optimize the collision or not.
+ \param shapeID ID for this Collision
*/
- TreeCollision( const World* world, int numVertices, Ogre::Vector3* vertices, Ogre::IndexData* indexData, bool optimize, FaceWinding fw = FW_DEFAULT);
+ TreeCollision( const World* world, int numVertices, Ogre::Vector3* vertices, Ogre::IndexData* indexData, bool optimize, FaceWinding fw = FW_DEFAULT, const int shapeID = 1);

//! destructor
virtual ~TreeCollision() {}

//! start a tree collision creation
- void start();
+ /*!
+ \param shapeID ID for this Collision
+ */
+ void start(const int shapeID = 1);

//! add a poly to the tree collision
/*!
@@ -421,9 +435,10 @@
\param orient orientation offset of the primitive
\param pos position offset of the primitive
\param tolerance a tolerance passed to newton
+ \param shapeID ID for this Collision
*/
Pyramid( const World* world, const Ogre::Vector3& size,
- const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, Ogre::Real tolerance = 0.001f );
+ const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& pos = Ogre::Vector3::ZERO, Ogre::Real tolerance = 0.001f, const int shapeID = 1 );

//! destructor
~Pyramid() {}
Index: inc/OgreNewt_CollisionSerializer.h
===================================================================
--- inc/OgreNewt_CollisionSerializer.h (revision 2721)
+++ inc/OgreNewt_CollisionSerializer.h (working copy)
@@ -42,7 +42,7 @@
Deserialize the Collision from a DataStream.
this will create a NEW Collision object
*/
- OgreNewt::CollisionPtr importCollision(Ogre::DataStreamPtr& stream, OgreNewt::World* world);
+ OgreNewt::CollisionPtr importCollision(Ogre::DataStreamPtr& stream, const OgreNewt::World* world);

private:
/*!
Index: inc/OgreNewt_RayCast.h
===================================================================
--- inc/OgreNewt_RayCast.h (revision 2721)
+++ inc/OgreNewt_RayCast.h (working copy)
@@ -144,7 +144,7 @@
int getHitCount() const;

//! retrieve the raycast info for a specific hit.
- BasicRaycastInfo getInfoAt( int hitnum ) const;
+ BasicRaycastInfo getInfoAt( size_t hitnum ) const;

//! get the closest body hit by the ray.
BasicRaycastInfo getFirstHit() const;
Index: src/OgreNewt_CollisionPrimitives.cpp
===================================================================
--- src/OgreNewt_CollisionPrimitives.cpp (revision 2721)
+++ src/OgreNewt_CollisionPrimitives.cpp (working copy)
@@ -30,13 +30,13 @@
Box::Box(const World* world) : ConvexCollision( world )
{}

- Box::Box( const World* world, const Ogre::Vector3& size, const Ogre::Quaternion& orient, const Ogre::Vector3& pos ) : ConvexCollision( world )
+ Box::Box( const World* world, const Ogre::Vector3& size, const Ogre::Quaternion& orient, const Ogre::Vector3& pos, const int shapeID ) : ConvexCollision( world )
{
float matrix[16];

OgreNewt::Converters::QuatPosToMatrix( orient, pos, &matrix[0] );

- m_col = NewtonCreateBox( m_world->getNewtonWorld(), (float)size.x, (float)size.y, (float)size.z, &matrix[0] );
+ m_col = NewtonCreateBox( m_world->getNewtonWorld(), (float)size.x, (float)size.y, (float)size.z, shapeID, &matrix[0] );
}


@@ -45,13 +45,13 @@
Ellipsoid::Ellipsoid(const World* world) : ConvexCollision( world )
{}

- Ellipsoid::Ellipsoid( const World* world, const Ogre::Vector3& size, const Ogre::Quaternion& orient, const Ogre::Vector3& pos ) : ConvexCollision( world )
+ Ellipsoid::Ellipsoid( const World* world, const Ogre::Vector3& size, const Ogre::Quaternion& orient, const Ogre::Vector3& pos, const int shapeID ) : ConvexCollision( world )
{
float matrix[16];

OgreNewt::Converters::QuatPosToMatrix( orient, pos, &matrix[0] );

- m_col = NewtonCreateSphere( m_world->getNewtonWorld(), (float)size.x, (float)size.y, (float)size.z, &matrix[0] );
+ m_col = NewtonCreateSphere( m_world->getNewtonWorld(), (float)size.x, (float)size.y, (float)size.z, shapeID, &matrix[0] );
}


@@ -60,13 +60,13 @@
{}

Cylinder::Cylinder( const World* world, Ogre::Real radius, Ogre::Real height,
- const Ogre::Quaternion& orient, const Ogre::Vector3& pos ) : ConvexCollision( world )
+ const Ogre::Quaternion& orient, const Ogre::Vector3& pos, const int shapeID ) : ConvexCollision( world )
{
float matrix[16];

OgreNewt::Converters::QuatPosToMatrix( orient, pos, &matrix[0] );

- m_col = NewtonCreateCylinder( m_world->getNewtonWorld(), (float)radius, (float)height, &matrix[0] );
+ m_col = NewtonCreateCylinder( m_world->getNewtonWorld(), (float)radius, (float)height, shapeID, &matrix[0] );
}


@@ -75,13 +75,13 @@
{}

Capsule::Capsule( const World* world, Ogre::Real radius, Ogre::Real height,
- const Ogre::Quaternion& orient, const Ogre::Vector3& pos ) : ConvexCollision( world )
+ const Ogre::Quaternion& orient, const Ogre::Vector3& pos, const int shapeID ) : ConvexCollision( world )
{
float matrix[16];

OgreNewt::Converters::QuatPosToMatrix( orient, pos, &matrix[0] );

- m_col = NewtonCreateCapsule( m_world->getNewtonWorld(), (float)radius, (float)height, &matrix[0] );
+ m_col = NewtonCreateCapsule( m_world->getNewtonWorld(), (float)radius, (float)height, shapeID, &matrix[0] );
}


@@ -90,13 +90,13 @@
{}

Cone::Cone( const World* world, Ogre::Real radius, Ogre::Real height,
- const Ogre::Quaternion& orient, const Ogre::Vector3& pos ) : ConvexCollision( world )
+ const Ogre::Quaternion& orient, const Ogre::Vector3& pos, const int shapeID ) : ConvexCollision( world )
{
float matrix[16];

OgreNewt::Converters::QuatPosToMatrix( orient, pos, &matrix[0] );

- m_col = NewtonCreateCone( m_world->getNewtonWorld(), (float)radius, (float)height, &matrix[0] );
+ m_col = NewtonCreateCone( m_world->getNewtonWorld(), (float)radius, (float)height, shapeID, &matrix[0] );
}

// OgreNewt::CollisionPrimitives::ChamferCylinder
@@ -104,13 +104,13 @@
{}

ChamferCylinder::ChamferCylinder( const World* world, Ogre::Real radius, Ogre::Real height,
- const Ogre::Quaternion& orient, const Ogre::Vector3& pos ) : ConvexCollision( world )
+ const Ogre::Quaternion& orient, const Ogre::Vector3& pos, const int shapeID ) : ConvexCollision( world )
{
float matrix[16];

OgreNewt::Converters::QuatPosToMatrix( orient, pos, &matrix[0] );

- m_col = NewtonCreateChamferCylinder( m_world->getNewtonWorld(), (float)radius, (float)height, &matrix[0] );
+ m_col = NewtonCreateChamferCylinder( m_world->getNewtonWorld(), (float)radius, (float)height, shapeID, &matrix[0] );
}


@@ -119,7 +119,7 @@
ConvexHull::ConvexHull(const World* world) : ConvexCollision( world )
{}

- ConvexHull::ConvexHull( const World* world, Ogre::Entity* obj, const Ogre::Quaternion& orient, const Ogre::Vector3& pos, Ogre::Real tolerance, const Ogre::Vector3& forceScale ) : ConvexCollision( world )
+ ConvexHull::ConvexHull( const World* world, Ogre::Entity* obj, const Ogre::Quaternion& orient, const Ogre::Vector3& pos, Ogre::Real tolerance, const Ogre::Vector3& forceScale, const int shapeID ) : ConvexCollision( world )
{
Ogre::Vector3 scale(1.0,1.0,1.0);

@@ -235,7 +235,7 @@
OgreNewt::Converters::QuatPosToMatrix( orient, pos, &matrix[0] );

//okay, let's try making the ConvexHull!
- m_col = NewtonCreateConvexHull( m_world->getNewtonWorld(), (int)total_verts, (float*)&vertices[0].x, sizeof(Ogre::Vector3), tolerance, &matrix[0] );
+ m_col = NewtonCreateConvexHull( m_world->getNewtonWorld(), (int)total_verts, (float*)&vertices[0].x, sizeof(Ogre::Vector3), tolerance, shapeID, &matrix[0] );

delete []vertices;

@@ -243,13 +243,13 @@


// OgreNewt::CollisionPrimitives::ConvexHull
- ConvexHull::ConvexHull( const World* world, const Ogre::Vector3* verts, int vertcount, const Ogre::Quaternion& orient, const Ogre::Vector3& pos, Ogre::Real tolerance ) : ConvexCollision( world )
+ ConvexHull::ConvexHull( const World* world, const Ogre::Vector3* verts, int vertcount, const Ogre::Quaternion& orient, const Ogre::Vector3& pos, Ogre::Real tolerance, const int shapeID ) : ConvexCollision( world )
{
float matrix[16];
OgreNewt::Converters::QuatPosToMatrix( orient, pos, &matrix[0] );

//make the collision primitive.
- m_col = NewtonCreateConvexHull( m_world->getNewtonWorld(), vertcount, (float*)&verts[0].x, sizeof(Ogre::Vector3), tolerance, &matrix[0]);
+ m_col = NewtonCreateConvexHull( m_world->getNewtonWorld(), vertcount, (float*)&verts[0].x, sizeof(Ogre::Vector3), tolerance, shapeID, &matrix[0]);
}


@@ -260,11 +260,11 @@
}


- TreeCollision::TreeCollision( const World* world, Ogre::Entity* obj, bool optimize, FaceWinding fw ) : Collision( world )
+ TreeCollision::TreeCollision( const World* world, Ogre::Entity* obj, bool optimize, FaceWinding fw, const int shapeID ) : Collision( world )
{
Ogre::Vector3 scale;

- start();
+ start(shapeID);

Ogre::MeshPtr mesh = obj->getMesh();

@@ -394,9 +394,9 @@
}


- TreeCollision::TreeCollision(const OgreNewt::World *world, int numVertices, int numIndices, const float *vertices, const int *indices, bool optimize, FaceWinding fw) : OgreNewt::Collision( world )
+ TreeCollision::TreeCollision(const OgreNewt::World *world, int numVertices, int numIndices, const float *vertices, const int *indices, bool optimize, FaceWinding fw, const int shapeID) : OgreNewt::Collision( world )
{
- start();
+ start(shapeID);

int numPolys = numIndices / 3;

@@ -435,9 +435,9 @@
}


- TreeCollision::TreeCollision( const World* world, int numVertices, Ogre::Vector3* vertices, Ogre::IndexData* indexData, bool optimize, FaceWinding fw) : Collision( world )
+ TreeCollision::TreeCollision( const World* world, int numVertices, Ogre::Vector3* vertices, Ogre::IndexData* indexData, bool optimize, FaceWinding fw, const int shapeID ) : Collision( world )
{
- start();
+ start(shapeID);

unsigned int numPolys = indexData->indexCount / 3;
Ogre::HardwareIndexBufferSharedPtr hwIndexBuffer=indexData->indexBuffer;
@@ -499,9 +499,9 @@
}


- void TreeCollision::start()
+ void TreeCollision::start(const int shapeID)
{
- m_col = NewtonCreateTreeCollision( m_world->getNewtonWorld() );
+ m_col = NewtonCreateTreeCollision( m_world->getNewtonWorld(), shapeID );
NewtonTreeCollisionBeginBuild( m_col );
}

@@ -694,8 +694,8 @@
{
Ogre::Vector3 rev_poly_verts[3];
rev_poly_verts[0] = poly_verts[0];
- rev_poly_verts[0] = poly_verts[2];
- rev_poly_verts[0] = poly_verts[1];
+ rev_poly_verts[1] = poly_verts[2];
+ rev_poly_verts[2] = poly_verts[1];

addPoly( rev_poly_verts, cs );
}
@@ -744,7 +744,7 @@
Pyramid::Pyramid(const World* world) : ConvexCollision( world )
{}

- Pyramid::Pyramid( const World* world, const Ogre::Vector3& size, const Ogre::Quaternion& orient, const Ogre::Vector3& pos, Ogre::Real tolerance ) : ConvexCollision( world )
+ Pyramid::Pyramid( const World* world, const Ogre::Vector3& size, const Ogre::Quaternion& orient, const Ogre::Vector3& pos, Ogre::Real tolerance, const int shapeID ) : ConvexCollision( world )
{
float matrix[16];

@@ -773,7 +773,7 @@
vertices [idx++] = 0.0f;

//make the collision primitive.
- m_col = NewtonCreateConvexHull( m_world->getNewtonWorld(), 5, vertices, sizeof(float)*3, tolerance, &matrix[0]);
+ m_col = NewtonCreateConvexHull( m_world->getNewtonWorld(), 5, vertices, sizeof(float)*3, tolerance, shapeID, &matrix[0]);


delete []vertices;
Index: src/OgreNewt_CollisionSerializer.cpp
===================================================================
--- src/OgreNewt_CollisionSerializer.cpp (revision 2721)
+++ src/OgreNewt_CollisionSerializer.cpp (working copy)
@@ -33,7 +33,7 @@
}


- CollisionPtr CollisionSerializer::importCollision(Ogre::DataStreamPtr& stream, OgreNewt::World* world)
+ CollisionPtr CollisionSerializer::importCollision(Ogre::DataStreamPtr& stream, const OgreNewt::World* world)
{
CollisionPtr dest;

Index: src/OgreNewt_PlayerController.cpp
===================================================================
--- src/OgreNewt_PlayerController.cpp (revision 2721)
+++ src/OgreNewt_PlayerController.cpp (working copy)
@@ -245,10 +245,10 @@
{
// find first contact with each body and cache it
resize(0);
- for(int i = 0; i < size(); i++)
+ for(size_type i = 0; i < size(); i++)
{
Body* body = cast.getInfoAt(i).mBody;
- int j;
+ size_type j;
for( j = 0; j < size(); j++ )
{
if( body == at(j) )
Index: src/OgreNewt_RayCast.cpp
===================================================================
--- src/OgreNewt_RayCast.cpp (revision 2721)
+++ src/OgreNewt_RayCast.cpp (working copy)
@@ -144,7 +144,7 @@
}


- BasicRaycast::BasicRaycastInfo BasicRaycast::getInfoAt( int hitnum ) const
+ BasicRaycast::BasicRaycastInfo BasicRaycast::getInfoAt( size_t hitnum ) const
{
BasicRaycast::BasicRaycastInfo ret;



Can't patch. It complaints about the patch file being malformed at line 21: };

kallaspriit

31-07-2009 22:16:25

Same here

melven

01-08-2009 20:49:12

I've updated the version in https://svn.ogre3d.org/svnroot/ogreaddo ... t/newton20 to newton 2.04.
-There are interface changes due to interface changes in newton (concerning collisions).
-I also fixed some stuff, so it should work with multithreading (the body-transformation callback). For testing purposes, you can switch to two threads in the demos now (some demos freeze with multithreading in certain circumstances, but I couldn't find a solution, I get a pointer/memory error while allocating memory in Ogre).
-I only tested it on linux and implemented (for the linux version only using pthreads) an additional lock mechanism that can be used when accessing Ogre (but it didn't solve the multithreading problems in the demos :-( )

I didn't have much time, so if you want a version that "should" compile and works with newton 2.0 use the revision 2676 with an older version of newton 2.0...

kallaspriit

04-08-2009 12:43:39

Great, updated to 2.05 myself and started using your version instead of my own again :)

Could you add
typedef boost::shared_ptr<Body> BodyPtr;
to the top of the OgreNewt::Body header for the sake of completeness, I really started to like boost::shared_ptr as I'm passing my bodies to different structures and it's hard to be sure when it's safe to delete a body.

Also, you have changed so that in Body::attachNode(), updateNode() is called which broke my code of:

body->attachNode(sourceNode);
body->setPositionOrientation(sourceNode->getPosition(), sourceNode->getOrientation());

As attachNode() sets the position and orientation of the node to default identity, the next line does not have effect. Works fine when I change the order of these statesments or buffer the data, but is the updateNode() call necessary in attachNode()?

One more thing, could you add contacts display back to the debugger and also displaying body state (active, static, assleep) using the color of the wireframe? The debug display can be further improved by displaying the name of the node as the first line of debug text and by making the debug text visible only in certain distance, when the object is not too close nor far away so that the text is unreadable anyway - makes a large scene faster and more understandable.

Great work on improving the wrapper :P

melven

04-08-2009 15:31:08

I thought setting the position of the node when it is attached to a body would improve consistency, because its position will be updated automatically the next time the body is moved... I could remove the call, but wouldn't it make more sense to change the order of these two lines? I thought most of the time, this should be the intended behaviour...

I already use different colors in the debugger for different materials (in my app), but there should be other ways for displaying contacts...
I don't have much time at the moment, but feel free to improve OgreNewt! You can add the things you need by your own and post the changes in the forum if you like... when I have a bit more time I could upload your changes...

deadvirus

04-08-2009 23:45:40

I thought setting the position of the node when it is attached to a body would improve consistency, because its position will be updated automatically the next time the body is moved... I could remove the call, but wouldn't it make more sense to change the order of these two lines? I thought most of the time, this should be the intended behaviour...

I already use different colors in the debugger for different materials (in my app), but there should be other ways for displaying contacts...
I don't have much time at the moment, but feel free to improve OgreNewt! You can add the things you need by your own and post the changes in the forum if you like... when I have a bit more time I could upload your changes...

You're right, IMHO. That's the expected behavior...

kallaspriit

05-08-2009 13:56:11

Yeah, I guess you are right, just wondered :)

deadvirus

12-08-2009 14:09:50

Did any one tested it with Newton 2.06 or 2.07?

melven

12-08-2009 20:38:29

There are some small interface changes in 2.06, I've implemented them locally (but didn't commit them yet)...

deadvirus

12-08-2009 22:34:55

There are some small interface changes in 2.06, I've implemented them locally (but didn't commit them yet)...
If have some time to commit them, I will be happy :D
Sorry for asking...

PJani

15-08-2009 12:43:23

Is there OgreNewt for Newton 2.07?

Wannes

20-08-2009 15:42:06

There are some small interface changes in 2.06, I've implemented them locally (but didn't commit them yet)...
If have some time to commit them, I will be happy :D
Sorry for asking...



After some reading about the interface change, the addition of a "shapeID" parameter I decided to just use "0" of this parameter at the two places you get the error (ConvexModifierCollision and CompoundCollision). There is a tutorial about advanced materials on the NEwton Physics wiki and it seems the shapeID can be be an arbitrary number given by the user which can be used later in a callback to switch between different beheviours. So since this isn't used anywhere else in the OgreNewt code I guess initializing it to 0 should be fine ...

melven

21-08-2009 14:03:53

I've updated the version in https://svn.ogre3d.org/svnroot/ogreaddo ... t/newton20 to newton 2.07.
- There is again an interface breaking change (shape id parameter when creating ConvexModifierCollision).
- I added a demo for the player controller joint, that needs to be improved! (the player controller is not working yet, though I tried to copy the latest player controller custom-joint from newton)
- in the CustomJoint class: added a globalToLocal function and the feedbackCollector callback

There are no Visual Studio files for the PlayerController demo yet.

deadvirus

21-08-2009 14:05:27

I've updated the version in https://svn.ogre3d.org/svnroot/ogreaddo ... t/newton20 to newton 2.07.
- There is again an interface breaking change (shape id parameter when creating ConvexModifierCollision).
- I added a demo for the player controller joint, that needs to be improved! (the player controller is not working yet, though I tried to copy the latest player controller custom-joint from newton)
- in the CustomJoint class: added a globalToLocal function and the feedbackCollector callback

There are no Visual Studio files for the PlayerController demo yet.


Thank you. I'll try it ASAP.

kallaspriit

21-08-2009 16:11:32

Thank you, will try too. BTW, there is 2.08 already but should work with this :)

deadvirus

21-08-2009 16:23:11

Thank you, will try too. BTW, there is 2.08 already but should work with this :)

2.08? Where? Is there any other source other than the Newton 2.08 open beta thread?

kallaspriit

22-08-2009 14:04:28

Julio has not added the link, but it has been in the topic, try http://www.newtondynamics.com/downloads ... n-2.08.rar :wink:

The new version works with it nicely :)

deadvirus

22-08-2009 14:10:55

Julio has not added the link, but it has been in the topic, try http://www.newtondynamics.com/downloads ... n-2.08.rar :wink:

The new version works with it nicely :)


Thanks!

deadvirus

23-08-2009 00:27:41

I've updated the version in https://svn.ogre3d.org/svnroot/ogreaddo ... t/newton20 to newton 2.07.
- There is again an interface breaking change (shape id parameter when creating ConvexModifierCollision).
- I added a demo for the player controller joint, that needs to be improved! (the player controller is not working yet, though I tried to copy the latest player controller custom-joint from newton)
- in the CustomJoint class: added a globalToLocal function and the feedbackCollector callback

There are no Visual Studio files for the PlayerController demo yet.


I've got an error while trying to compile: "fatal error C1083: Cannot open include file: 'pthread.h': No such file or directory" on OgreNewt_World.h:15
It's weird because "#ifndef WIN32" should prevent it from compiling that line!

I'm using Visual Studio 2008.

EDIT: It was missing the WIN32 preprocessor definition on the project properties. Now it compiles.
EDIT2: The Treecollision ID has to be unique? Is it the material ID? If so, shouldn't it be MaterialID* instead of int? (I know we can get the int id from MaterialID)
EDIT3: I have an airplane and in 2.03 it took about 5 seconds to give a full 360º turn (pitch), in 2.08 it takes about 8 seconds to do it! I think this is because the changes you've made in Body::addGlobalForce. Are you sure that the center of mass is needed there? Doesn't Newton take care of it?

melven

23-08-2009 17:21:28


I've got an error while trying to compile: "fatal error C1083: Cannot open include file: 'pthread.h': No such file or directory" on OgreNewt_World.h:15
It's weird because "#ifndef WIN32" should prevent it from compiling that line!

I'm using Visual Studio 2008.

EDIT: It was missing the WIN32 preprocessor definition on the project properties. Now it compiles.
EDIT2: The Treecollision ID has to be unique? Is it the material ID? If so, shouldn't it be MaterialID* instead of int? (I know we can get the int id from MaterialID)
EDIT3: I have an airplane and in 2.03 it took about 5 seconds to give a full 360º turn (pitch), in 2.08 it takes about 8 seconds to do it! I think this is because the changes you've made in Body::addGlobalForce. Are you sure that the center of mass is needed there? Doesn't Newton take care of it?


I'm sorry I don't use Windows, so I cannot check if it runs there...

Concerning the TreeCollision-id (like the id of all other collisions):
You don't need to use it (so you can set it to 0 or whatever), I just didn't give it a default-value in order to prevent errors... For further information, look here http://newtondynamics.com/wiki/index.ph ... ial_System .

Concerning the addGlobalForce-function: I think it was wrong before and now it should be correct, see http://newtondynamics.com/wiki/index.ph ... ntreOfMass ... tell me, if this is not right!



By the way, I've updated the version of OgreNewt in https://svn.ogre3d.org/svnroot/ogreaddo ... t/newton20 again:
- the player controller seems to work for the first time ;-) (but it's not finished yet!)
- removed the CollisionTools::CollisionCalculateAABB function (because its a dubplicate of Collision::getAABB ) and added a function that calculates a fitting AABB (CollisionTools::CollisionCalculateFittingAABB), because the AABB returned by the getAABB function can be too large!

deadvirus

23-08-2009 17:32:23

I'm sorry I don't use Windows, so I cannot check if it runs there...
It does! Just needed to add the WIN32 preprocessor thing.

Concerning the TreeCollision-id (like the id of all other collisions):
You don't need to use it (so you can set it to 0 or whatever), I just didn't give it a default-value in order to prevent errors... For further information, look here http://newtondynamics.com/wiki/index.ph ... ial_System .

Oh I see. So I'll set it to 0 since I don't use it for now. What kind of errors are you trying to prevent by not giving it a default value?

Concerning the addGlobalForce-function: I think it was wrong before and now it should be correct, see http://newtondynamics.com/wiki/index.ph ... ntreOfMass ... tell me, if this is not right!
Yeah, you're right! :)

By the way, I've updated the version of OgreNewt in https://svn.ogre3d.org/svnroot/ogreaddo ... t/newton20 again:
- the player controller seems to work for the first time ;-) (but it's not finished yet!)
- removed the CollisionTools::CollisionCalculateAABB function (because its a dubplicate of Collision::getAABB ) and added a function that calculates a fitting AABB (CollisionTools::CollisionCalculateFittingAABB), because the AABB returned by the getAABB function can be too large!

Thank you again ;)

PJani

26-08-2009 13:04:43

It is posible to build this ogrenewt with code::blocks and mingw to static library?

PJani

15-09-2009 02:32:34

Am writing Performance Grapher for OgreNewt. As soon as i make final touches to code i will share the code.

ChampiAtomik

17-09-2009 18:12:46

I try to download OgreNewt from the link https://svn.ogre3d.org/svnroot/ogreaddo ... t/newton20 but it doesn't work =S

Can someone give me another link or something else please ? ^^

PJani

17-09-2009 20:08:33

This is SVN link and you can NOT down load it with your browser directly. You will need software like Turtoise SVN or something like that.

ChampiAtomik

17-09-2009 20:32:34

Oh ok thanks for your answer, i got it now and i will try to use it

oramia

01-11-2009 20:25:22

Can someone post a compiled dll link mentioning dependent newtonian dll version?
Thanks

melven

27-11-2009 21:57:00

Some minor updates of the OgreNewt version found here: https://svn.ogre3d.org/svnroot/ogreaddo ... t/newton20, but there are some little api changes:
  1. added a destructor callback for OgreNewt::Joint and OgreNewt::Body (because these can be destroyed indirectly through newton callbacks!)[/*:m]
  2. removed CollisionTools::CollisionCalculateAABB (because there's col->getAABB() ) and added a function to calculate the correct AABB CollisionTools::CollisionCalculateFittingAABB[/*:m][/list:u]
    Some changes from kallaspriit will perhaps come soon (better vc project files etc)!

kallaspriit

06-12-2009 19:06:52

Added my first updates:

New Visual Studio 9 project files that include the demos and are set up using the following enviroment variables:
"OGRE_HOME" - ogre home directory (I compiled Ogre myself, the directories may not be correct with pre-compiled version)
"BOOST_HOME" - boost directory (get the latest from http://boost.org)
"NEWTON_HOME" - NGD install directory
"OGRENEWT_HOME" - OgreNewt root directory

With these set correctly, everything should compile and run out of the box without changing anything. The directories are set up relative to self-compiled Ogre 1.6. and was tested with NGD 2.11.

Also fixed BasicFrameListener to compile in debug mode (was missing logging includes) and got rid of some warnings.

See the updated INSTALL.TXT.

Could someone verify this working :P

kallaspriit

10-12-2009 10:10:59

I updated project files to work with both self-compiled and pre-built Ogre 1.6.4 SDK, also added the suo file and moved to NGD 2.12 :wink:

PJani

18-12-2009 17:15:58

Will be any upgrade of OgreNewt in the future? Becouse it seams like OgreNewt is dieing... :cry:

kallaspriit

20-12-2009 20:28:51

There definitely are updates coming, Julio himself is working on it to bring the jointlibrary to OgreNewt and some other changes so stay tuned :)

PJani

20-12-2009 21:50:18

I cant wait, to see updated OgreNewt :)

Edit: I had idea to start updating OgreNewt to new Newton 2.0x but 1. year at collage started and i have no time to...

kallaspriit

21-12-2009 23:25:27

I cant wait, to see updated OgreNewt :)

Edit: I had idea to start updating OgreNewt to new Newton 2.0x but 1. year at collage started and i have no time to...

OgreNewt already works with the latest NGD 2.1x, get it from https://svn.ogre3d.org/svnroot/ogreaddo ... t/newton20 :wink:

kallaspriit

26-12-2009 10:39:27

First updates by Julio himself have rolled in:
- support for the NGD joint-library
- player controller uses the joint-library
- updated picking, now uses kinematic controller and convex cast for exact placement
- many more smaller updates

You need to get NGD 2.15 for this to work.

Stay tuned for more :wink:

kallaspriit

30-12-2009 15:50:15

There are plenty more updates from Julio, including improved character controller :wink:

kallaspriit

03-01-2010 20:11:37

More Julio's updates:
-fixed the AABB interface of the Body and Collision to use the same low level function CollisionCalculateFittingAABB I think you wrote your self
-added debug display for Joints, now the joint have a method the the end application can define to display any debug info it want, I added default info for the Player controller and for the RayCast car.
-added more functionality to the raycast car but it is not functional yet, it can have tire and it roll free over the terrain.
I want to move on the raycast car but without those basic feature it is too difficult. It is no wonder I see people having so much difficulty getting anything done.
-I also move the rest of the texture assets from the primitives forder to the media/texture folder.

PJani

19-01-2010 20:39:17

Im working on Multi Body Vehicle and performance counter and grapher.

kallaspriit

14-03-2010 21:42:46

Updated to use NGD 2.18, some other minor changes.

IMPORTANT CHANGE
This actually came already in previous update. If you are using custom game loop instead of the supplied BasicFrameListener, you should modify it not to use time slicing and always call world->update() as OgreNewt now uses interpolating the visuals. Visuals are updated every time, physics updates are called to match desired FPS. To control the FPS, simply call
world->setUpdateFPS(..);
or supply desired physics FPS in the OgreNewt::World Constructor.

Also, bodies now have method OgreNewt::Body::getVisualPositionOrientation(), that returns interpolated position and orientation of the body, as it appears to the viewer. The existing OgreNewt::Body::getPositionOrientation() returns these as NGD sees it. Sometimes you may want to use the first, sometimes latter. The interpolation update is by Julio.

I have also added comfort methods OgreNewt::Body::getPosition(), OgreNewt::Body::getOrientation() and OgreNewt::Body::getVisualPosition(), OgreNewt::Body::getVisualOrientation() as you often don't need them both so it does not make sense having to declare two variables to hold these. Is there any reason for not using this approach?

Be sure to get the latest NGD and update the environment variables to match its location ;)

PJani

17-03-2010 12:11:32

I developed few new joints by my self for my needs and now when i upgraded ogrenewt and newton to 2.18 i was confused like hell which stuff i need to replace and which i have to leave alone.

Anyway I suggest that each joint is in different file. And Joints should have their own namespace. Joints are allready clogging OgreNewt namespace in 2.xx versions.

File name example for Hinge.
OgreNewt_JointHinge.cpp
OgreNewt_JointHinge.h

or

OgreNewtJoint_Hinge.cpp
OgreNewtJoint_Hinge.h

kallaspriit

20-03-2010 11:39:19

I am having a very busy period and I just don't have time to do this, but if you want to help, then make a checkout, modify the code and demos and send it all to me (or as a batch). If it checks out, I will add it to the repository. You could also include the extra joints you have made, but then it would be nice if you included them in the joints demo also.

kallaspriit

28-03-2010 20:34:06

Some minor changes to Ogre, should not brake anything:
- OgreNewt::World::update() now returns the number of NGD world updates it performed
- added constants for setting platform architecture

There are also some changes to MinimalOgreNewtApplication demo.

tod

09-04-2010 10:01:34

Hello, is there anybody still maintaining/developing OgreNewt? Is there a roadmap or something?

kallaspriit

11-04-2010 18:38:00

Not exactly a roadmap, but at least I am trying to keep it up to date with latest NGD versions and adding some updates :P

zamx

05-05-2010 13:46:45

What is highest revision or stable version with a visual studio 8 solution file ?

kallaspriit

06-05-2010 20:48:46

Well.. the latest ;)

zamx

07-05-2010 17:17:14

I meant a solution file for visual studio 2005.

kallaspriit

24-05-2010 16:48:05

- Added Body::addGlobalForceAccumulate( const Ogre::Vector3& force, const Ogre::Vector3& pos ), that can be called outside force-callback. The forces are accumulated and applied in default force-callback when body is updated.
- Added bugfix, where node scale was not taken into account when building tree collision.
- Added getCollisionState, setCollisionState, getStiffness and setStiffness back to the joint interface.

zamx: search for a downgrade utility, something like this (not tested).

jarwulf

10-06-2010 04:59:32

I cant wait, to see updated OgreNewt :)

Edit: I had idea to start updating OgreNewt to new Newton 2.0x but 1. year at collage started and i have no time to...

OgreNewt already works with the latest NGD 2.1x, get it from https://svn.ogre3d.org/svnroot/ogreaddo ... t/newton20 :wink:



Is there anyway to get it without having to download every file individually? These websites don't seem big on making things easy...

mvelazquezm

16-06-2010 11:30:11

I cant wait, to see updated OgreNewt :)

Edit: I had idea to start updating OgreNewt to new Newton 2.0x but 1. year at collage started and i have no time to...

OgreNewt already works with the latest NGD 2.1x, get it from https://svn.ogre3d.org/svnroot/ogreaddo ... t/newton20 :wink:



Is there anyway to get it without having to download every file individually? These websites don't seem big on making things easy...


You have to use an application to get SVN... Tortoise its free.

soon

16-06-2010 13:05:50

Hi! I've got the latest version which should be amended on 25 May.
I noticed that the Demo08_RagdollExample is excluded from the solution file currently.
After adding and compiling it, it is found that there are many compilation errors.

I tried to look for the problem, and found that many codes in OgreNewt_BasicJoints are commented out by the preprocessor operator #.
Lots of errors appeared after uncommenting those codes.
Are there some problems with the ragdoll demo in OgreNewt2 now?


By the way, I am using
Ogre 1.7.1
NewtonSDK 2.21
CEGUI-0.7.1

All other demos have been compiled and run successfully.
I have done little fixing in the codes too, since the latest CEGUI version seems to have a different structure from before.
I can share it if anyone wants to have a look.

kallaspriit

16-06-2010 18:09:35

If you've updated the demos to work with 1.7, I would like to take a look, should update OgreNewt for 1.7 but got little time to do it :(

Ideally, it should work with bot 1.6 and 1.7 and CEGUI should be removed altogether.

soon

21-06-2010 18:03:47

Here's the code, I tried to further tidy them up a bit.
http://sites.google.com/site/ogrenewt/ogrenewt/OgreNewt_%28for_Ogre1.7.1%29.zip?attredirects=0&d=1
I've tried to compile them all in Debug mode, and they are all working fine except Demo08.
It would be great if the demo08 can also be compiled and run. :roll:

Ogre 1.7.1
CEGUI 0.7.1
Newton 2.22

From your last message, I know that CEGUI is not necessary. I tried to exclude CEGUI from the demos, now they are all removed, except demo06.
Since I notice that demo06 uses some functions of the CEGUI, I'm not sure if they could be removed or replaced by something else. Also, cegui 0.7.1 has been updated, and some method names / structure have been changed.
I've made some comments with prefix "// ***" in those places I've changed to suit the new version of CEGUI in demo 06.

The include files and library directories setting uses the following environment variables:
$(OGRE_HOME)
$(CEGUI_HOME)
$(BOOST_HOME)
$(NEWTON_HOME)
which point to those sdk folders

Thanks!!

kallaspriit

21-06-2010 19:28:18

Good, I will check it out soon :)

soon

23-06-2010 17:30:45

Good, I will check it out soon :)

Great! Look forward to hearing from you soon 8)

kallaspriit

24-06-2010 12:43:05

I have not gotten to Ogre 1.7 yet, but I do have some updates:
- added void OgreNewt::Joint::localToGlobalVisual() that is the same as localToGlobal() except it uses visual position and orientation
- added getters for BasicRaycastInfo
- fixed graphics interpolation if running graphics faster than physics, it did not use to work at all actually as Julio first implemented it. now the graphics are fluid even if running physics at 10FPS
- fixed couple method names that started with uppercase characters

kallaspriit

24-06-2010 21:26:18

Trying to get OgreNewt working with Ogre 1.7.1 and VS2010, but I'm getting a wierd exception I've yet to solve, didn't you have the same problem?
[attachment=0]ex.png[/attachment]

EDIT: Solved it, it's a problem with Ogre and VS2010 as described http://www.ogre3d.org/forums/viewtopic.php?f=2&t=54465

Hoping to get OgreNewt 1.7 ready soon ;)

kallaspriit

26-06-2010 16:28:22

OgreNewt should now work with Ogre 1.7.1 and there are also solution and project files for VS2010.

There is also a new environment variable that needs to be set:
"OGRE_BUILD_HOME" - directory where you built your Ogre 1.7

Give it a spin and let me know if something does not work and better yet, a solution :wink:

SFCBias

27-06-2010 13:14:49

I guess i should note that before i switched to pure Newton, I've been working with 1.7 for some time successfully.

soon

29-06-2010 11:26:07

OgreNewt should now work with Ogre 1.7.1 and there are also solution and project files for VS2010.

There is also a new environment variable that needs to be set:
"OGRE_BUILD_HOME" - directory where you built your Ogre 1.7

Give it a spin and let me know if something does not work and better yet, a solution :wink:


wow~! well done :D
Just got your latest version. I noticed that the VS9 solution file still does not include the ragdoll demo, are there some serious issues to be dealt with?

kallaspriit

03-07-2010 11:23:15

Fixed some issues with mingw compiler.

Ragdoll joint was dropped from NGD some time ago, but it can be done with (custom) joints.

kallaspriit

04-07-2010 10:31:03

Added NewtonCollisionInfoRecord* Collision::getInfo() that returns collision info record.

kallaspriit

07-07-2010 17:57:10

Added some fixes for mingw and some changes that allows MinimalOgreNewtApplication to be compiled on Linux (hopefully, don't use it myself).

kallaspriit

10-07-2010 16:34:14

- Updated VS9 project files to work properly with Ogre 1.7
- Added third optional parameter "name" to OgreNewt::World contructor that is the name of the created world that defaults to "main". You can use this name to statically get the world instance using OgreNewt::World::get(name) where name defaults to "main" also, so you don't have to set the name if you are using the default one in your constructor, just OgreNewt::World::get() will return the default-named instance. This is added for comfort, so you don't have to carry the world instance around to call OgreNewt methods that require pointer to the world.

NIKIMC

09-08-2010 04:34:08

I am using Ogre 1.7.1 with VS2010 Ultimate and I can not compile the samples.I have done this:

*download OgreNewt_(for_Ogre1.7.1) and extract it in C:\OgreSDK\Addons
*download NewtonWin-2.24 and extract it in C:\OgreSDK\Addons

*Set enviroment variable
BOOST_HOME (C:\OgreSDK\boost_1_42)
NEWTON_HOME (C:\OgreSDK\Addons\NewtonWin-2.24)
OGRE_HOME (C:\OgreSDK)
OGRENEWT_HOME (C:\OgreSDK\Addons\OgreNewt_(for_Ogre1.7.1))

*compile successfully NewtonWin-2.24 sample and skd (on sdk 3 have bulded 2 have failed,on samples all builded but nither the sdk or the samples can be debuged its giving me error)

*run OgreNewt_(for_Ogre1.7.1) solution for VS2010 and try to build it but it says all have failed on building,its giving me a lot of errors:


1>------ Rebuild All started: Project: OgreNewt, Configuration: Debug Win32 ------
2>------ Rebuild All started: Project: Demo08_RagdollExample, Configuration: Debug Win32 ------
1>Build started 09.08.2010 05:26:06.
1>_PrepareForClean:
1> Deleting file "obj\debug\OgreNewt.lastbuildstate".
2>Build started 09.08.2010 05:26:06.
2>_PrepareForClean:
2> Deleting file "..\obj\Debug\Demo08_RagdollExample\Demo08_RagdollExample.lastbuildstate".
1>InitializeBuildStatus:
1> Touching "obj\debug\OgreNewt.unsuccessfulbuild".
2>InitializeBuildStatus:
2> Touching "..\obj\Debug\Demo08_RagdollExample\Demo08_RagdollExample.unsuccessfulbuild".
1>ClCompile:
1> OgreNewt_Stdafx.cpp
2>ClCompile:
2> Ragdoll.cpp
2>c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\demos\demo08_ragdollexample\ragdoll.h(49): error C3083: 'BasicJoints': the symbol to the left of a '::' must be a type
2>c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\demos\demo08_ragdollexample\ragdoll.cpp(82): error C2039: 'setCustomTransformCallback' : is not a member of 'OgreNewt::Body'
2> c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\inc\ogrenewt_body.h(38) : see declaration of 'OgreNewt::Body'
2>c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\demos\demo08_ragdollexample\ragdoll.cpp(98): error C3083: 'BasicJoints': the symbol to the left of a '::' must be a type
2>c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\demos\demo08_ragdollexample\ragdoll.cpp(101): error C2039: 'getUserData' : is not a member of 'OgreNewt::Hinge'
2> c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\inc\ogrenewt_basicjoints.h(72) : see declaration of 'OgreNewt::Hinge'
2>c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\demos\demo08_ragdollexample\ragdoll.cpp(112): error C2039: 'calculateStopAlpha' : is not a member of 'OgreNewt::Hinge'
2> c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\inc\ogrenewt_basicjoints.h(72) : see declaration of 'OgreNewt::Hinge'
2>c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\demos\demo08_ragdollexample\ragdoll.cpp(113): error C2039: 'setCallbackAccel' : is not a member of 'OgreNewt::Hinge'
2> c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\inc\ogrenewt_basicjoints.h(72) : see declaration of 'OgreNewt::Hinge'
2>c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\demos\demo08_ragdollexample\ragdoll.cpp(118): error C2039: 'calculateStopAlpha' : is not a member of 'OgreNewt::Hinge'
2> c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\inc\ogrenewt_basicjoints.h(72) : see declaration of 'OgreNewt::Hinge'
2>c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\demos\demo08_ragdollexample\ragdoll.cpp(119): error C2039: 'setCallbackAccel' : is not a member of 'OgreNewt::Hinge'
2> c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\inc\ogrenewt_basicjoints.h(72) : see declaration of 'OgreNewt::Hinge'
2>c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\demos\demo08_ragdollexample\ragdoll.cpp(401): error C3083: 'BasicJoints': the symbol to the left of a '::' must be a type
2>c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\demos\demo08_ragdollexample\ragdoll.cpp(401): error C2661: 'OgreNewt::BallAndSocket::BallAndSocket' : no overloaded function takes 4 arguments
2>c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\demos\demo08_ragdollexample\ragdoll.cpp(402): error C3083: 'BasicJoints': the symbol to the left of a '::' must be a type
2>c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\demos\demo08_ragdollexample\ragdoll.cpp(402): error C2039: 'setLimits' : is not a member of 'OgreNewt::BallAndSocket'
2> c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\inc\ogrenewt_basicjoints.h(27) : see declaration of 'OgreNewt::BallAndSocket'
2>c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\demos\demo08_ragdollexample\ragdoll.cpp(406): error C3083: 'BasicJoints': the symbol to the left of a '::' must be a type
2>c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\demos\demo08_ragdollexample\ragdoll.cpp(406): error C2661: 'OgreNewt::Hinge::Hinge' : no overloaded function takes 5 arguments
2>c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\demos\demo08_ragdollexample\ragdoll.cpp(407): error C3083: 'BasicJoints': the symbol to the left of a '::' must be a type
2>c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\demos\demo08_ragdollexample\ragdoll.cpp(407): error C2039: 'setCallback' : is not a member of 'OgreNewt::Hinge'
2> c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\inc\ogrenewt_basicjoints.h(72) : see declaration of 'OgreNewt::Hinge'
2>c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\demos\demo08_ragdollexample\ragdoll.cpp(409): error C2039: 'setUserData' : is not a member of 'OgreNewt::Joint'
2> c:\ogresdk\addons\ogrenewt_(for_ogre1.7.1)\inc\ogrenewt_joint.h(31) : see declaration of 'OgreNewt::Joint'
2> OgreNewtonFrameListener.cpp
1> OgreNewt_BasicFrameListener.cpp
1>src\OgreNewt_BasicFrameListener.cpp(28): warning C4244: 'argument' : conversion from 'int' to 'Ogre::Real', possible loss of data
1> OgreNewt_BasicJoints.cpp
1> OgreNewt_Body.cpp
1>src\OgreNewt_Body.cpp(123): warning C4305: 'argument' : truncation from 'double' to 'const Ogre::Real'
1> OgreNewt_BodyInAABBIterator.cpp
1> OgreNewt_Collision.cpp
1> OgreNewt_CollisionPrimitives.cpp
1>src\OgreNewt_CollisionPrimitives.cpp(765): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
1>src\OgreNewt_CollisionPrimitives.cpp(766): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
1>src\OgreNewt_CollisionPrimitives.cpp(767): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
1>src\OgreNewt_CollisionPrimitives.cpp(773): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
1> OgreNewt_CollisionSerializer.cpp
1> OgreNewt_ContactCallback.cpp
1> OgreNewt_ContactJoint.cpp
1> OgreNewt_ConvexCast.cpp
1> OgreNewt_Debugger.cpp
1>src\OgreNewt_Debugger.cpp(248): warning C4244: 'argument' : conversion from 'double' to 'const Ogre::Real', possible loss of data
1>src\OgreNewt_Debugger.cpp(278): warning C4244: 'argument' : conversion from 'double' to 'const Ogre::Real', possible loss of data
1>src\OgreNewt_Debugger.cpp(283): warning C4305: 'argument' : truncation from 'double' to 'const Ogre::Real'
1> OgreNewt_Joint.cpp
2>c:\ogresdk\include\ogre\exampleframelistener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
2> OgreNewtonApplication.cpp
1> OgreNewt_MaterialID.cpp
1> OgreNewt_MaterialPair.cpp
1> OgreNewt_PlayerController.cpp
1> OgreNewt_RayCast.cpp
1>src\OgreNewt_RayCast.cpp(55): warning C4305: 'return' : truncation from 'double' to 'float'
1> OgreNewt_RayCastVehicle.cpp
1> OgreNewt_Tools.cpp
1>src\OgreNewt_Tools.cpp(497): warning C4244: '=' : conversion from 'double' to 'Ogre::Real', possible loss of data
1>src\OgreNewt_Tools.cpp(519): warning C4244: '=' : conversion from 'double' to 'Ogre::Real', possible loss of data
1>src\OgreNewt_Tools.cpp(530): warning C4244: '+=' : conversion from 'double' to 'float', possible loss of data
1>src\OgreNewt_Tools.cpp(543): warning C4244: '+=' : conversion from 'double' to 'Ogre::Real', possible loss of data
1>src\OgreNewt_Tools.cpp(551): warning C4244: '-=' : conversion from 'double' to 'float', possible loss of data
1>src\OgreNewt_Tools.cpp(606): warning C4244: '-=' : conversion from 'double' to 'float', possible loss of data
1>src\OgreNewt_Tools.cpp(627): warning C4244: '+=' : conversion from 'double' to 'float', possible loss of data
1>src\OgreNewt_Tools.cpp(628): warning C4244: '+=' : conversion from 'double' to 'float', possible loss of data
1>src\OgreNewt_Tools.cpp(668): warning C4244: '-=' : conversion from 'double' to 'float', possible loss of data
1>src\OgreNewt_Tools.cpp(669): warning C4244: '-=' : conversion from 'double' to 'float', possible loss of data
1>src\OgreNewt_Tools.cpp(686): warning C4244: '+=' : conversion from 'double' to 'float', possible loss of data
1>src\OgreNewt_Tools.cpp(705): warning C4244: '+=' : conversion from 'double' to 'float', possible loss of data
1> OgreNewt_Vehicle.cpp
1> OgreNewt_World.cpp
1>src\OgreNewt_World.cpp(99): warning C4244: '+=' : conversion from 'float' to 'int', possible loss of data
1>src\OgreNewt_World.cpp(101): warning C4305: '=' : truncation from 'double' to 'Ogre::Real'
1>src\OgreNewt_World.cpp(106): warning C4305: '=' : truncation from 'double' to 'Ogre::Real'
1> Generating Code...
2>c:\ogresdk\include\ogre\exampleframelistener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
2> demo08.cpp
2>c:\ogresdk\include\ogre\exampleframelistener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
2> Generating Code...
2>
2>Build FAILED.
2>
2>Time Elapsed 00:01:25.30
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(990,5): warning MSB8012: TargetPath(C:\OgreSDK\Addons\OgreNewt_(for_Ogre1.7.1)\lib\OgreNewt.dll) does not match the Linker's OutputFile property value (C:\OgreSDK\Addons\OgreNewt_(for_Ogre1.7.1)\lib\OgreNewt_d.dll). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile).
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(992,5): warning MSB8012: TargetName(OgreNewt) does not match the Linker's OutputFile property value (OgreNewt_d). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile).
1>LINK : fatal error LNK1181: cannot open input file 'JointLibrary_d.lib'
1>
1>Build FAILED.
1>
1>Time Elapsed 00:01:25.86
3>------ Rebuild All started: Project: Demo05_SimpleVehicle, Configuration: Debug Win32 ------
4>------ Rebuild All started: Project: MinimalOgreNewt, Configuration: Debug Win32 ------
3>Build started 09.08.2010 05:27:32.
3>_PrepareForClean:
3> Deleting file "..\obj\Debug\Demo05_SimpleVehicle\Demo05_SimpleVehicle.lastbuildstate".
4>Build started 09.08.2010 05:27:32.
4>_PrepareForClean:
4> Deleting file "..\obj\Debug\MinimalOgreNewt\MinimalOgreNewt.lastbuildstate".
4>InitializeBuildStatus:
4> Touching "..\obj\Debug\MinimalOgreNewt\MinimalOgreNewt.unsuccessfulbuild".
3>InitializeBuildStatus:
3> Touching "..\obj\Debug\Demo05_SimpleVehicle\Demo05_SimpleVehicle.unsuccessfulbuild".
3>ClCompile:
3> SimpleVehicle.cpp
4>PreBuildEvent:
4> The system cannot find the file specified.
4> 1 file(s) copied.
4> The system cannot find the path specified.
4> 0 file(s) copied.
4> The system cannot find the path specified.
4> 0 file(s) copied.
4> The system cannot find the path specified.
4> 0 file(s) copied.
4> The system cannot find the path specified.
4> 0 file(s) copied.
4> The system cannot find the path specified.
4> 0 file(s) copied.
4> 1 file(s) copied.
4> The system cannot find the file specified.
4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: The command "copy ..\..\lib\OgreNewt_d.dll .\OgreNewt_d.dll
4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073:
4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: if exist "C:\OgreSDK\Samples\Common\bin\Debug\OgreMain_d.dll" copy "C:\OgreSDK\Samples\Common\bin\Debug\OgreMain_d.dll" ".\OgreMain_d.dll"
4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: if exist "C:\OgreSDK\Samples\Common\bin\Debug\OIS_d.dll" copy "C:\OgreSDK\Samples\Common\bin\Debug\OIS_d.dll" ".\OIS_d.dll"
4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: if exist "C:\OgreSDK\Samples\Common\bin\Debug\Plugin_CgProgramManager_d.dll" copy "C:\OgreSDK\Samples\Common\bin\Debug\Plugin_CgProgramManager_d.dll" ".\Plugin_CgProgramManager_d.dll"
4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: if exist "C:\OgreSDK\Samples\Common\bin\Debug\RenderSystem_Direct3D9_d.dll" copy "C:\OgreSDK\Samples\Common\bin\Debug\RenderSystem_Direct3D9_d.dll" ".\RenderSystem_Direct3D9_d.dll"
4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: if exist "C:\OgreSDK\Samples\Common\bin\Debug\RenderSystem_GL_d.dll" copy "C:\OgreSDK\Samples\Common\bin\Debug\RenderSystem_GL_d.dll" ".\RenderSystem_GL_d.dll"
4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: if exist "C:\OgreSDK\Samples\Common\bin\Debug\cg.dll" copy "C:\OgreSDK\Samples\Common\bin\Debug\cg.dll" ".\cg.dll"
4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073:
4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: if exist "C:\OgreSDK\bin\debug\OgreMain_d.dll" copy "C:\OgreSDK\bin\debug\OgreMain_d.dll" ".\OgreMain_d.dll"
4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: if exist "C:\OgreSDK\bin\debug\OIS_d.dll" copy "C:\OgreSDK\bin\debug\OIS_d.dll" demos\bin\Debug\OIS_d.dll"
4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: if exist "C:\OgreSDK\bin\debug\Plugin_CgProgramManager_d.dll" copy "C:\OgreSDK\bin\debug\Plugin_CgProgramManager_d.dll" demos\bin\Debug\Plugin_CgProgramManager_d.dll"
4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: if exist "C:\OgreSDK\bin\debug\RenderSystem_Direct3D9_d.dll" copy "C:\OgreSDK\bin\debug\RenderSystem_Direct3D9_d.dll" demos\bin\Debug\RenderSystem_Direct3D9_d.dll"
4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: if exist "C:\OgreSDK\bin\debug\RenderSystem_GL_d.dll" copy "C:\OgreSDK\bin\debug\RenderSystem_GL_d.dll" demos\bin\Debug\RenderSystem_GL_d.dll"
4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: if exist "C:\OgreSDK\bin\debug\cg.dll" copy "C:\OgreSDK\bin\debug\cg.dll" demos\bin\Debug\cg.dll"
4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073:
4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: copy C:\OgreSDK\Addons\NewtonWin-2.24\sdk\x32\dll_vs9\newton.dll .\newton.dll
4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: copy C:\OgreSDK\Addons\NewtonWin-2.24\sdk\x32\JointLibrary_d.dll .\JointLibrary_d.dll
4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073:
4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: :VCEnd" exited with code 1.
4>
4>Build FAILED.
4>
4>Time Elapsed 00:00:01.07
5>------ Rebuild All started: Project: Demo09_PlayerController, Configuration: Debug Win32 ------
5>Build started 09.08.2010 05:27:34.
5>_PrepareForClean:
5> Deleting file "..\obj\Debug\Demo09_PlayerController\Demo09_PlayerController.lastbuildstate".
5>InitializeBuildStatus:
5> Touching "..\obj\Debug\Demo09_PlayerController\Demo09_PlayerController.unsuccessfulbuild".
5>ClCompile:
5> OgreNewtonFrameListener.cpp
5>C:\OgreSDK\include\OGRE\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
5> OgreNewtonApplication.cpp
3> OgreNewtonFrameListener.cpp
5>c:\ogresdk\include\ogre\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
5> demo09.cpp
3>C:\OgreSDK\include\OGRE\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
3> OgreNewtonApplication.cpp
5>c:\ogresdk\include\ogre\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
5> Generating Code...
5>
5>Build FAILED.
5>
5>Time Elapsed 00:01:00.53
6>------ Rebuild All started: Project: Demo07_CustomJoints, Configuration: Debug Win32 ------
6>Build started 09.08.2010 05:28:35.
6>_PrepareForClean:
6> Deleting file "..\obj\Debug\Demo07_CustomJoints\Demo07_CustomJoints.lastbuildstate".
6>InitializeBuildStatus:
6> Touching "..\obj\Debug\Demo07_CustomJoints\Demo07_CustomJoints.unsuccessfulbuild".
6>ClCompile:
6> OgreNewtonFrameListener.cpp
3>c:\ogresdk\include\ogre\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
3> demo05.cpp
6>C:\OgreSDK\include\OGRE\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
6> OgreNewtonApplication.cpp
3>c:\ogresdk\include\ogre\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
3> Generating Code...
3>
3>Build FAILED.
3>
3>Time Elapsed 00:01:31.81
7>------ Rebuild All started: Project: Demo06_SimpleBuoyancy, Configuration: Debug Win32 ------
7>Build started 09.08.2010 05:29:04.
7>_PrepareForClean:
7> Deleting file "..\obj\Debug\Demo06_SimpleBuoyancy\Demo06_SimpleBuoyancy.lastbuildstate".
7>InitializeBuildStatus:
7> Touching "..\obj\Debug\Demo06_SimpleBuoyancy\Demo06_SimpleBuoyancy.unsuccessfulbuild".
7>ClCompile:
7> OgreNewtonFrameListener.cpp
6>c:\ogresdk\include\ogre\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
6> MyCustomMotorizedHinge.cpp
7>C:\OgreSDK\include\OGRE\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
7> OgreNewtonApplication.cpp
6>MyCustomMotorizedHinge.cpp(22): warning C4305: 'initializing' : truncation from 'double' to 'Ogre::Real'
6> MyCustomBallSocket.cpp
6> demo07.cpp
7>c:\ogresdk\include\ogre\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
7> demo06.cpp
6>c:\ogresdk\include\ogre\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
6> Generating Code...
6>
6>Build FAILED.
6>
6>Time Elapsed 00:01:23.19
8>------ Rebuild All started: Project: Demo04_Raycasting, Configuration: Debug Win32 ------
8>Build started 09.08.2010 05:29:58.
8>_PrepareForClean:
8> Deleting file "..\obj\Debug\Demo04_Raycasting\Demo04_Raycasting.lastbuildstate".
8>InitializeBuildStatus:
8> Touching "..\obj\Debug\Demo04_Raycasting\Demo04_Raycasting.unsuccessfulbuild".
8>ClCompile:
8> OgreNewtonFrameListener.cpp
7>c:\ogresdk\include\ogre\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
7> Generating Code...
7>
7>Build FAILED.
7>
7>Time Elapsed 00:00:57.25
9>------ Rebuild All started: Project: Demo03_CollisionCallbacks, Configuration: Debug Win32 ------
9>Build started 09.08.2010 05:30:02.
9>_PrepareForClean:
9> Deleting file "..\obj\Debug\Demo03_CollisionCallbacks\Demo03_CollisionCallbacks.lastbuildstate".
9>InitializeBuildStatus:
9> Touching "..\obj\Debug\Demo03_CollisionCallbacks\Demo03_CollisionCallbacks.unsuccessfulbuild".
9>ClCompile:
9> OgreNewtonFrameListener.cpp
8>C:\OgreSDK\include\OGRE\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
8> OgreNewtonApplication.cpp
9>C:\OgreSDK\include\OGRE\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
9> OgreNewtonApplication.cpp
8>c:\ogresdk\include\ogre\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
8> demo04.cpp
9>c:\ogresdk\include\ogre\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
9> demo03.cpp
8>c:\ogresdk\include\ogre\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
8> Generating Code...
8>
8>Build FAILED.
8>
8>Time Elapsed 00:01:01.51
10>------ Rebuild All started: Project: Demo01_TheBasics, Configuration: Debug Win32 ------
10>Build started 09.08.2010 05:31:00.
10>_PrepareForClean:
10> Deleting file "..\obj\Debug\Demo01_TheBasics\Demo01_TheBasics.lastbuildstate".
10>InitializeBuildStatus:
10> Touching "..\obj\Debug\Demo01_TheBasics\Demo01_TheBasics.unsuccessfulbuild".
10>ClCompile:
10> OgreNewtonFrameListener.cpp
9>c:\ogresdk\include\ogre\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
9> ConveyorMatCallback.cpp
10>C:\OgreSDK\include\OGRE\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
10> OgreNewtonApplication.cpp
9> ConveyorBelt.cpp
10>c:\ogresdk\include\ogre\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
10> demo01.cpp
9> Generating Code...
9>
9>Build FAILED.
9>
9>Time Elapsed 00:02:07.56
11>------ Rebuild All started: Project: Demo02_Joints, Configuration: Debug Win32 ------
10>c:\ogresdk\include\ogre\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
11>Build started 09.08.2010 05:32:10.
11>_PrepareForClean:
11> Deleting file "..\obj\Debug\Demo02_Joints\Demo02_Joints.lastbuildstate".
10> Generating Code...
11>InitializeBuildStatus:
11> Touching "..\obj\Debug\Demo02_Joints\Demo02_Joints.unsuccessfulbuild".
11>ClCompile:
11> OgreNewtonFrameListener.cpp
10>
10>Build FAILED.
10>
10>Time Elapsed 00:01:11.85
11>C:\OgreSDK\include\OGRE\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
11> OgreNewtonApplication.cpp
11>c:\ogresdk\include\ogre\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
11> demo02.cpp
11>c:\ogresdk\include\ogre\ExampleFrameListener.h(51): fatal error C1083: Cannot open include file: 'OIS.h': No such file or directory
11> Generating Code...
11>
11>Build FAILED.
11>
11>Time Elapsed 00:00:45.26
========== Rebuild All: 0 succeeded, 11 failed, 0 skipped ==========


any help :S

kallaspriit

26-08-2010 14:31:50

Since 1.7, you also need OGRE_BUILD_HOME variable that points to the directory where you built Ogre, for example "D:\Ogre\build\VS9" in my machine.

Added Body::getMass(), Body::getInertia()
Some changes to casting, debugger and helper tools


Updated project files to use dJointLibrary instead of JointLibrary (renamed by Julio).

kallaspriit

26-08-2010 14:41:40

I'm not a moderator so I can't edit the first post of this topic nor make a sticky, but for anyone looking for the location of latest OgreNewt:

https://svn.ogre3d.org/svnroot/ogreaddons/branches/ogrenewt/newton20

Beauty

04-09-2010 23:18:07

Strange.
I know, Ogre switched to Mercurial. So I supposed, the add-ons repository also switched.
But this URL is looking like an SVN repository.
(I never looked to the source code - I just want to share my thoughts.)

kallaspriit

09-09-2010 18:20:15

Add-ons are still SVN as it seems.

Fixed node updating as reported by Nodrev in
viewtopic.php?f=4&t=13387

NIKIMC

10-09-2010 02:06:41

Since 1.7, you also need OGRE_BUILD_HOME variable that points to the directory where you built Ogre, for example "D:\Ogre\build\VS9" in my machine.

Added Body::getMass(), Body::getInertia()
Some changes to casting, debugger and helper tools


Updated project files to use dJointLibrary instead of JointLibrary (renamed by Julio).


I am using "OGRE 1.7.1 SDK for Visual C++ .Net 2010 (32-bit)" it means that I haven't compiled by my self,and I am using the SDK.

So question is,did I have to build ogre from source in order to use OgreNewt ,or just to put OGRE_BUILD_HOME environment variable on same path where is my ogre installed (think it was C:\OgreSDK)
?

kallaspriit

11-09-2010 10:29:05

The latter should work, let me know if you've got problems with it :)

NIKIMC

11-09-2010 14:08:57

as soon as I got my laptop back,I will continue with my work,and try if I can compile the project now.
Thanks
:)

kallaspriit

15-09-2010 11:58:16

I added the windows x32 lib and dll files to SVN, perhaps this saves compilation headaches for some people.

Also lets welcome SFCBias to the team, he now has committing privileges. Hope to see something good from him soon :)

SFCBias

18-09-2010 17:38:26

Renamed OgreNewt_Stdafx to reflect case sensitivity on Linux.
Also Added dCustomJoints and dMath includes to CMakeLists.txt.

I haven't got around to committing the OgreNewt Terrain changes because i ran across some bugs when creating the demo. So i'm going to look back into it and make sure the collision lines up. Also i have to make it so the OgreNewt Debugger can accurately show to collision. If I can't i may just give it its own little function.

NIKIMC

23-09-2010 19:59:29

To stop me and other like me all the time asking how to compile/use OgreNewt,can someone make a Video Tutorial and All of us Will be very happy with it.

Sorry For OfTopic

kallaspriit

24-09-2010 19:03:12

Is it really so difficult, it should compile out of the box if done as the install file says. What problems are you experiencing?

NIKIMC

25-09-2010 15:39:10

I have posted a video ,everything I am doing in VS 2010 and the problems I get,and I want to ask after compiling where should I copy .dll files and .lib files I get from OgreNewt,and did I have to copy the .dlls and .libs from Newton and bost

IlBrillanteJack

06-10-2010 12:23:38

Hi NIKIMC
sorry for my bad english, but I'm a beast with the languages.
If you remember I put a comment on your video on youtube, a month ago.
I solved the problem with this page: http://www.ogre3d.org/addonforums/viewtopic.php?f=4&t=11510&start=30
I followed the settings written by mvelazquezm (modified slightly)

I write below my current settings
OS -> Xp SP3
OgreSDK -> OgreSDK_vc10_v1-7-1
Newton -> NewtonWin-2.24
OgreNewt -> OgreNewt_(for_Ogre1.7.1).zip
IDE -> Visual C++ 2010 Express

Project Settings (Release):
C/C++ -> General


include
$(OGRE_HOME)\include
$(OGRE_HOME)\include\OIS
$(OGRE_HOME)\include\OGRE
$(OGRE_HOME)\Samples\Common\include
$(OGRE_HOME)\boost_1_42
$(NEWTON_HOME)/sdk
$(OGRENEWT_HOME)/inc

Linker -> General

$(OGRE_HOME)\lib\release (debug for Debug)
$(OGRE_HOME)\boost_1_42\lib
$(BOOST_HOME)/libs
$(NEWTON_HOME)/sdk/x32/dll_vs9
$(NEWTON_HOME)/sdk/x32
$(OGRENEWT_HOME)/lib

Linker -> input

OgreMain(_d).lib
OIS(_d).lib
newton.lib
OgreNewt(_d).lib

Please note

when you run your project don't forget to put the .dll (newton.dll dJointLibrary(_d).dll OgreNewt(_d).dll in Ogre folders: bin/debug bin/release)

Someone have problems with libboost_thread-vc100-mt-1_44.lib right?
I've download the liboost here: http://sourceforge.net/projects/boost/files/ and then added to the Ogre folder: boost_1_42

But there's bad news :?
When i run the project (copied code from this page: http://www.ogre3d.org/tikiwiki/OgreNewt+2) nothing happens, black screen!!! :shock:

I hope to be helpful for someone :)

NIKIMC

06-10-2010 15:26:27

Thanks a lot,I will check this now and btw I have read somewhere that there were a problems with compilling ogrenewt on VS2010 and to try with v.2008

Thanks again :)