NxOgre 0.4 RC1 Day 106 - Getting very close to release!

betajaen

28-06-2006 12:44:32

NxOgre development continues!

I have access (in some form) to a PC again, although it has 256 megs of RAM, and some of that is shared with an onboard Graphics chip. Although I get 10-20FPS, I can continue forward with it all.

These are the plans so far for 0.4:-

* Core features completed: Bodies, Shapes, Materials and Joints.
* NxTutorials 101-114, Completed.
* NxTutorials 201-End of Joints Completed.
* Replacement of Character Controller Demo.
* Replacement of Heightmap Demo.
* Introduce two versions of NxOgre; Standard source release, and the de facto preferred version with an Installer for use with the OgreSDK.

And much much more I have forgotten.

So, please post comments, a wish list of features, bug fixes, bug reports or anything, as I continue on with it. :D

anear

28-06-2006 13:32:28

I'd love to see a tutorial showing how to create a complex mesh shape (convex or pmap) with texture. Looking forward to it.

betajaen

28-06-2006 13:41:07

I'd love to see a tutorial showing how to create a complex mesh shape (convex or pmap) with texture. Looking forward to it.

Alright, I'll adjust the convex shape tutorial to include a really complex shape from a mesh file in the midst of the other little blue ones.

ColeZero

28-06-2006 13:41:36

Ragdoll, please, Ragdoll :D
And some joints that are not implementet yet.
And the Rope, would be cool, but it is not necessary ..
and maybe explosives, yes i think that all i wish.
If you can do that,i would be very happy^^. :D :D

betajaen

28-06-2006 13:57:56

Okay:

- Ragdolls are now on the list.
- Rope should be okay, I can use the debugging line class to draw the thin line to represent the rope, and use capsules and ball joints for the rope.
- Explosive should be easy. It's just forces in random directions. It can be implemented via an intersection (Which I have to put in anyway), or a trigger.

Gauntlet

28-06-2006 14:43:26

I agree with the above requests. Ragdolls would be great.

I would love to see a demo using PLSM-Plugin + NxOgre.
Aeh, will there be interface changes or was this planned for 0.5 I guess.

betajaen

28-06-2006 18:13:47

- PLSM I haven't really used at all, probably never. If anyone wants to do one, I'll help out with the heightmap mesh, and will include it but the PC I'm working on won't be able to do anything fancy like that anyway. But there is a height map demo used with terrain anyway planned which is a sequel to the character controller demo.

- The huge interface thing will be 0.6

wolfmanfx

28-06-2006 21:29:01

Yep it would be great to use PLSM2 for the HeightMap Demo.
If u could post a mini Tut on how to generate the heightmap.
I will give a try but dont forget that Ogrinal Heightmap will be splitted and there must be option to scale the heightmap cause u can scale the it in PLSM2 too.
The mesh that will generated will be hold on System Memory for collsion detection?

betajaen

28-06-2006 21:33:47

Day 1

Okay, I'd thought I would split this into days. Like the development diaries of King Kong.

Anyway, today I've split the tutorials up into "Completely Done" and "Not Completely Done". 8-9 are on the Completely done and the other 21 are not completely done. This varies from a simple convex shape fix to a full done class system (Ragdolls).

NxOgre, and the Tutorials now use a Environmental Path system, so when the SDK installer is finished, it'll create the Environmental Paths for NxOgre and PhysX for you. So for you guys, you can reference the NxOgre includes as so:

$(NXOGRE_DIR)/include/

I've also decided to start of with something light, so I'm working on Tutorial 117 - Intersections, which is able to get a list of bodies in a specific space for any type of use. It's a bit like a trigger (and you can attach code to it) but they are usually called now and again - Like raycasters.

Naturally the code to implement it in PhysX is around 20-30 lines, in typical NxOgre fashion I aim for 3. :D

betajaen

28-06-2006 21:40:13

Yep it would be great to use PLSM2 for the HeightMap Demo.
If u could post a mini Tut on how to generate the heightmap.
I will give a try but dont forget that Ogrinal Heightmap will be splitted and there must be option to scale the heightmap cause u can scale the it in PLSM2 too.
The mesh that will generated will be hold on System Memory for collsion detection?


According to the CVS, there is an implemented heightmap Shape which takes a greyscale image and turns it into a heightmap.


mScene->createStaticBody("hm","",new heightfieldShape("heightmap.png"),Vector3(0,0,0));


There is a tutorial about it (216) as well.

As I recall it has a scaling bug, but I assume that is an error on my part.

If you want to practise with that until I sort it out later with the dedicated heightmap shape which I recall Ageia implemented your more than welcome.

Wretched_Wyx

29-06-2006 10:24:25

Awesome, This is great news! I'm so exstatic, that I've gone and wet my pants several times in a row. I can't really think of much to add at this point (though I did throw in a few bits on the 0.6 release), but when/if I do, I'll be sure to make myself heard. Of course you know this by now...

betajaen

29-06-2006 23:08:09

Day2

Three things done today:-

- Intersection super-class system and spherical Intersections completed.
- Ground Shape created.
- Plane Shape created.

Intersections are simply a way of getting a list of bodies in a specific area, and doing something with them. Like the 117 Tutorial shows:


myIntersection = new intersection(new intersection::Sphere(Vector3(0,0,0),20), mScene);

int c = 0;

while(body* b = myIntersection->iterator->next()) {
std::cout << b->getName() << std::end;;
c++;
}

std::cout << "Number of bodies in a 20metre radius = " << c << std::endl;



This screenshot shows it:-



Also in that screen shot shows the groundShape plane class, which is a more flexible version of the floor allowing it to be in any direction and roughly in different positions.

I also put gravity in the X direction for added effect.


And last but not least the planeShape class, which creates a simple plane for anything to sit on:-


body *myPlane = mScene->createStaticBody("myPlane","",new planeShape(Vector2(4,4),1),Ogre::Vector3(-2,2,-2));


Shown in the following screenshot:-

rUmbl3

01-07-2006 19:46:51

are all those new features already up on CVS? would be very cool if we could use things like the planeshape now and don't have to wait for a full release ...

betajaen

01-07-2006 20:08:44

I'll do a CVS update one or twice a week, so I have the bugs ironed out a little and so I can surprise people now and again.

I have a stinker suprise right now, but I have to wait until that Tutorial is finished, but some people have been asking for this feature for a while now and now it exists ;)

betajaen

03-07-2006 21:40:13

Day 5 (I think) or is it 6?

Still developing, I'm just having some fun with the new features.

Age
Each body has an age now, which increased every simulation. Combined with the scene's new function "deleteBodiesOlder()", makes a nice clean up system.

FixedJoint

The FixedJoint is finally in.

Levitator
I've been working on the levitator; Which makes a body hovers, x metres of the ground. It works pretty well so far. Needs some serious work to tackle slopes so the front half of the body is higher than the back half. But I have a good demo planned for it.

Levitating camera
The Camera doesn't use the levitating system, but it uses it's own code in a Tutorial115;Physical Cameras and Material Aliases. So the camera will collide and move bodies now. (Only in that tutorial though).


Destructible Buildings!!
Just finished on the painstaking code for destructible buildings, although the code is a mixture of breakable fixed joints and cubes. It's so easy to set up, but so painfully hard to get every little part of the building correct.

The demo will be a simple building which you will be able to smash with a wrecking ball, individual parts of walls will break off, and even the joists and wood that holds up the walls, will break off too.

Other things
There are other things that I've forgotten that I've put in.

- Starting some work for planes of water, only real code and tutorials is an ODE buoyancy tutorial for Delphi (with no source!), so I may be a little slow on writing this one.

- Magura is going to hate me for this one, I've scrapped the existing vehicle code :P

Screenshots

As the PC is off, and I'm on the other side of the house, Tutorial 115; Physical Cameras is all you get. :D



Wretched_Wyx

04-07-2006 19:12:41

My oh my... Looks like Preview 4 is going to usher in some very nice new features. I love the idea of levitators, that's really cool. And fluids?! Finally! I've been wanting to play with fluids for awhile. I mean, not totally dynamic stuff, but even just a surface with buoyancy would be cool. The destructable structures sounds awesome. I can't wait to see all this in action!

betajaen

04-07-2006 21:07:55

Thanks Wyx.

Here is something to delight people, my attempt at fluids, using particles.



Don't go wow, because it doesn't work to great. I'm going to go back to my original idea and use triggers.

betajaen

06-07-2006 17:42:23

Day 7

Just been working on some extra code here and there. One major thing is the blueprint system, and "structures" or breakable bodies. (Structures are easier to type!).

So first I create a blueprint (a master copy of what a structure needs to be like). This structure will be a table, where each leg can break off.


blueprint<structure> myBlueprint;



Then add the main part of the structure. I call the main part - the Core. or the surface of the table.


myBlueprint.setCore("313.core.mesh", new cubeShape(Vector3(2,0.02,1.2),Vector3(0,0.6,0)),10);


Then add the breakable fragments (legs)


myBlueprint.addFragment("leg.1","313.leg.mesh",new cubeShape(Vector3(0.03,1.2,0.03),Vector3(0.8,0,0.4)),10);
myBlueprint.addFragment("leg.2","313.leg.mesh",new cubeShape(Vector3(0.03,1.2,0.03),Vector3(0.8,0,-0.4)),10);
myBlueprint.addFragment("leg.3","313.leg.mesh",new cubeShape(Vector3(0.03,1.2,0.03),Vector3(-0.8,0,-0.4)),10);
myBlueprint.addFragment("leg.4","313.leg.mesh",new cubeShape(Vector3(0.03,1.2,0.03),Vector3(-0.8,0,0.4)),10);


And since this is a blueprint, I can create one at will:-


structure *myTable = myBlueprint.create("Test",Vector3(0,10,0),mScene);


That's it!

The new vehicle system will use a very similar system too, i.e.


blueprint<vehicle> bp;
bp.setMesh("car.mesh");
bp.setMaxVelocity(300);
// and so on.
vehicle *myCar = bp.create("My Car",Vector3(0,10,0),mScene);



Sadly no screen-shots for this yet. I still have to get the objects break off.

Enjoy!

Wretched_Wyx

06-07-2006 20:25:03

Very, very cool. I like this system. Could blueprints be used for particle systems too? And speaking of particles, any plans to add-on to the system?

BlasterN

07-07-2006 00:24:50

I will make a human blow when have time and the code in my hands.

betajaen

08-07-2006 11:32:46

Day 9

More stuff been working on, including the new character controller system.

But this time the new height map shape with terrain.

The heightmap Shape is generated from the same image as the terrain so there is no conversions of anything here, just supply the size of the heightmap and the width of a pixel.



Obviously the vertices are wrong in this picture, but nothing to major :)

Wretched_Wyx

08-07-2006 12:46:52

Sheesh! Preview 4 is gonna be great... I can't wait. What exactly are you doing with the character controller? Heightmaps will be a great addition (or rather revival?). I wonder how many people have been watching this thread, I'm surprised there hasn't been a flood of comments...

ColeZero

08-07-2006 13:53:24

I wonder how many people have been watching this thread, I'm surprised there hasn't been a flood of comments...

Maybe they are speechless.....

This is going to be great...
i love the new terrain-thing, looks great.

Fluids are looking cool, but i think you better concentrate on the other things, like ragdoll or optimizing the code, removing bugs, etc.
Because the fluid-system is a nice thing, but i think its useless, unless you have a PhysX-Card.

betajaen

08-07-2006 18:40:39

Walking home just now, I figured out why the vertices are in the wrong position. The vertices don't start from 0,0, they start at -width,-height.

Well I think they do anyway.

@Wyx

Character controller system; Just upgrading them and stuff. FYI there will be TWO character controller tutorials, but one of them isn't an FPS....

@ColeZero

Ah, this is the thing that Fluid system was written by me! and it doesn't use a PhysX PPU.

And Ragdolls are on my list too.

ColeZero

08-07-2006 20:01:23

What? You write your own system? Great!!!
I've read that you are using particles for the fluid-effect, but i think that white balls doesn't look very realistic :D :D . So are you able to create a fluid-mesh? Or how can you make it looks more like water.

betajaen

08-07-2006 20:07:14

Don't go all girly now.

I'm going to write a fluid plane, no actual fluids itself, just a plane of water which bodies can float in.

I tried it using particles; linked together, and the borders as kinematics, it does work sort off, but behaves like a rubber sheet with holes.

So I'll be using a trigger instead.

betajaen

08-07-2006 22:24:12

Day 9 - Part Deux

We have height maps!!!

The code is so unbelievably simple you will cry:

First you have the code:

mScene->createStaticBody("heightmap","",new heightfieldShape("216.tga",32),Vector3(0,0,0));


216.tga being the image, and 32 being the maximum height (or scale).

Then you have an image (I know you can't see it to well, but it's there):



Then you have something that results like this (Courtesy of imageshack.us):





Bugs

Now before you demand me to update the CVS there is a bug, and some features I want to add.

First let's explain how the squares are made, each square is made from 4 vertices (shared by 6 of it's neighbours, unless your corners or edges). Like so:

x---x---x---x
| \ | \ | \ |
x---x---x---x
| \ | \ | \ |
x---x---x---x
| \ | \ | \ |
x---x---x---x


Now according to the Terrain Manager source code. It should be like this:

x---x---x---x
| / | / | / |
x---x---x---x
| \ | \ | \ |
x---x---x---x
| / | / | / |
x---x---x---x


Without that it is what produces an odd error:



So that's tomorrows job.


Things to add

- face-by-face materials, by using a second image and material aliases, so you can have grass, ice, rubber all on the same height map.

- Holes in the mesh. I don't know how it will behave if you tunnel through the map (most likely it'll put the body back on the top again), but Holes should be fairly simple to do.

- 16bit image support, so I can have 65535 things of precision rather than 255.

Standby for Day 10 tomorrow!

Wretched_Wyx

09-07-2006 09:25:06

Absolutely stunning... Your a mad-man! Keep this up, and your going to rule the physics world... Preview 4 is going to be a milestone release for sure.

rUmbl3

09-07-2006 13:39:00

the heightmap support is exactly what we need :) great stuff!
I hope you can fix the bugs fast and put the new files on cvs :)

betajaen

09-07-2006 14:23:12

the heightmap support is exactly what we need :) great stuff!
I hope you can fix the bugs fast and put the new files on cvs :)


The bug is sort of fixed, it seems to work better when you are using a higher scale, but when it's lower it's more noticeable. Oddly enough.

A CVS update should happen around mid next week...

rUmbl3

17-07-2006 11:39:52

one week gone and no update *sniffsniff* :(

but I hope it will happen soon :)

betajaen

17-07-2006 13:39:41

Oh I've been doing lots of things.

For example: there are 3 new shape classes, which between them can do around 20-30 different shapes (nShape, Platonic and Gear)

I'll do an screen shot post soon

:D

rUmbl3

17-07-2006 20:31:35

at least that sounds good :)

another cool feature would be the included loading of the .phs files scyte creates. I haven't tested the tool yet but it looks quite cool. As the source code of the standard integration is available it shouldn't be that hard to include that.

betajaen

17-07-2006 21:25:26

I've played with Scythe and unfortunately I don't want NxOgre to have a binary file format.

The NxScene XML file format is also going to go as well.

In my opinion XML is a terrible format for this sort of thing, it has so much mark up ,no real structure and you also need to know XML to use the format.

So I've written a YAML file format parser, and NxOgre will use YAML.

Now YAML is a text format (like XML) except I think it's way more readable, and much faster to parse.

This is a sample scene definition:


--- main
- body: myCube
pose: @0,3,0
mesh: cube.1m.mesh
collision: 1 m^3 cube
density: 10
- body: mySphere
pose: @4,3,0
mesh: sphere.50cm.mesh
collision: 50 cm sphere
density: 10
- body: myReallyComplexShape
pose: @4,3,0 Qv3 180,90,-90
mesh: complex.mesh
collision:
- cube: 2,3,4
pose: -3.2, 3, 10
material: metal
- sphere: 3
pose: 8.2, 2, 10
material: rubber
- capsule: 0.5,5
material: wood
density: 10



However when the "mdl" format comes around in 0.6, that text file will be 1/4 the size :)


p.s. There is a lot more added than 3 shape classes. I've just added hardware support for one thing. :D

betajaen

18-07-2006 00:06:58

For some proof of concept, and because I like the idea of a working toolchain.

I've been writing a PML (The XML format used with PhysX) to NxScene converter in Python for the last few hours:

This is a sample scene written in PML:

<?xml version="1.0"?>
<library id="myphysicsscene2" type="physics">
<scenedesc source="3dsmax">
<eye>-15.3093 -15.3093 12.5</eye>
<gravity>0.0 0.0 -10.0</gravity>
<groundplane>0.0 0.0 1.0 0.0</groundplane>
<lookat>-14.6969 -14.6969 12.0</lookat>
<up>0.0 0.0 1.0</up>
</scenedesc>
<physicsmodel id="main">
<rigidbody id="Sphere01">
<dynamic>1</dynamic>
<orientation>0.0 0.0 0.0 1.0</orientation>
<position>-2.88174 4.06123 1.00754</position>
<shape id="shape_Sphere01">
<orientation>0.0 0.0 0.0 1.0</orientation>
<geometry id="Sphere01_geom">
<sphere>
<radius>0.99743</radius>
</sphere>
</geometry>
</shape>
</rigidbody>
<rigidbody id="Box01">
<dynamic>1</dynamic>
<position>-3.15103 -2.7204 0.0</position>
<shape id="shape_Box01">
<orientation>0.0 0.0 0.0 1.0</orientation>
<position>0.0 0.0 0.906801</position>
<geometry id="Box01_geom">
<box>
<size>1.91436 1.71285 1.8136</size>
</box>
</geometry>
</shape>
</rigidbody>
<rigidbody id="groundplane">
<dynamic>0</dynamic>
<mass>0</mass>
<shape>
<geometry>
<plane>
<d>0</d>
<normal>0.0 0.0 1.0</normal>
</plane>
</geometry>
</shape>
</rigidbody>
</physicsmodel>
</library>


And this is as an NxScene YAML file using my converter:

--- myphysicsscene2
- body: Sphere01
pose:
- @ -2.88174 4.06123 1.00754
- # 0.0 0.0 0.0 1.0
collision:
- sphere: 0.99743

- body: Box01
pose: @ -3.15103 -2.7204 0.0
collision:
- cube: 1.91436 1.71285 1.8136

- static: groundplane
collision:
- plane:
normal: 0.0 0.0 1.0
distance: 0


Pretty readable I think. :D

p.s. Python is a really nice language to work with.

Wretched_Wyx

18-07-2006 00:28:51

Oh nice, a new friend for Noxy!

betajaen

26-07-2006 22:32:03

Day 28

Basic hardware support is up, running and tested!

Hardware scenes are really easy to setup, compared to software (which is default)


mWorld = new world(mRoot);

blueprint<scene> bp;

if (mWorld->hasHardware()) {
bp.setHardwareSimulation();
bp.setHardwareSimulationAsRigidBodies();
}

mScene = bp.create("Main",mSceneMgr);
mScene->hasGravity();
// And so on


Which produces very pretty results as so:





I've added over the last 20 odd days, billions of other little features too; Such as poses (a vector and quaternion class), starts of YAML scene loading, and much more.

betajaen

28-07-2006 23:49:12

Day 30

I've been slowly implementing fluids. Well it's pretty much lot's of PhysX code in a tutorial with very little changes to the NxOgre library itself.

However, I'm starting to understand it all. What bits make it crash and what bits it doesn't. PhysX is quite cryptic when you try and do something such as assigning groups into a Fluid Hardware scene and it crashes.

Oh well, I'm getting there, each of these mini yellow cubes is a fluid particle. When/If I manage to pull of some sort of nurbs/shader fluidy system instead of using the Ogre's particle system, it'll look a lot better. But trust me that's all fluids!



Wretched_Wyx

28-07-2006 23:57:09

Holy smoking rhino hooves! Bah. Now I really need to get a PPU. I can only imagine all the other stuff we'll be seeing now that you have a PPU to prototype and implement stuff with. Keep up the good work. Looks like next release is seriously going to rock.

betajaen

29-07-2006 23:41:02

Day 31

NxOgre now works properly with PhysX 2.3.3 and PhysX 2.4.4 now (recently released to the public)

There has been some changes to the documentation and tutorials, so I've upgraded the NxOgre tutorials to reflect this:



- The TODO suffix on the tutorials, is a reminder for me. Usually it ranges from: "Start the code of the tutorial" to "finish the meshes." For most of them it's in between.

- Anything that has x in the tutorial name, means that it's extended the PhysX feature, such as nShapes. Which is a custom convex shape class.

- Anything with x0 as a number, is a brand new feature that is NxOgre only.

- Also there is a few tidbits in there which I haven't mentioned yet. ;)

But don't worry. I intend to have at least 46 tutorials ready for Preview 4!

ColeZero

01-08-2006 11:08:58

Thats awesome, man.
Really you are the godmaster of PhysX in Ogre....
the physx guys should uprade your status to a licensed developer, not only a developer, no a licensed developer!!!^^

Wretched_Wyx

03-08-2006 01:56:00

Yes, I second this notion ColeZero- they *should* grant him a license. He certainly brings alot of attention to PhysX. And they do have their eye on NxOgre- they've even recommended it to people on the Ageia Support Forums.

Not to hi-jack this thread, but how are your NxOgre projects coming along ColeZero?

Back on topic, something tells me we will have an update on NxOgre Release 4 progress soon...

ColeZero

04-08-2006 17:28:33

Iam currently working with RakNet to use Ogre in Multiplayer, so iam working on project called "Warfare". I've asked the leader(Wehrwolf), if i could join the team.
This is going to be a multiplayer shooter with nxOgre for physics.
And the last weeks, i was going through the source nxOgre, seeing how it works..
But i do also work on my SciFi-Shooter with nxOgre, in the last weeks i worked on concept, what is that going to be? Whats the story? and so on..
So think that a concept is the most importend thing in game-creation.
Without a cleary concept of what to do, you're going to fall through..
The current name is Project-X...so it has no real name.^^

Back to topic, one great thing is, that betajean still work on nxogre with such an enthusiasm.
If've seen alot of programers, who stops programing with the first release, because they got bored of the project and they are all alone,so great job betajean..keep going..

betajaen

04-08-2006 19:12:14

It's cos I got nothing else to do! :wink:

betajaen

08-08-2006 11:12:59

Day 41

I've done a lot more work with NxOgre now, working on the terrain demo. And the TWO character controller demos.

The follow screenshots, will be a small part of the Inside (FPS style) character controller demo, where as the second character demo will be more WoW like (3rd person) in game play and genre. :wink:




rUmbl3

08-08-2006 14:25:12

looks really cool.
I am especially interessted in your new character code as i rewrote your own old code in some parts (added a little stamina system for example :))

hope you will release something soon (at least some smaller parts like the shapes)

Cutter

08-08-2006 20:32:59

great work, looking forward to the terrain demo :)

betajaen

09-08-2006 00:51:49

Day 41 - Evening

The Character controller system has been re-written.

First of all it uses the blueprint system, and has been upgraded to work both with the Box Controller and the Capsule controller. I'll be adding other aspects as swimming, flying, ladder control, etc.

And this is how to create one:-
blueprint<character> bp;
bp.setToDefault();
bp.setGravity(true);
bp.setShapeAsCapsule(0.4,1.2);
bp.setMesh("cube.1m.mesh");
Character* mPlayer = bp.create("myCharacter",Vector3(0,5,0),mScene);


As it uses the blueprint system. One of the most handiest features is the you can create another character, one after the other using the same blueprint. Which is handy for big battles like Rome Total War, or some sort of Stealth Game you have planned and you want to spawn 30 guards patrolling the compound.


So let's see some screenshots




Movie!

This is me just playing around with the camera and the character. You may notice it's in 3rd person. I've based it off what I think the World Of Warcraft camera behaves like (although I've never played it). Obviously you turn to the left or right, move up or down to appear or go underneath the camera (which slighty moves in closer at the top if you notice), and zoom control via the mouse wheel.

As this Tutorial is intended to be an FPS, this camera control will be moved to 605 which is the outside character controller demo which has terrain. You may have some idea what I have planned for it :)

Also, Gravity is a little harsh on this, and the character seems to be sprinting. I haven't re-implemented jump yet either. But still it's a very good movie!

You can watch this XVid 2.72MB movie from here (Which should be playable in VLC):

http://www.nxogre.org/screens/bp.character.avi

ColeZero

09-08-2006 01:18:48

Thats really cool, man, ok, so now you can upload the src to cvs-server?^^
i know, i know, i should wait, but i tell you, i can't.^^ :D

betajaen

09-08-2006 01:36:06

Alright, I will on Friday. That is the deadline. You can hunt me down and slap me with a large trout if I don't.

rUmbl3

09-08-2006 09:40:39

jipii :)

thats some real great news!
I am really looking forward to check out all the new, cool features.

Wretched_Wyx

09-08-2006 10:49:41

Awesome news. The new character controllers sound (and look) like they are going to rock. CVS on Friday you say? I almost hope you miss that deadline so I have an excuse to smack you with a trout :twisted:. But seriously, can't wait to mess with 0.4! I'm assuming a full stable/public release will be short to follow?

Keep up the good work!

ColeZero

09-08-2006 13:09:54

Jeah baby, jeah baby, jeah....^^
That are indeed good news.
Thx betajean, thats great.

betajaen

11-08-2006 12:37:33

Put down the fish, and slowly walk away.

Day 44

The CVS is up. I just uploaded it now and it takes a while for it to be "noticed" so download it in about a few hours time. Before you start running towards your CVS client, there is a warning:

If you don't know what CVS stands for, or you've been using Ogre or NxOgre for less than 2 weeks. STOP. Just use the previews for now. This version of NxOgre has a lot more features and interface changes than any release before. Infact I'm not going to give you a link. It's a test to see if you can get it, then you are experienced enough to use it.

Magua you may want to hold off. I took out the vehicle code. However if you are that daring, just copy the old vehicle code over. It should work.


Rough release notes

- 4 months of work.
- Works with 2.4.4 and 2.3.x
- NxTutorials have been completely expanded and rewritten, There are 45 tutorials now.
- Vehicle code being rewritten
- Character code being rewritten
- Ragdoll code being rewritten
- "pose" class implemented, replacement for Vectors and Quaternions. (Combines them together.). All bodies and Shapes use this now as a method of location and orientations. However it won't break anything as it's fairly transparent.
- TinyXML removed and being replaced with Camel.
- Lots of bug fixes
- Lots of new shapes implemented, nShapes (cylinders), gears, planes, ground, heightfields (VERY buggy) and platonics
- Fluids being implemented
- Blueprint system implemented
- Intersections being implemented.

Media and resources.cfg

AND LOTS AND LOTS MORE.

This is a serious work in progress.

[Edit]

If anyone uses Visual Studio 2003, I haven't updated the project files for them. So you'll have to convert the 2005 ones over manually.

Wretched_Wyx

11-08-2006 12:55:13

Yessssss! Thanks a bunch man!

*Fires up Tortoise*

rUmbl3

11-08-2006 13:34:40

jipii!! Thats really great ... i will immediately check it out and test it :)

big thanks to mr. nxogre, betajaen ;)

M@gg!

11-08-2006 14:12:36

You are the greatest!

I'm using nxOgre since 4 days, may I download it eather? ;-)

betajaen

11-08-2006 14:25:44

Only if you promise not to look at any of the naughty bits :P

betajaen

11-08-2006 14:52:24

Okay, I realised that some people may have problems with the include and library bits. So you have to set the environmental variables.

These are:

NXOGRE_DIR
z:\NxOgre\ (the directory with src/, include/ in)

OGRE_HOME
z:\ogrenew\OgreMain

PHYSX_DIR
z:\PhysX (the directory with bin/, graphics/ in)


Most likely you will need to reset your computer for it to work.

Also:
If you use the source version of Ogre than the library, you will need to copy the contents of OgreMain/lib/Release to OgreMain/lib/

Wretched_Wyx

11-08-2006 17:43:16

Yes, I had to restart after doing the above. After that, all was good. All tutorials compiled (except 304 I think), and I've started to implement NxOgre back into AVEngine. Awesome work!

ColeZero

12-08-2006 14:14:05

Wow, nice release, thx betajean for this release...
BUt i won't use this cvs-version for my project, because i think its a little buggy. i am going to test this version alot.^^
But think i wait for an "official" release.
Anyway thanks betajean..

BlasterN

13-08-2006 15:43:34

I found a problem in the CVS version.

You need to add these files to the solution.

nxOgre_structure.h
nxOgre_structure.cpp
nxOgre_intersection.h
nxOgre_intersection.cpp
nxOgre_fluid.h
nxOgre_fluid.cpp


That solve linking erroes.


THX! beatjean, waiting the official release, meanwhile I will work with the CVS.

SONB

13-08-2006 16:01:52

I've got a problem with the CVS version.

I tried to implement the code from the tutorial 606 (character controller), and my capsule falls through the ground. But if I make the radius bigger than it is in the tutorial (about 6.0) then it stays on the ground.


Any suggestions?


::SONB::

betajaen

13-08-2006 17:15:59

BlasterN

That's Odd. Are you using Visual Studio 2003?


SONB

Character controllers can't work with groundShapes, use a static body with a large cube shape instead (1024,0.1,1024) or a meshShape.

BlasterN

13-08-2006 17:35:08

Now nxOgre compile but... crash even the samples :?

all samples and my app crash here:
nxogre_scene.cpp Line 78
mScene = mPhysicsSDK->createScene(sceneDescription);

Ogre.log
18:45:38: [NxOgre] NxOgre Log started.
18:45:38: [NxOgre] Starting up PhysX SDK
18:45:38: [NxOgre] Unable to start PhysX SDK!
18:45:38: [NxOgre] Creating scene 'myScene'.



Physx: 2.4.4
Ogre 1.2.1 ( I will update it now, today is the day to update all libraries )
nxOgre CVS (downloaded today )

nxOgre downloaded with this command line:
cvs -z3 -d :pserver:anonymous@nxogre.cvs.sourceforge.net:/cvsroot/nxogre login
cvs -z3 -d :pserver:anonymous@nxogre.cvs.sourceforge.net:/cvsroot/nxogre co nxogre


The new nxOgre is in "nxogre" module ?
nxOgre require Physx hardware now ?

SONB

13-08-2006 17:35:43

Hmm..

It works with meshShape, but with cubeShape it falls through..

betajaen

13-08-2006 18:14:36

BlasterN

No, NxOgre doesn't need the hardware it just supports it. I suggest you re-download the CVS and try again. However it sounds like a PhysX issue to me, try updating it or reinstalling the PhysX SystemSoftware

SONB

Try a box controller see if that works. But I'm pretty sure I've had the capsule controller working on cubes.

BlasterN

13-08-2006 18:36:37

betajaen you was right, I update the SystemSoftware to the latest version and all is OK now, even the crashes at the end of the program !!

THX!

betajaen

13-08-2006 21:02:14

betajaen you was right, I update the SystemSoftware to the latest version and all is OK now, even the crashes at the end of the program !!

There you go. On Windows re-installing fixes everything ;)

Glad it works out for you, enjoy!

M@gg!

14-08-2006 09:46:04

Hi,

I've got a strange error during compiling. Does anybody know a solution for it?

------ Build started: Project: nxOgre, Configuration: Release Win32 ------
Compiling...
nxPrefab_vehicle.cpp
nxPrefab_rope.cpp
..\..\..\src\nxPrefab_rope.cpp(102) : warning C4018: '<' : signed/unsigned mismatch
nxPrefab_ragdoll.cpp
nxPrefab_prefab.cpp
nxPrefab_levitator.cpp
nxPrefab_explosive.cpp
nxOgre_world.cpp
nxOgre_util_stream.cpp
nxOgre_trigger.cpp
nxOgre_structure.cpp
nxOgre_stateMachine.cpp
nxOgre_shape.cpp
..\..\..\src\nxOgre_shape.cpp(626) : warning C4018: '<' : signed/unsigned mismatch
..\..\..\src\nxOgre_shape.cpp(627) : warning C4018: '<' : signed/unsigned mismatch
..\..\..\src\nxOgre_shape.cpp(685) : warning C4018: '<' : signed/unsigned mismatch
nxOgre_serialiser.cpp
nxOgre_scene.cpp
nxOgre_rayCaster.cpp
nxOgre_pose.cpp
nxOgre_particleEmitter.cpp
nxOgre_material.cpp
nxOgre_joint.cpp
nxOgre_intersection.cpp
Compiling...
nxOgre_group.cpp
nxOgre_fluid.cpp
nxOgre_debugNode.cpp
nxOgre_controllable.cpp
nxOgre_contactReporter.cpp
nxOgre_character.cpp
nxOgre_body.cpp
..\..\..\src\nxOgre_body.cpp(108) : warning C4018: '<' : signed/unsigned mismatch
..\..\..\src\nxOgre_body.cpp(172) : warning C4018: '<' : signed/unsigned mismatch
Linking...
Creating library C:\Programmieren\Komposition NxOgra + Ogre + PhysX\NxOgre\scripts\VC8\../../lib/Release/nxOgre.lib and object C:\Programmieren\Komposition NxOgra + Ogre + PhysX\NxOgre\scripts\VC8\../../lib/Release/nxOgre.exp
Generating code
Finished generating code
Embedding manifest...
Performing Post-Build Event...
Das System kann den angegebenen Pfad nicht finden.
0 Datei(en) kopiert.
Project : error PRJ0019: A tool returned an error code from "Performing Post-Build Event..."
Build log was saved at "file://c:\Programmieren\Komposition NxOgra + Ogre + PhysX\NxOgre\scripts\VC8\NxOgre\obj\Release\BuildLog.htm"
nxOgre - 1 error(s), 6 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

betajaen

14-08-2006 10:29:50

You probably haven't created the directory "bin" in NxOgre/ and inside that "release"

Thats where all the compiled tutorials go in to.

M@gg!

14-08-2006 11:01:56

You were right. I forgot about that! Thx a lot.

Now it compiles fine and my program runs, but I got a new problem.

I'm moving a body through the scene by pusing it with addForce. In the old version it worked but now the body does not move an inch.


nxOgre::body *myBody = scene->createBody(_name, "body.mesh", new nxOgre::cubeShape(Ogre::Vector3(2.0,0.1,2.0)),
10.0f, Ogre::Vector3(0, 0, 0));


void Player::moveBody(Ogre::Vector3 _transl)
{
nxOgre::scene *scene = nxOgre::world::getSingleton().getScene("Main");
nxOgre::body *body = scene->findBody(mName);

body->addForce(_transl * 80, NX_FORCE );

}

betajaen

14-08-2006 11:44:50

I have two ideas:

- The force could not be enough. This is usually the problem.
- The body is stuck in the ground (it is at 0,0,0)


Also, I would not use the findBody code like that. It will seriously reduce your frame rate if your doing that at every frame, as it loops through the body vector just to find it.

Just store a copy of the body pointer somewhere and do it that way.

M@gg!

14-08-2006 23:12:20

- The body is stuck in the ground (it is at 0,0,0)

I'm still not shure if this is the reason, because it worked in the old version. In the meantime I have rewritten huge parts of the code and first have to fix some other problems so I can't retest it at the moment.


Also, I would not use the findBody code like that. It will seriously reduce your frame rate if your doing that at every frame, as it loops through the body vector just to find it.


Yes, you are right. When I wrote this, I was was in a hurry.

mnm23

15-08-2006 14:13:37

Hey guys. Hows it going. I am having a problem with the recent CVS.

I can compile the NxOgre solution but when i try to compile any of the tutorials it gives me this error.

1>Linking...
1>LINK : fatal error LNK1181: cannot open input file '.\Release\102.obj'
1>Project : warning PRJ0018 : The following environment variables were not found:
1>$(NXOGRE_DIR)
1>$(PHYSX_DIR)
1>Build log was saved at "file://c:\NxOgre\scripts\VC8\NxTutorials\Release\BuildLog.htm"
1>102.Sphere and Torque - 1 error(s), 0 warning(s)


I have the directories labeld as they should be as you can see by where it saved the build log. Also when i try to compile the work i was doing with the previous version of nxOgre i get this error.

1>Compiling...
1>MenuState.cpp
1>c:\nxogre\include\nxOgre_includes.h(185) : error C2143: syntax error : missing '}' before '('
1>c:\nxogre\include\nxOgre_includes.h(185) : error C2059: syntax error : '<L_TYPE_raw>'
1>c:\nxogre\include\nxOgre_includes.h(187) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_includes.h(187) : error C2238: unexpected token(s) preceding ';'
1>c:\nxogre\include\nxOgre_includes.h(187) : warning C4094: untagged 'struct' declared no symbols
1>c:\nxogre\include\nxOgre_includes.h(189) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\nxogre\include\nxOgre_includes.h(229) : error C2143: syntax error : missing ';' before '*'
1>c:\nxogre\include\nxOgre_includes.h(229) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\nxogre\include\nxOgre_includes.h(229) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\nxogre\include\nxOgre_includes.h(235) : error C2059: syntax error : '}'
1>c:\nxogre\include\nxOgre_includes.h(235) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_includes.h(235) : error C2059: syntax error : '}'
1>c:\nxogre\include\nxOgre_converters.h(43) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_converters.h(43) : error C2447: '{' : missing function header (old-style formal list?)
1>c:\nxogre\include\nxOgre_stateMachine.h(54) : error C2143: syntax error : missing '}' before '('
1>c:\nxogre\include\nxOgre_stateMachine.h(54) : error C2059: syntax error : '<L_TYPE_raw>'
1>c:\nxogre\include\nxOgre_stateMachine.h(55) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_stateMachine.h(55) : error C2238: unexpected token(s) preceding ';'
1>c:\nxogre\include\nxOgre_stateMachine.h(63) : error C2433: 'stateMachine' : 'friend' not permitted on data declarations
1>c:\nxogre\include\nxOgre_stateMachine.h(63) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\nxogre\include\nxOgre_stateMachine.h(68) : error C2061: syntax error : identifier 'body'
1>c:\nxogre\include\nxOgre_stateMachine.h(74) : error C2143: syntax error : missing '}' before '('
1>c:\nxogre\include\nxOgre_stateMachine.h(74) : error C2059: syntax error : '<L_TYPE_raw>'
1>c:\nxogre\include\nxOgre_stateMachine.h(75) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_stateMachine.h(75) : error C2238: unexpected token(s) preceding ';'
1>c:\nxogre\include\nxOgre_stateMachine.h(77) : error C2059: syntax error : '}'
1>c:\nxogre\include\nxOgre_stateMachine.h(77) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_stateMachine.h(77) : error C2059: syntax error : '}'
1>c:\nxogre\include\nxOgre_stateMachine.h(78) : error C2059: syntax error : '}'
1>c:\nxogre\include\nxOgre_stateMachine.h(78) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_stateMachine.h(78) : error C2059: syntax error : '}'
1>c:\nxogre\include\nxOgre_body.h(29) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_body.h(29) : error C2447: '{' : missing function header (old-style formal list?)
1>c:\nxogre\include\nxOgre_scene.h(263) : error C3083: 'Prefabs': the symbol to the left of a '::' must be a type
1>c:\nxogre\include\nxOgre_scene.h(263) : error C2039: 'prefab' : is not a member of 'nxOgre'
1>c:\nxogre\include\nxOgre_scene.h(263) : error C2065: 'prefab' : undeclared identifier
1>c:\nxogre\include\nxOgre_scene.h(263) : error C2059: syntax error : '>'
1>c:\nxogre\include\nxOgre_scene.h(289) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_scene.h(291) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(28) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(30) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(33) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(35) : error C2065: 'STATE_TRIGGER' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(37) : error C2065: 'STAGE_TRIGGER' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(37) : error C2143: syntax error : missing ',' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(37) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(50) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(53) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(57) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(59) : error C2065: 'ASSIGN_ENTER' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(60) : error C2065: 'ASSIGN_EXIT' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(61) : error C2065: 'CLEAR_ENTER' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(63) : error C2065: 'CLEAR_EXIT' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(63) : error C2143: syntax error : missing ',' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(63) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2146: syntax error : missing ',' before identifier '_shape'
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2065: '_shape' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2146: syntax error : missing ',' before identifier '_scene'
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2065: '_scene' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2027: use of undefined type 'nxOgre::stateTrigger'
1> c:\nxogre\include\nxOgre_includes.h(88) : see declaration of 'nxOgre::stateTrigger'
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2065: 'assignTypes' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2146: syntax error : missing ',' before identifier '_type'
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2065: '_type' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2027: use of undefined type 'nxOgre::stateTrigger'
1> c:\nxogre\include\nxOgre_includes.h(88) : see declaration of 'nxOgre::stateTrigger'
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2065: 'ASSIGN_ENTER_CLEAR_EXIT' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2143: syntax error : missing ',' before ')'
1>c:\nxogre\include\nxOgre_trigger.h(81) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(88) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(92) : error C2146: syntax error : missing ',' before identifier '_shape'
1>c:\nxogre\include\nxOgre_trigger.h(92) : error C2146: syntax error : missing ',' before identifier '_scene'
1>c:\nxogre\include\nxOgre_trigger.h(92) : error C2143: syntax error : missing ',' before ')'
1>c:\nxogre\include\nxOgre_trigger.h(101) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(102) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(104) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(106) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_stage.h(29) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_stage.h(54) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_stage.h(62) : error C2275: 'nxOgre::scene' : illegal use of this type as an expression
1>c:\nxogre\include\nxOgre_stage.h(62) : error C2146: syntax error : missing ',' before identifier '_shape'
1>c:\nxogre\include\nxOgre_stage.h(62) : error C2146: syntax error : missing ',' before identifier '_pos'
1>c:\nxogre\include\nxOgre_stage.h(62) : error C2065: '_pos' : undeclared identifier
1>c:\nxogre\include\nxOgre_stage.h(62) : error C2143: syntax error : missing ',' before ')'
1>c:\nxogre\include\nxOgre_stage.h(76) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_stage.h(78) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_group.h(28) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_group.h(31) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_group.h(45) : error C2146: syntax error : missing ',' before identifier '_scene'
1>c:\nxogre\include\nxOgre_group.h(45) : error C2143: syntax error : missing ',' before ')'
1>c:\nxogre\include\nxOgre_group.h(51) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_group.h(53) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_structure.h(31) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_structure.h(35) : error C2934: 'nxOgre::blueprint<T>' : template-class-id redefined as a nested 'class' of 'nxOgre::scene'
1> with
1> [
1> T=nxOgre::structure
1> ]
1>c:\nxogre\include\nxOgre_structure.h(89) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_structure.h(96) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_structure.h(100) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_structure.h(104) : error C2146: syntax error : missing ',' before identifier 'bp'
1>c:\nxogre\include\nxOgre_structure.h(104) : error C2065: 'bp' : undeclared identifier
1>c:\nxogre\include\nxOgre_structure.h(104) : error C2146: syntax error : missing ',' before identifier '_scene'
1>c:\nxogre\include\nxOgre_structure.h(104) : error C2143: syntax error : missing ',' before ')'
1>c:\nxogre\include\nxOgre_structure.h(106) : error C2065: 'fragment' : undeclared identifier
1>c:\nxogre\include\nxOgre_structure.h(106) : error C2059: syntax error : '>'
1>c:\nxogre\include\nxOgre_structure.h(107) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_structure.h(109) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_joint.h(28) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_joint.h(80) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_joint.h(85) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_joint.h(85) : fatal error C1003: error count exceeds 100; stopping compilation
1>LevelState.cpp
1>c:\nxogre\include\nxOgre_includes.h(185) : error C2143: syntax error : missing '}' before '('
1>c:\nxogre\include\nxOgre_includes.h(185) : error C2059: syntax error : '<L_TYPE_raw>'
1>c:\nxogre\include\nxOgre_includes.h(187) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_includes.h(187) : error C2238: unexpected token(s) preceding ';'
1>c:\nxogre\include\nxOgre_includes.h(187) : warning C4094: untagged 'struct' declared no symbols
1>c:\nxogre\include\nxOgre_includes.h(189) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\nxogre\include\nxOgre_includes.h(229) : error C2143: syntax error : missing ';' before '*'
1>c:\nxogre\include\nxOgre_includes.h(229) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\nxogre\include\nxOgre_includes.h(229) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\nxogre\include\nxOgre_includes.h(235) : error C2059: syntax error : '}'
1>c:\nxogre\include\nxOgre_includes.h(235) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_includes.h(235) : error C2059: syntax error : '}'
1>c:\nxogre\include\nxOgre_converters.h(43) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_converters.h(43) : error C2447: '{' : missing function header (old-style formal list?)
1>c:\nxogre\include\nxOgre_stateMachine.h(54) : error C2143: syntax error : missing '}' before '('
1>c:\nxogre\include\nxOgre_stateMachine.h(54) : error C2059: syntax error : '<L_TYPE_raw>'
1>c:\nxogre\include\nxOgre_stateMachine.h(55) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_stateMachine.h(55) : error C2238: unexpected token(s) preceding ';'
1>c:\nxogre\include\nxOgre_stateMachine.h(63) : error C2433: 'stateMachine' : 'friend' not permitted on data declarations
1>c:\nxogre\include\nxOgre_stateMachine.h(63) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\nxogre\include\nxOgre_stateMachine.h(68) : error C2061: syntax error : identifier 'body'
1>c:\nxogre\include\nxOgre_stateMachine.h(74) : error C2143: syntax error : missing '}' before '('
1>c:\nxogre\include\nxOgre_stateMachine.h(74) : error C2059: syntax error : '<L_TYPE_raw>'
1>c:\nxogre\include\nxOgre_stateMachine.h(75) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_stateMachine.h(75) : error C2238: unexpected token(s) preceding ';'
1>c:\nxogre\include\nxOgre_stateMachine.h(77) : error C2059: syntax error : '}'
1>c:\nxogre\include\nxOgre_stateMachine.h(77) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_stateMachine.h(77) : error C2059: syntax error : '}'
1>c:\nxogre\include\nxOgre_stateMachine.h(78) : error C2059: syntax error : '}'
1>c:\nxogre\include\nxOgre_stateMachine.h(78) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_stateMachine.h(78) : error C2059: syntax error : '}'
1>c:\nxogre\include\nxOgre_body.h(29) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_body.h(29) : error C2447: '{' : missing function header (old-style formal list?)
1>c:\nxogre\include\nxOgre_scene.h(263) : error C3083: 'Prefabs': the symbol to the left of a '::' must be a type
1>c:\nxogre\include\nxOgre_scene.h(263) : error C2039: 'prefab' : is not a member of 'nxOgre'
1>c:\nxogre\include\nxOgre_scene.h(263) : error C2065: 'prefab' : undeclared identifier
1>c:\nxogre\include\nxOgre_scene.h(263) : error C2059: syntax error : '>'
1>c:\nxogre\include\nxOgre_scene.h(289) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_scene.h(291) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(28) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(30) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(33) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(35) : error C2065: 'STATE_TRIGGER' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(37) : error C2065: 'STAGE_TRIGGER' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(37) : error C2143: syntax error : missing ',' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(37) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(50) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(53) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(57) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(59) : error C2065: 'ASSIGN_ENTER' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(60) : error C2065: 'ASSIGN_EXIT' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(61) : error C2065: 'CLEAR_ENTER' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(63) : error C2065: 'CLEAR_EXIT' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(63) : error C2143: syntax error : missing ',' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(63) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2146: syntax error : missing ',' before identifier '_shape'
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2065: '_shape' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2146: syntax error : missing ',' before identifier '_scene'
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2065: '_scene' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2027: use of undefined type 'nxOgre::stateTrigger'
1> c:\nxogre\include\nxOgre_includes.h(88) : see declaration of 'nxOgre::stateTrigger'
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2065: 'assignTypes' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2146: syntax error : missing ',' before identifier '_type'
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2065: '_type' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2027: use of undefined type 'nxOgre::stateTrigger'
1> c:\nxogre\include\nxOgre_includes.h(88) : see declaration of 'nxOgre::stateTrigger'
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2065: 'ASSIGN_ENTER_CLEAR_EXIT' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2143: syntax error : missing ',' before ')'
1>c:\nxogre\include\nxOgre_trigger.h(81) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(88) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(92) : error C2146: syntax error : missing ',' before identifier '_shape'
1>c:\nxogre\include\nxOgre_trigger.h(92) : error C2146: syntax error : missing ',' before identifier '_scene'
1>c:\nxogre\include\nxOgre_trigger.h(92) : error C2143: syntax error : missing ',' before ')'
1>c:\nxogre\include\nxOgre_trigger.h(101) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(102) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(104) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(106) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_stage.h(29) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_stage.h(54) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_stage.h(62) : error C2275: 'nxOgre::scene' : illegal use of this type as an expression
1>c:\nxogre\include\nxOgre_stage.h(62) : error C2146: syntax error : missing ',' before identifier '_shape'
1>c:\nxogre\include\nxOgre_stage.h(62) : error C2146: syntax error : missing ',' before identifier '_pos'
1>c:\nxogre\include\nxOgre_stage.h(62) : error C2065: '_pos' : undeclared identifier
1>c:\nxogre\include\nxOgre_stage.h(62) : error C2143: syntax error : missing ',' before ')'
1>c:\nxogre\include\nxOgre_stage.h(76) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_stage.h(78) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_group.h(28) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_group.h(31) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_group.h(45) : error C2146: syntax error : missing ',' before identifier '_scene'
1>c:\nxogre\include\nxOgre_group.h(45) : error C2143: syntax error : missing ',' before ')'
1>c:\nxogre\include\nxOgre_group.h(51) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_group.h(53) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_structure.h(31) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_structure.h(35) : error C2934: 'nxOgre::blueprint<T>' : template-class-id redefined as a nested 'class' of 'nxOgre::scene'
1> with
1> [
1> T=nxOgre::structure
1> ]
1>c:\nxogre\include\nxOgre_structure.h(89) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_structure.h(96) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_structure.h(100) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_structure.h(104) : error C2146: syntax error : missing ',' before identifier 'bp'
1>c:\nxogre\include\nxOgre_structure.h(104) : error C2065: 'bp' : undeclared identifier
1>c:\nxogre\include\nxOgre_structure.h(104) : error C2146: syntax error : missing ',' before identifier '_scene'
1>c:\nxogre\include\nxOgre_structure.h(104) : error C2143: syntax error : missing ',' before ')'
1>c:\nxogre\include\nxOgre_structure.h(106) : error C2065: 'fragment' : undeclared identifier
1>c:\nxogre\include\nxOgre_structure.h(106) : error C2059: syntax error : '>'
1>c:\nxogre\include\nxOgre_structure.h(107) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_structure.h(109) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_joint.h(28) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_joint.h(80) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_joint.h(85) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_joint.h(85) : fatal error C1003: error count exceeds 100; stopping compilation
1>IntroState.cpp
1>c:\nxogre\include\nxOgre_includes.h(185) : error C2143: syntax error : missing '}' before '('
1>c:\nxogre\include\nxOgre_includes.h(185) : error C2059: syntax error : '<L_TYPE_raw>'
1>c:\nxogre\include\nxOgre_includes.h(187) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_includes.h(187) : error C2238: unexpected token(s) preceding ';'
1>c:\nxogre\include\nxOgre_includes.h(187) : warning C4094: untagged 'struct' declared no symbols
1>c:\nxogre\include\nxOgre_includes.h(189) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\nxogre\include\nxOgre_includes.h(229) : error C2143: syntax error : missing ';' before '*'
1>c:\nxogre\include\nxOgre_includes.h(229) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\nxogre\include\nxOgre_includes.h(229) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\nxogre\include\nxOgre_includes.h(235) : error C2059: syntax error : '}'
1>c:\nxogre\include\nxOgre_includes.h(235) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_includes.h(235) : error C2059: syntax error : '}'
1>c:\nxogre\include\nxOgre_converters.h(43) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_converters.h(43) : error C2447: '{' : missing function header (old-style formal list?)
1>c:\nxogre\include\nxOgre_stateMachine.h(54) : error C2143: syntax error : missing '}' before '('
1>c:\nxogre\include\nxOgre_stateMachine.h(54) : error C2059: syntax error : '<L_TYPE_raw>'
1>c:\nxogre\include\nxOgre_stateMachine.h(55) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_stateMachine.h(55) : error C2238: unexpected token(s) preceding ';'
1>c:\nxogre\include\nxOgre_stateMachine.h(63) : error C2433: 'stateMachine' : 'friend' not permitted on data declarations
1>c:\nxogre\include\nxOgre_stateMachine.h(63) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\nxogre\include\nxOgre_stateMachine.h(68) : error C2061: syntax error : identifier 'body'
1>c:\nxogre\include\nxOgre_stateMachine.h(74) : error C2143: syntax error : missing '}' before '('
1>c:\nxogre\include\nxOgre_stateMachine.h(74) : error C2059: syntax error : '<L_TYPE_raw>'
1>c:\nxogre\include\nxOgre_stateMachine.h(75) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_stateMachine.h(75) : error C2238: unexpected token(s) preceding ';'
1>c:\nxogre\include\nxOgre_stateMachine.h(77) : error C2059: syntax error : '}'
1>c:\nxogre\include\nxOgre_stateMachine.h(77) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_stateMachine.h(77) : error C2059: syntax error : '}'
1>c:\nxogre\include\nxOgre_stateMachine.h(78) : error C2059: syntax error : '}'
1>c:\nxogre\include\nxOgre_stateMachine.h(78) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_stateMachine.h(78) : error C2059: syntax error : '}'
1>c:\nxogre\include\nxOgre_body.h(29) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_body.h(29) : error C2447: '{' : missing function header (old-style formal list?)
1>c:\nxogre\include\nxOgre_scene.h(263) : error C3083: 'Prefabs': the symbol to the left of a '::' must be a type
1>c:\nxogre\include\nxOgre_scene.h(263) : error C2039: 'prefab' : is not a member of 'nxOgre'
1>c:\nxogre\include\nxOgre_scene.h(263) : error C2065: 'prefab' : undeclared identifier
1>c:\nxogre\include\nxOgre_scene.h(263) : error C2059: syntax error : '>'
1>c:\nxogre\include\nxOgre_scene.h(289) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_scene.h(291) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(28) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(30) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(33) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(35) : error C2065: 'STATE_TRIGGER' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(37) : error C2065: 'STAGE_TRIGGER' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(37) : error C2143: syntax error : missing ',' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(37) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(50) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(53) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(57) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(59) : error C2065: 'ASSIGN_ENTER' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(60) : error C2065: 'ASSIGN_EXIT' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(61) : error C2065: 'CLEAR_ENTER' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(63) : error C2065: 'CLEAR_EXIT' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(63) : error C2143: syntax error : missing ',' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(63) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2146: syntax error : missing ',' before identifier '_shape'
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2065: '_shape' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2146: syntax error : missing ',' before identifier '_scene'
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2065: '_scene' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2027: use of undefined type 'nxOgre::stateTrigger'
1> c:\nxogre\include\nxOgre_includes.h(88) : see declaration of 'nxOgre::stateTrigger'
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2065: 'assignTypes' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2146: syntax error : missing ',' before identifier '_type'
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2065: '_type' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2027: use of undefined type 'nxOgre::stateTrigger'
1> c:\nxogre\include\nxOgre_includes.h(88) : see declaration of 'nxOgre::stateTrigger'
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2065: 'ASSIGN_ENTER_CLEAR_EXIT' : undeclared identifier
1>c:\nxogre\include\nxOgre_trigger.h(65) : error C2143: syntax error : missing ',' before ')'
1>c:\nxogre\include\nxOgre_trigger.h(81) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(88) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(92) : error C2146: syntax error : missing ',' before identifier '_shape'
1>c:\nxogre\include\nxOgre_trigger.h(92) : error C2146: syntax error : missing ',' before identifier '_scene'
1>c:\nxogre\include\nxOgre_trigger.h(92) : error C2143: syntax error : missing ',' before ')'
1>c:\nxogre\include\nxOgre_trigger.h(101) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(102) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_trigger.h(104) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_trigger.h(106) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_stage.h(29) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_stage.h(54) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_stage.h(62) : error C2275: 'nxOgre::scene' : illegal use of this type as an expression
1>c:\nxogre\include\nxOgre_stage.h(62) : error C2146: syntax error : missing ',' before identifier '_shape'
1>c:\nxogre\include\nxOgre_stage.h(62) : error C2146: syntax error : missing ',' before identifier '_pos'
1>c:\nxogre\include\nxOgre_stage.h(62) : error C2065: '_pos' : undeclared identifier
1>c:\nxogre\include\nxOgre_stage.h(62) : error C2143: syntax error : missing ',' before ')'
1>c:\nxogre\include\nxOgre_stage.h(76) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_stage.h(78) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_group.h(28) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_group.h(31) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_group.h(45) : error C2146: syntax error : missing ',' before identifier '_scene'
1>c:\nxogre\include\nxOgre_group.h(45) : error C2143: syntax error : missing ',' before ')'
1>c:\nxogre\include\nxOgre_group.h(51) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_group.h(53) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_structure.h(31) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_structure.h(35) : error C2934: 'nxOgre::blueprint<T>' : template-class-id redefined as a nested 'class' of 'nxOgre::scene'
1> with
1> [
1> T=nxOgre::structure
1> ]
1>c:\nxogre\include\nxOgre_structure.h(89) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_structure.h(96) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_structure.h(100) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_structure.h(104) : error C2146: syntax error : missing ',' before identifier 'bp'
1>c:\nxogre\include\nxOgre_structure.h(104) : error C2065: 'bp' : undeclared identifier
1>c:\nxogre\include\nxOgre_structure.h(104) : error C2146: syntax error : missing ',' before identifier '_scene'
1>c:\nxogre\include\nxOgre_structure.h(104) : error C2143: syntax error : missing ',' before ')'
1>c:\nxogre\include\nxOgre_structure.h(106) : error C2065: 'fragment' : undeclared identifier
1>c:\nxogre\include\nxOgre_structure.h(106) : error C2059: syntax error : '>'
1>c:\nxogre\include\nxOgre_structure.h(107) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_structure.h(109) : error C2143: syntax error : missing ';' before '}'
1>c:\nxogre\include\nxOgre_joint.h(28) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_joint.h(80) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_joint.h(85) : error C2143: syntax error : missing ';' before '{'
1>c:\nxogre\include\nxOgre_joint.h(85) : fatal error C1003: error count exceeds 100; stopping compilation


I have no idea why it starts off saying that i am missing a '}' before ')' when there are no such brackets or bracers there. Also why is it that i can compile the nxOgre solution with out this error. Thanks for the help, and thanks betajean for all the hardwork the new preview is going to kick ass.

DaCracker

15-08-2006 16:26:04

I've got exactly the same problem, I haven't been able to figure out
what's wrong yet :?

mnm23

15-08-2006 17:00:00

Ok so the first problem i had was my fault i should have read more carefully what you had said in the previous page about setting proper directories or changing the environment.

The second problem though is in the nxOgre_include.h and nxOgre_stateMachine.h files. They have an enum that declares DELTE but in VS8 they declare the same thing in winnt.h example below in winnt.h

#define DELETE (0x00010000L)

When i comment out your DELETE it compiles fine. Any other way of going around this or am I completely off on this.

betajaen

15-08-2006 17:32:18

Okay, both of you what compliers are you using (VS 2003 or 2005) because what ever it is it doesn't like that enum in that struct or the blueprint template system.

mnm23

15-08-2006 17:58:33

Visual Studios 2005

DaCracker

15-08-2006 18:17:03

Visual C++ .NET 2005 here :)

betajaen

15-08-2006 18:57:27

Aha!

I managed to get the error also, both of you are including "windows.h" right? Meaning it's a windows application.

This may be a problem.

For now, I suggest you compile your application as a console and don't include windows.h until I can fix these errors.

[edit]

Actually I should of read mmm23's post instead of just glancing at it. Bad Betajaen!

Anyway, his solution works. Just do a *case-sensitive* search for any word that is "DELETE" and replace it with "DESTROY" in NxOgre. You should have 7 occurrences, and re-compile.

That is the fix, and it works (untested) and compiles with windows.h

DaCracker

15-08-2006 19:55:12

Thanks alot!
It works fine now! :D

However... I see that you've done some changes to the
way of creating a character, with blueprints and stuff...
I find it kinda confusing :P

[EDIT]

Okey, it's not confusing, I actually like it :)

betajaen

15-08-2006 20:29:43

No worries, but it was mmm23 who really fixed it.

As for blueprints once you get past the "what kind of twisted kind of C++ is this!?". It's quite fun and very powerful, you guys should expect the blueprint system to take over most of NxOgre in the future. :D

DaCracker

15-08-2006 21:02:27

looking forward to that :)

DeFT 2K6

16-08-2006 08:35:19

Hi Betajean, thx for the release! Is the nxTutorials solution for VS 2003 valid?
I tried building all of the projects, but only some of them built and I kept getting weird errors with nxOgre_triggers.h, nxOgre_includes.h, etc. despite having the correct environmental variables set as well as the proper directories. Below is a sample of one of the buildlogs for a project that didn't build:



Compiling...
402.cpp
c:\gamePrograms\NxOgre\include\nxOgre_includes.h(186) : error C2143: syntax error : missing '}' before '('
c:\gamePrograms\NxOgre\include\nxOgre_includes.h(186) : error C2059: syntax error : ''''
c:\gamePrograms\NxOgre\include\nxOgre_includes.h(188) : error C2143: syntax error : missing ';' before '}'
c:\gamePrograms\NxOgre\include\nxOgre_includes.h(188) : error C2238: unexpected token(s) preceding ';'
c:\gamePrograms\NxOgre\include\nxOgre_includes.h(188) : warning C4094: untagged 'struct' declared no symbols
c:\gamePrograms\NxOgre\include\nxOgre_includes.h(190) : error C2501: 'state' : missing storage-class or type specifiers
c:\gamePrograms\NxOgre\include\nxOgre_includes.h(230) : error C2143: syntax error : missing ';' before '*'
c:\gamePrograms\NxOgre\include\nxOgre_includes.h(230) : error C2501: 'defaults::shapeDefaults::material' : missing storage-class or type specifiers
c:\gamePrograms\NxOgre\include\nxOgre_includes.h(230) : error C2501: 'defaults::shapeDefaults::mMaterial' : missing storage-class or type specifiers
c:\gamePrograms\NxOgre\include\nxOgre_includes.h(236) : error C2059: syntax error : '}'
c:\gamePrograms\NxOgre\include\nxOgre_includes.h(236) : error C2143: syntax error : missing ';' before '}'
c:\gamePrograms\NxOgre\include\nxOgre_includes.h(236) : error C2059: syntax error : '}'
c:\gamePrograms\NxOgre\include\nxOgre_converters.h(43) : error C2143: syntax error : missing ';' before '{'
c:\gamePrograms\NxOgre\include\nxOgre_converters.h(43) : error C2447: '{' : missing function header (old-style formal list?)
c:\gamePrograms\NxOgre\include\nxOgre_stateMachine.h(54) : error C2143: syntax error : missing '}' before '('
c:\gamePrograms\NxOgre\include\nxOgre_stateMachine.h(54) : error C2059: syntax error : ''''
c:\gamePrograms\NxOgre\include\nxOgre_stateMachine.h(55) : error C2143: syntax error : missing ';' before '}'
c:\gamePrograms\NxOgre\include\nxOgre_stateMachine.h(55) : error C2238: unexpected token(s) preceding ';'
c:\gamePrograms\NxOgre\include\nxOgre_stateMachine.h(63) : error C2433: 'stateMachine' : 'friend' not permitted on data declarations
c:\gamePrograms\NxOgre\include\nxOgre_stateMachine.h(63) : error C2501: 'stateMachine' : missing storage-class or type specifiers
c:\gamePrograms\NxOgre\include\nxOgre_stateMachine.h(68) : error C2061: syntax error : identifier 'body'
c:\gamePrograms\NxOgre\include\nxOgre_stateMachine.h(74) : error C2143: syntax error : missing '}' before '('
c:\gamePrograms\NxOgre\include\nxOgre_stateMachine.h(74) : error C2059: syntax error : ''''
c:\gamePrograms\NxOgre\include\nxOgre_stateMachine.h(75) : error C2143: syntax error : missing ';' before '}'
c:\gamePrograms\NxOgre\include\nxOgre_stateMachine.h(75) : error C2238: unexpected token(s) preceding ';'
c:\gamePrograms\NxOgre\include\nxOgre_stateMachine.h(77) : error C2059: syntax error : '}'
c:\gamePrograms\NxOgre\include\nxOgre_stateMachine.h(77) : error C2143: syntax error : missing ';' before '}'
c:\gamePrograms\NxOgre\include\nxOgre_stateMachine.h(77) : error C2059: syntax error : '}'
c:\gamePrograms\NxOgre\include\nxOgre_stateMachine.h(78) : error C2059: syntax error : '}'
c:\gamePrograms\NxOgre\include\nxOgre_stateMachine.h(78) : error C2143: syntax error : missing ';' before '}'
c:\gamePrograms\NxOgre\include\nxOgre_stateMachine.h(78) : error C2059: syntax error : '}'
c:\gamePrograms\NxOgre\include\nxOgre_body.h(29) : error C2143: syntax error : missing ';' before '{'
c:\gamePrograms\NxOgre\include\nxOgre_body.h(29) : error C2447: '{' : missing function header (old-style formal list?)
c:\gamePrograms\NxOgre\include\nxOgre_scene.h(263) : error C2039: 'Prefabs' : is not a member of 'nxOgre'
c:\gamePrograms\NxOgre\include\nxOgre_scene.h(263) : error C2065: 'prefab' : undeclared identifier
c:\gamePrograms\NxOgre\include\nxOgre_scene.h(263) : error C2059: syntax error : '>'
c:\gamePrograms\NxOgre\include\nxOgre_scene.h(289) : error C2143: syntax error : missing ';' before '}'
c:\gamePrograms\NxOgre\include\nxOgre_scene.h(291) : error C2143: syntax error : missing ';' before '}'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(28) : error C2143: syntax error : missing ';' before '{'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(30) : error C2143: syntax error : missing ';' before '{'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(33) : error C2143: syntax error : missing ';' before '{'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(35) : error C2065: 'STATE_TRIGGER' : undeclared identifier
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(37) : error C2065: 'STAGE_TRIGGER' : undeclared identifier
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(37) : error C2143: syntax error : missing ',' before '}'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(37) : error C2143: syntax error : missing ';' before '}'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(39) : error C2275: 'Ogre::String' : illegal use of this type as an expression
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(50) : error C2143: syntax error : missing ';' before '}'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(53) : error C2143: syntax error : missing ';' before '{'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(57) : error C2143: syntax error : missing ';' before '{'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(59) : error C2065: 'ASSIGN_ENTER' : undeclared identifier
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(60) : error C2065: 'ASSIGN_EXIT' : undeclared identifier
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(61) : error C2065: 'CLEAR_ENTER' : undeclared identifier
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(63) : error C2065: 'CLEAR_EXIT' : undeclared identifier
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(63) : error C2143: syntax error : missing ',' before '}'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(63) : error C2143: syntax error : missing ';' before '}'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(65) : error C2275: 'stateType' : illegal use of this type as an expression
c:\gamePrograms\NxOgre\include\nxOgre_includes.h(191) : see declaration of 'stateType'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(65) : error C2146: syntax error : missing ',' before identifier '_shape'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(65) : error C2065: '_shape' : undeclared identifier
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(65) : error C2146: syntax error : missing ',' before identifier '_scene'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(65) : error C2065: '_scene' : undeclared identifier
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(65) : error C2027: use of undefined type 'nxOgre::stateTrigger'
c:\gamePrograms\NxOgre\include\nxOgre_includes.h(89) : see declaration of 'nxOgre::stateTrigger'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(65) : error C2065: 'assignTypes' : undeclared identifier
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(65) : error C2146: syntax error : missing ',' before identifier '_type'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(65) : error C2065: '_type' : undeclared identifier
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(65) : error C2027: use of undefined type 'nxOgre::stateTrigger'
c:\gamePrograms\NxOgre\include\nxOgre_includes.h(89) : see declaration of 'nxOgre::stateTrigger'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(65) : error C2065: 'ASSIGN_ENTER_CLEAR_EXIT' : undeclared identifier
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(65) : error C2143: syntax error : missing ',' before ')'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(81) : error C2143: syntax error : missing ';' before '}'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(88) : error C2143: syntax error : missing ';' before '{'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(92) : error C2275: 'Ogre::Vector3' : illegal use of this type as an expression
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(92) : error C2146: syntax error : missing ',' before identifier '_shape'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(92) : error C3861: '_shape': identifier not found, even with argument-dependent lookup
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(92) : error C2146: syntax error : missing ',' before identifier '_scene'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(92) : error C3861: '_scene': identifier not found, even with argument-dependent lookup
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(92) : error C2143: syntax error : missing ',' before ')'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(101) : error C2143: syntax error : missing ';' before '{'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(102) : error C2143: syntax error : missing ';' before '{'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(104) : error C2143: syntax error : missing ';' before '}'
c:\gamePrograms\NxOgre\include\nxOgre_trigger.h(106) : error C2143: syntax error : missing ';' before '}'
c:\gamePrograms\NxOgre\include\nxOgre_stage.h(29) : error C2143: syntax error : missing ';' before '{'
c:\gamePrograms\NxOgre\include\nxOgre_stage.h(54) : error C2143: syntax error : missing ';' before '{'


It goes on like that for most of the rest of the errors for the other projects. It looks like I need to include something somewhere, but I'm not sure what it is - i have all of the novodex and nxOgre include and lib directories properly linked so I don't know why so many things seem to be undefined. Any insight into this would be greatly appreaciated. I know you mentioned that you haven't made the VS 2003 solutions, but that was on Aug. 13th and the solution file in the nxTutorials directory seems to have been made on Aug. 14th, so I wasn't sure if you had made it afterwards.

Thx, ciao.

betajaen

16-08-2006 10:07:26

Sadly the 2003 projects aren't up to date.

You'll have to get the 2005 projects and go into notepad and change the version number of them.

I know there are 46 tutorial projects which sounds like a daunting task, but just change the NxOgre and NxTutorial101 for now, if it compiles the rest should as well.

DeFT 2K6

19-08-2006 23:29:22

Oh, no problem. I just converted and then built the tutorials that I needed. Thx for your reply and the way to convert a vs2005 proj into a vs2003 one.

Ciao

betajaen

31-08-2006 19:42:37

Day 65 - Back on track

Okay, I'm back on development again (well part-time development with my Game Engine Eos).

Good news is NxOgre works with PhysX 2.5.0 (apart from the fluids class) and 2.4.4 at the same time. However through out the next few days I'll be working with both versions to make sure NxOgre works perfectly with them despite the changes.

Wretched_Wyx

31-08-2006 19:48:00

This is exciting news indeed. Always good to know that NxOgre stays stable with the newest PhysX release. Keep it up man!

M@gg!

31-08-2006 21:30:29

I'd be happy if you'll take a closer look on the timer of Ogre, because he is smoothed and seems to cause some problems with the simulation.

I think it might be a good thing to implement an extra timer for NxOgre. As far as I heard Ogre delivers some classes for this purpose.

betajaen

31-08-2006 21:52:54

He?


[Edit]

I think I shall make this post more useful.

A few months ago, I approached Ageia about having a commercial PhysX license. NxOgre being a full blown wrapper and making use of the hardware, although I won't tell you what exactly happened, and at the time I was hoping to get early access to 2.4. 2.4.4 came out to my surprise around that time also, so nothing came to it.

Anyway, today I logged in to see if anything new was about and lo-and-behold I had access to 2.5.0, the holy grail of PhysX. Cut a long story short, one of the guys made a little "boo-boo" and I thought the licensing team decided to give me a license and not tell me.

However in so many words, the person who I told me the story. That I can't redistribute it (obviously), and if I choose to wrap it early, I can't give out any of the features or changes of 2.5.0 so there is little point of releasing it.

So out of respect of Ageia and for legal reasons, although I do have a nice shiny copy of the 2.5.0 SDK I won't be using it or be speaking another word about it until it's out for the public and I'll reverse the code I did today on NxOgre.

Besides what's the point of releasing these new features that only I, and a handful of commercial developers can use it? :wink:

Wretched_Wyx

31-08-2006 23:59:13

Arg. I remember that day, all too well. We were talking about how it would be cool, if Betajaen did get a full license. I pushed him a little bit, pointing out the fact that core members from Ageia had recognized NxOgre, even suggested it on the support forums. I voiced that NxOgre was more than worthy to recieve a license. Betajaen agreed.

Apparently that little push was all that was needed, as he schemed together a very professional sounding email requesting more info on the process, and if things were good, where to go from that info. Betajaen steadied his hand over the mouse after the letter was complete... And finally clicked the "send" button.

*Hours later*

Finally a reply came to him. I couldn't bare the tension anymore. Somehow Betajaen managed to contain himself while he read it. And while he filled me in. He had his foot in the door. Some high-up at Ageia told him that he had contacted another fellow there, in regards to getting Betajaen a license. Betajaen need only wait for his contact.

I did at least 4 flips, wet my pants at least twice (that I can recall, it may have been several times), danced with Dagon (my ferocious cat, who dances for money), and shouted to the mountain tops.

To cut a long story short, things have been going slow since then. As a by-stander to all this, I'm in constant agony over the fact this hasn't been tied up. The only thing keeping me at bay, is the thought that the guys at Ageia must be plenty busy, and we should be happy that the signs so far are very good.

Sooner or later this will pan out, I hope. That would just be awesome, plain and simple.

BlasterN

02-09-2006 10:38:42

@betajaen
You cant release the SDK but can you include Physx 2.5.0 code in NxOgre?
If so, you must start thinking about NxOgre SDK.

I reallly dont know the changelog, I will read it asap.

betajaen

02-09-2006 11:26:51

I could if I wanted to, but for the reasons above and more, I'm sticking with 2.4.4 until 2.5.0 is released to the public.

betajaen

04-09-2006 18:34:54

Day 68

I've just done some light work with the logger (it has it's own log file), and handling errors. Although I wanted to get an Error class working this morning, I never got the chance however I did implement "Release".

Release is just a flag to set when your game or application or whatever is released to the public, NxOgre will shut up with the technical bits and become very professional to the user if anything strange should happen.

For example, this what happens now if the SDK cannot be started (usually because of missing SystemSoftware.exe).

In "Developer" mode:

14:25:11: Starting up PhysX '2.4.4'
14:25:11: Fatal Error!
************************************************
* Cannot start the PhysX SDK! *
************************************************




PhysX SDK Error
Error Code: No Error


Possible problems:

1. Do you have the SystemSoftware.exe installed?
http://www.ageia.com/drivers/

2. Does the System software support the NxOgre version you have?
PhysX DLL version: 2.4.4

3. Are you using the latest version of NxOgre?
NxOgre 0.4 (CVS)
Most recent versions are at http://get.nxogre.org


Versions:
SDK 2.4.4
Hardware Yes, Athena 1.0
NxOgre NxOgre 0.4 (CVS)(Compatible: yes)




In "Release" mode:

18:33:39: Starting up PhysX '2.4.4'
18:33:40: Fatal Error!
************************************************
* Cannot start the PhysX SDK! *
************************************************


Please refer to the developer or publisher's website or support line for information relating to the errors detailed.
Error Code: No Error


Version information:
PhysX SDK: 2.4.4
NxOgre: NxOgre 0.4 (CVS)(Compatible: yes)
Hardware: Yes, Athena 1.0


See much more professional, gets rid of the technical things that would bewilder your users if an error would happen.

Next up, proper error handling.

betajaen

05-09-2006 18:03:20

Day 69

Today I've started on the "Anti-NxOgre Crash system" (TM), basically preventing crashes as much as possible, by suppling default values to invalid ones then present the problem on the screen and into the log.

So far it deals with shapes (if they have invalid parameters or don't exist) but eventually it'll start spreading through rest of the code.

Let's take this piece of code:

mySphere = mScene->createBody(
"mySphere",
"sphere.50cm.mesh",
new sphereShape(0.0f)
10.0f,
Vector3(3,3.5,0)
);


It creates a sphere with no size, how is that even possible in the real world I don't know but in the old code PhysX would cause an exception when NxOgre tried to create the Actor now.

We can still create that body, but NxOgre notices something is afoot and creates an alternative shape (a 1 metre sized cube) instead, writes a warning to the log and if the setting is set it visualises the mistake on the screen.

Like so:



However, what happens if it doesn't have a mesh, and you are using a meshShape referencing a mesh that doesn't exist. Kaboom! you would think, but now:

myCollisionMesh = mScene->createStaticBody(
"mesh",
"",
new meshShape("thisfiledoesntexist.mesh", mScene)
Vector3(3,3.5,0)
);



Only this happens:



And a warning appended to the log.


Eventually this system will spread to other parts, such as negative or zero density, or joints with strange parameters to even the prefab system. But as with most things with NxOgre it's completely optional and can be turned right off.

And oh, the best thing, it requires no external resources the meshes and materials are generated at runtime!

Wretched_Wyx

05-09-2006 20:55:46

Your nuts. NxOgre is going to be... I don't even have words man. It's one thing after another with you!

betajaen

05-09-2006 21:02:42

I had a bit of a battle with myself if it was venturing into the framework terrority, so to win the battle I just added a "NONE" option.

M@gg!

05-09-2006 22:39:01

so to win the battle I just added a "NONE" option.

:D

I think I like it "NONE", but it is a nice feature!

betajaen

05-09-2006 23:36:39

I would expect people not to use it, but I would expect some to use it as a debugging feature until their game/application is finished - then turn it off.

But why trawl through loads of logs and code when you can just see it on the screen? :D

M@gg!

06-09-2006 08:04:57

Yep!

SONB

10-09-2006 14:46:02

Hi betajaen!

It would be great if you would include nxOgre::character::Direction::NONE. Sometimes I need it so much.

Thanx a LOT :D



::SONB::

betajaen

10-09-2006 15:29:06

Why NONE?

The direction vector is cleared the next frame, I'll add it just wondering why you need it?

SONB

10-09-2006 19:04:59

Well, in my keyPressed() function I define my nxOgre::character::Direction variable mPlayerDir:

void keyPressed( const OIS::KeyEvent &e ) {
if( e.key == OIS::KC_W ) {
mPlayerDir = nxOgre::character::FORWARD;
}
}


In the keyReleased() function I would zero the mPlayerDir this way:

void keyReleased( const OIS::KeyEvent &e ) {
if( e.key == OIS::KC_W ) {
mPlayerDir = nxOgre::character::NONE;
}
}


And in the update() function the direction of my character would be updated this way:
void update( unsigned long lTimeElapsed ) {
mPlayer->move( mPlayerDir );
}


I know, this is not the best way to do such things, but.. it works :D

betajaen

10-09-2006 19:13:29

Ahh, but couldn't you do?

void keyPressed( const OIS::KeyEvent &e ) {
if( e.key == OIS::KC_W ) {
mPlayer->move(nxOgre::character::FORWARD);
}
}

SONB

10-09-2006 19:24:38

No way, only update() function is called every frame.

The keyPressed() is called only one time even if I'm holding down a key.

BlasterN

11-09-2006 11:45:34

that's why you have to do a InputManager that manage pressed keys.
In my engine i do this:

KeyPressed() -> InputManager::KeyPressed()
InputManager::KeyPressed() -> Key stored into a std::map with the console command.
InputManager::update() -> iterate the map, each 'key' run a console command.
KeyReleased() -> InputManager::KeyReleased() -> iterate the map and delete the 'key'

I use the same system that FPS use.
bind "key" "consolecommand"
if the key start with "+" (+movefoward) means that you need to update every frame.
if the key start with "~" (~run) means that the command is toogle-able so the command will be executed when the key is down and released.

It's not releted to NxOgre btw

betajaen

11-09-2006 12:35:53

Sounds very similar to my game engine, however for direct movement of the player I just check "isKeyDown" on every frame, and other things such as weapon switching or menus is done via onKeyPress()

It seems to work faster that way.

rUmbl3

11-09-2006 13:49:38

The bind thingie your doing sounds pretty cool! I wanted to integrate something similar. But the problem I got was that the wrapping of the pressed key to the correct binding. How did you solve that?

(Sorry for this offtopic stuff ;))

betajaen

11-09-2006 14:40:38

I used function pointers, enum's and stl vectors.

rUmbl3

11-09-2006 14:55:21

that for sure. My problem was more to get the string value of the key (for example A) to the equal enum value (OIS::KC_A). I could've done that with lots of ifs or array with all the equal values but that seems too slow to me.

betajaen

11-09-2006 15:45:19

I did it slighty different.

Three maps (key, joystick button, mousebutton) to an action enu, (move forward, move backward, fire weapon and so on).
map< OIS::KeyCode, action> mKeyActions;


Once a key is found, then the action is searched for, if there is one, then the Callback (a typedef'd function pointer) is called.
map< action, Callback> mCallback;


It works pretty nice. It's flexiable enough to have multiple keys to an action, and the code can handle keys bound to an action that hasn't been defined yet. I can also unbound the actions to disable moving a character around whilst the player is in a menu and operating the mouse.

I also have a second set of bounds, which just execute a string through my console class with is either parsed there or ran through python. So pressing F1 for example would run the python script "EsCore.screenshot()" and F12 is "/quit"

BlasterN

11-09-2006 16:45:20

@rUmbl3
//in constructor:
mKeyboard->setTextTranslation(OIS::Keyboard::Ascii);

bool keyPressed( const OIS::KeyEvent &arg )
{
Ogre::String str=Ogre::String(this->mKeyboard->getAsString(arg.key).c_str());
BENGINE::BindManager::getSingletonPtr()->keyPressed(str,arg);

if( arg.key == OIS::KC_ESCAPE )
BENGINE::Globals::getSingletonPtr()->mRequestShutDown = true;
return true;
}

I use buffered. But it's the same.
btw: create a new post in ogre forums and paste all so we can continue there.
-----


back to the topic of the new release.
I find a BUG, but dont mind is related with debug lines.
The debug lines for capsules are wrong.

from NxCapsuleConsoler.h


p = center of capsule
top sphere center = p.y + h*0.5
bottom sphere center = p.y - h*0.5
top capsule point = p.y + h*0.5 + r
bottom capsule point = p.y - h*0.5 - r

Imagine the real Height of the Physx Capcule = h+2r
But in NxOgre debug the capsule is = h

betajaen work to do ^^

betajaen

11-09-2006 17:31:23

Did you factor in the skinwidth?

And I can't fix it as it's PhysX code, if it's a real bug (as in a mistake in your formula) post it to the PhysX forums, but it's very unlikely to be one.

rUmbl3

11-09-2006 19:27:36

thanks BlasterN for this code! should be really useful! And i am using buffered input, too!
and thanks betajean too for the stuff you wrote, helped me a lot!

The basics of my bind system are now done and mostly working :)

BlasterN

12-09-2006 11:31:30

Create the capsule.

//mCapsuleHeight=125
//mCapsuleRadius=15
NxCapsuleControllerDesc desc;
desc.setToDefault();
desc.height = NxMath::abs(mCapsuleHeight);
desc.radius = NxMath::abs(mCapsuleRadius);
desc.position.set(0,mCapsuleHeight/2,0);
desc.slopeLimit = cosf(NxMath::degToRad(45.0f));
desc.skinWidth = 0.0025f;
desc.stepOffset = 0.40f;
desc.callback = this;
desc.upDirection = NX_Y;
mController = nxOgre::mControlMgr.createController(mNxScene->mScene,desc);

mController->setCollision(true);
mController->setPosition(NxExtendedVec3(0,(mCapsuleHeight/2)+3,0));


Sync position/orientation with the node.
Ogre::Vector3 v=NxTools::convert( mController->getActor()->getGlobalPosition());
v.y-=(this->mCapsuleHeight/2)+this->mCapsuleRadius;
mNode->setPosition(v);
OgreLog((Ogre::Real) v.y);
//OgreLog(NxTools::convert( mController->getActor()->getGlobalOrientation()));
mNode->setOrientation(NxTools::convert( mController->getActor()->getGlobalOrientation()));


Do i have to add skinwidth to:
v.y-=(this->mCapsuleHeight/2)+this->mCapsuleRadius;

screens


betajaen

12-09-2006 12:22:06

Hmm, I believe the formula is:

capsuleHeight + (radius * 2)

I believe skinwidth is part of it, but it's only a few mm's.

p.s. Nice screenshots.

betajaen

14-09-2006 14:19:31

Day 78 - Magnets


Totally inspired by this thread I added magnets via the state system, and it's so easy to use. It's more or less switching on a flag.

Creating a magnet:
myCube = mScene->createStaticBody("magnet","cube.1m.mesh", new cubeShape(Vector3(3,3,3)),Vector3(5,10,0));
myCube->mNode->scale(3,3,3);
myCube->addState(nxOgre::STATE_MAGNET);


Creating a body effected by an magnet:
body *b = mScene->createBody("myCube","cube.1m.mesh",new cubeShape(1.0f),10.0f,Vector3(0,3,0));
b->addState(nxOgre::STATE_MAGNETIC);



So far it works pretty well, although once instance I actually saw two bodies orbit the bigger body so if you wanted to some sort of model solar system with it, it's certainly possible.

There are some things to add, as in the magentic field strength, and how big the field is, and secondary effects. Any magnetic bodies touching that magnet should have a smaller magnetic field as well, as well as magnetic poles as well, but thats a little out of my league.

M@gg!

14-09-2006 15:28:16

COOL!!!

That's realy a nice thing.

And so easy to use.

betajaen

14-09-2006 15:34:13

If you think that's great, with enough speed those things can rougly simulate natural satellites and rocky belts of planets.

aka:

http://www.ogre3d.org/phpBB2addons/viewtopic.php?p=13327#13327

Wretched_Wyx

15-09-2006 01:01:32

Sheesh... I step away for a few days and this is what I come back to?! This is really sweet stuff man, keep this up by all means.

betajaen

29-09-2006 17:12:48

Day 93

Tutorials

Just a short one today. Apart from some secret Ninja programming (TM), I've added support to Eihort in more ways than one.

The Tutorials; Without changing header or linker settings, code or anything will now automatically compile on Azathoth, Dagon and Eihort with no effort.

With the interface changes, and change of input systems between Dagon and Eihort. The new Input System is quite clever and abstract. With Eihort it will automatically include the OIS.lib if Eihort is being used within code, and with Dagon/Azathoth go back to the traditional InputSystem.

The actual fix is a piece of pragma and pre-processor genius on my part, but in theory it works very well between versions (although untested on Azathoth and I must be honest Dagon yet - But it will!).

I've also decided on a change of colour scheme in the Tutorials, the backgrounds are now white.

Speed increases

I've also been fiddling around by trying to make it go faster. I've "inlined" some of the most common functions Vector3 to NxVec3, Quaternion to NxQuat,etc. So it seems to run faster. I'm getting ~2500 FPS on Tutorial 1 now (without the grid floor).

As well as reading about threads with PhysX, If anyone wants to donate a new Core Duo 2 (with computer), I'll even investigate multi-processor NxOgre ;)

Oh I tried forcing PhysX to go into it's own namespace (I had to be naughty and adjust the headers) but it didn't work. Oh well, perhaps in 2.5 we may see it.

betajaen

30-09-2006 15:42:43

Day 94

I'm down with the flu, off work, and dizzy. Yet I still program for you people. Well your going to love this....Well some of you. Maybe.

New Tutorial look.



Gray is back in and purple/blue is out. There is a spotlight effect shining on to the world which dims to black except the centre area.

Everything has nice shadows and a black circle thing rotates underneath the active body. That is Tutorial 102 (Torque), so I can switch between the bodies via 1 and 2 or move them via the standard force/torque keys. That tutorial is running in Eihort but with a quick change of an environmental variable, a recompile and a fresh copy of the Ogre.dll's; that tutorial will work in Dagon, or even anything earlier.

New Debug Options.



Those labels on the bodies there aren't added in later in an image editing application, they are real time text overlays only shown when Debug mode is on.

It's still using early code so such things as screen resolution, current camera, size of the text or even the font is hard coded.

So I'd like to have a simple blueprint system going on supplied to the debug render to supply such things.

Other features planned are to make it work across multiple scenes and scene managers. As well as options on what the body text shows; Position and Orientation, Velocity, Materials, Current States, etc.

There is also a second Overlay panel planned, which appears on the right of the screen displaying Scene and World statistics which is very handy when debugging an application.

Well thats my coding for today, enjoy!

DaCracker

30-09-2006 16:27:26

WOW! :shock:
Nice work man! :D

betajaen

08-10-2006 09:57:21

Day 102

I've been working pretty much every day since last Sat adding more features in.

The debug overlay system for example; Now reports on the velocity of any moving bodies, it's non-standard materials and even the states it's under. There is also a lovely debug panel which reports on FPS, body count and so on.

I'll let you imagine what it'll look like, as we are rapidly approaching RC1 of 0.4 now I want to keep a few things secret ;)

The other big thing I've been working on is serialisation. Naturally I went for the NxuStream that is supplied with PhysX. It works really well, but has no real facility for exporting userData in this case scene node information, meshes, states and other things that makes NxOgre; NxOgre.

So I've had to write my own, first of all I had to make it compatible with the current blueprint system and second have multiple forms of file formats it can export and import to. Thats where the blueprints come in, they operate as an intermediate language between the exporter and the world.

The serialisation class will bundle everything into blueprints then pass it on to the exporter (based on your preference; Binary, YAML and COLLADA) and the same with importing. It won't create a scene of bodies; it'll create a blueprint of a scene with blueprints of bodies inside that, then the serialiser will just create them all.

The whole advantage of this is; expansion. So you can use it for your own application so when you save your game you could write a exporter to export the physics alongside the rest of the game information.

I haven't written the exporters yet, but I have written the blueprint to body to blueprint system, and it works really well.


myCube = mScene->createBody("myCube","cube.1m.mesh",new cubeShape(1.0f),10.0f,Vector3(0,0.5,0));

blueprint<body> bp;
bp = myCube;
bp.create("myTwinCube", mScene, Vector3(2,0.5,0));



Let me point out, that won't just copy the basic information of that body. It'll copy everything; such if that cube was moving in a certain direction, the twinCube would inherit that too. Meaning full serialisation.


Anyway onward to 0.4 RC1!

betajaen

08-10-2006 15:24:08

Day 102 ctd..

I have now perfected the blueprint<body> class now, it can completely duplicate a body. Shown in the video below:


(Click for video 1.8Meg Xvid)

What I find funny is; Some of the bodys being spawned at the end fall at an odd angle, it's because the original cube is being moved after being almost squashed by the first duplicates. So that movement is now being inherited to the later ones. ;)

Well onwards to full scene duplications.

p.s. That demo was done by the following code in a tutorial:

if (isKeyDown(OPTION_1) ) {
myCube->duplicate("myCube" + Ogre::StringConverter::toString(a), Vector3(0,2+a,0));
a++;
}

betajaen

09-10-2006 20:25:19

Day 103

Who likes serialisation? Go on raise your hands. :D

Code
Serialiser::Serialiser::Serialise(mScene, new Serialiser::TextStream("test.txt"));

test.txt
# NxOgre.text.1.00
scene Main {
Gravity: Vector3(0, -9.80665, 0)
MaxTimestep: 0.0166667
MaxIter: 8
TimeStepMethod: 0
SimType: 0
BoundsPlanes: 0
Flags: 4
InternalThreadCount: 0
BackgroundThreadCount: 0
ThreadMask: 1431655764
BackgroundThreadMask: 1431655764
bodies {
body Main.floor {
Density: 0
A-Flags: 0
Position: Vector3(0, 0, 0)
Orientation: Quaternion(1, 0, 0, 0)
Type: Static
shapes {
}
meshes {
}
}
body myCube {
Density: 0
A-Flags: 0
Position: Vector3(0.0641173, 0.497978, -0.0839872)
Orientation: Quaternion(0.997092, 0.000356564, -0.0762083, -0.000395423)
Type: Dynamic
AngularDamping: 0.05
AngularVelocity: Vector3(-0.0803388, 0.00140802, -0.00459633)
CDDMotionThreshold: 0
B-Flags: 2304
LinearDamping: 0
LinearVelocity: Vector3(-0.00299958, -0.0295934, -0.0397002)
Mass: 10
MassSpaceInertia: Vector3(1.66667, 1.66667, 1.66667)
MaxAngularVelocity: 7
SleepAngularVelocity: 0.01
SleepLinearVelocity : 0.01
SolverIterationCount: 4
WakeUpCounter: 0.233333
shapes {
}
meshes {
mesh 'cube.1m.mesh' Vector3(0, 0, 0) Quaternion(1, 0, 0, 0)
}
}
}
}

M@gg!

10-10-2006 11:29:20

Clever representation of the fields! It is realy good human readable.

betajaen

10-10-2006 16:54:40

It's based of the material file format syntax, so it'll will be pretty familiar to people.

However there is a YAML, Binary and COLLADA file formats planned as well ;)

jacmoe

10-10-2006 18:46:57

Great things you are doing, betajaen! :D

I peep. And doesn't post, as it's hard to find words when you are speechless.. But keep it up! :)

betajaen

10-10-2006 19:24:17

Thanks!

You should post, it'll drag more people in with the jacmoe around ;)

betajaen

10-10-2006 20:41:40

Day 104

Betajaen does the happy dance!




1st* image of the unserialisation working. The code is dodgy and some of it is hard coded, it does not support meshes, statics are hardcoded as ground shapes and dynamics as cubes. There is a lot to do, but as I've written the framework, it's just filling in a jigsaw.

But the lovely thing is all of the physics is retained, the velocity, direction, pose and so on. It's quite spooky that PhysX just lets me allow to directly modify the actor like that, I was expecting a real struggle.

Oh the code to do all of that is:

blueprint<scene> bp = Serialiser::Serialiser::Unserialise(new Serialiser::TextStream("test.txt"));
mScene = bp.create("Main", mSceneMgr);

for(std::map< Ogre::String, blueprint<body> >::iterator i = bp.mBodies.begin();i != bp.mBodies.end();++i)
(*i).second.create((*i).first, mScene);


It'll be reduced to a one line - 2 argument function in world soon, how's this sound?

mWorld->fromSerialised(mSceneMgr, new Serialiser::TextStream("test.txt"));

Well onwards.

*Technically it's the 3rd, the first two wasn't so pretty.

vec3

10-10-2006 21:07:58

It'll be reduced to a one line - 2 argument function in world soon, how's this sound?

Very nice :D

Keep it up!

(I'm sure that I am not the only one thinking that)

M@gg!

10-10-2006 21:24:17

But the lovely thing is all of the physics is retained, the velocity, direction, pose and so on. It's quite spooky that PhysX just lets me allow to directly modify the actor like that, I was expecting a real struggle.

Yes, that suprised me too, when I was trying to figure out a work around for my projectile problem.

betajaen

10-10-2006 21:27:18

Argh. Found a bug.

Darn thing just keeps on moving. Like how your driving along a motorway(highway for our American friends) and your tyre falls off and just keeps going on and on.

It's like that, even if I move the body, and I think it's due to the mass bits not being exported properly.

M@gg! did you encounter anything like that?

M@gg!

10-10-2006 21:48:29

M@gg! did you encounter anything like that?

Nope.

I was just playing a litle bit around with velocity and torque.

What exactly did you save in the exportfile of the body? Has the body got gravity or is he floating in the space? Did you set a proper material for it with friction ...?

betajaen

10-10-2006 21:53:43

I've said every attribute of the actor and body (if it has one) description then put it back again.

Gravity is set right, and materials don't apply because there is only one.

If I recalculate the mass though, it tends to help. But not a lot.

M@gg!

10-10-2006 22:04:52

Hm...

Maybe it is a problem with the collision detection. What happens if you save and load it in the free space?

betajaen

10-10-2006 22:13:25

Depends on whats happening, so far I've seen three types of behavior:

- Normal
- Body goes off
- Lots of bodies together create an explosion.

I'm using the exact same methods as NxuStream classes bundled with the PhysX SDK, so it must be a problem of how I'm saving it, or if I'm saving the right values. Which is odd as I've doubled checked that I have. The only iffy value I can see is the massSpaceInertia is alwasys 1.6667, 1.6667, 1.6667 when in other NxuStream examples it varies.

Hmmm.

M@gg!

10-10-2006 22:21:58

Interesting. It sounds a litle bit like my projectile problem, that's still a miracle to me, but I can't see a coherency.

Do I understand you right? You are loading allways the same body, sometimes it behaves normal and sometimes it is as if it'd been pushed by a higher force, or as if it is having a lower friction?

Or does it depend on the saving? That the values after this are different in the file.

betajaen

10-10-2006 22:36:59

Depends on the saving, if the body acts (if it's being pushed) once, it'll act it all the time on reloads.

I think it's just a bad parameter.

[Edit]

However, I haven't seen any real problems from body to blueprint to body, so I'm guessing the error is focused around the serialiser.

M@gg!

10-10-2006 22:42:56

May be it is just a useless try but it is done realy quick. Set a fixed timestepping for PhysX and then try to save it.

CaseyB

10-10-2006 23:10:58

:shock: I stop reading this forum for a little while and look what you've done! I'm not even going to know where to start once I update!

betajaen

10-10-2006 23:28:08

Well with this amount of attention it seems I'll have to release RC1 pretty soon. How's Friday sound?

Also, I've may have tracked down the reason why it's all explodery with large amount of bodies.

Screen shot of the first frame paused of importing:




Somebody's missing a dimension.....

betajaen

11-10-2006 20:00:22

Urgh, still having a problem with it all.

It's 100% the body exporting process. It seems that the mass pose is invalid or just weird, even though it's using the same code to write and read as the NxuStream.

Oh well, I fixed the "2D" problem though.

betajaen

11-10-2006 22:15:08

Day 105

Turning over to different things.

Here are two things which I'm experimenting with; 2D Physics.

The first thing is a mini-game of sorts, basically you have a sphere and a hole, and the aim is to place some pieces on the on the floor. Hit run and watch the ball hopefully go into the hole. It should have a few levels with different challenges to make it fun.

Here is a development screen shot.




The second one is Tetris!

Don't get your hopes high with this one, Tetris with physics is quite weird, you have a lot of bounce and have to limit rotation and certain dimensions. It may be cut.



Shame really because it would be a very good example of removing shapes from the body.

betajaen

13-10-2006 13:47:46

Well RC 1 will be released today, but only for Eihort.

Turns out I saved some of the new meshes into 1.40 format (for Eihort) and they won't work in Dagon.

I don't think I have the originals anymore, Any ideas?

betajaen

13-10-2006 17:04:23

Alright sorted out that.

The tutorials both work with Dagon and Eihort now without any need for change of linker, include or adjusting any parameter at all. Quite impressive really since the Eihort code requires OIS, and the Dagon code makes no reference to it all, and does not need it.

I'm just going to clear up some more tutorial code and call it a release.

Don't expect miracles here, there are only 15-20 tutorials that actually work.

betajaen

13-10-2006 19:15:36

Closed.