Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

Program Announcements / Box2D Wrapper V2.0.0 - 2D Physics engine with CCD

Author
Message
Diggsey
13
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 8th Apr 2009 23:46
When the community compo is over, I will release my source code for my entry, which should be useful for some people

[b]Yuor signutare was aresed by a deslyxic mud...
BOX2D V2 HAS HELP FILES! AND A WIKI!
Aurum Knight
11
Years of Service
User Offline
Joined: 15th Jul 2008
Location: the suburbs of nowhere
Posted: 10th Apr 2009 21:45
Are there any examples I can look at for this version? Those old examples won't work with the new commands :/ I mainly want help with all those joint commands
Diggsey
13
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 11th Apr 2009 00:18
There are a couple of examples on the wiki, (scroll down and click on sample list)

As I said, when the compo is finished I will release my entire source code for that which has lots of examples of joints and other things.

[b]Yuor signutare was aresed by a deslyxic mud...
BOX2D V2 HAS HELP FILES! AND A WIKI!
Xlaydos
15
Years of Service
User Offline
Joined: 26th Mar 2004
Location:
Posted: 14th Apr 2009 11:50
Hi Diggsey, have you managed to fix the contact listener bug / got it to work correctly in your CC entry?

Thanks
Diggsey
13
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 14th Apr 2009 19:24
I've fixed it now (Download on first post updated)

Turned out to be a bug in the VC++ optimizing compiler, so I had to reduce the level of optimization

[b]Yuor signutare was aresed by a deslyxic mud...
BOX2D V2 HAS HELP FILES! AND A WIKI!
Xlaydos
15
Years of Service
User Offline
Joined: 26th Mar 2004
Location:
Posted: 14th Apr 2009 20:00
Awesome, now I can continue on my project Thanks a lot Diggsey
MonoCoder
13
Years of Service
User Offline
Joined: 4th Dec 2005
Location: england
Posted: 20th Jun 2009 16:43 Edited at: 20th Jun 2009 16:44
I'm at a loss as to what the VertexData parameter in b2createpolygonshapetemplate means or does.
Running this (with any variation of commented-out lines):


Crashes instantly. D: The wiki-thingy has nothing on this (that I can see). Any tips (just to get us started)? :S

Spiteful Eye WIP. Go on, it's fun sort of.
Xlaydos
15
Years of Service
User Offline
Joined: 26th Mar 2004
Location:
Posted: 20th Jun 2009 23:33
VertexData is a pointer to a memory block of size 8*VertexCount. From this pointer the data should read:
Vertex 1 X (float, 4bytes)
Vertex 1 Y
Vertex 2 X
Vertex 2 Y
...

Maximum of 8 vertices.

Here is an example from a quick little game i'm working on until end of exams, should be done in a few days
Diggsey
13
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 21st Jun 2009 01:37
@MonoCoder

You shouldn't normally need to use that form of the function. In most cases you should use the form which takes the actual vertex positions as parameters. If you need to use it, you can either do as Xlaydos suggested, or write the data to a memblock and pass the memblock pointer to the function, or you can use a pointer to a bank from IanM's plugins

MonoCoder
13
Years of Service
User Offline
Joined: 4th Dec 2005
Location: england
Posted: 21st Jun 2009 02:29
Ah gotcha!
I take it if I need more than 8 vertices, I can just make another polygon shape and strategically place them together inside the body?

Ta!

Spiteful Eye WIP. Go on, it's fun sort of.
Diggsey
13
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 21st Jun 2009 11:35
@MonoCoder
Yes, that's right Also, polygons must be convex, so if you need a concave body you need to split it up into convex parts and add a shape for each part.

MonoCoder
13
Years of Service
User Offline
Joined: 4th Dec 2005
Location: england
Posted: 21st Jun 2009 12:18 Edited at: 21st Jun 2009 21:35
That's about the only thing I did know

Last thing: the keywords file says:


I'm not sure how much it matters, but what happens to density, restitution and friction in the none-vertexdata forms?

Diggsey
13
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 21st Jun 2009 16:24
It probably defaults to 0, but you can easily change it by using b2SetShapeTemplateXXX

MonoCoder
13
Years of Service
User Offline
Joined: 4th Dec 2005
Location: england
Posted: 23rd Jun 2009 01:52 Edited at: 23rd Jun 2009 01:55
Ah! Ok, I said my last post was the last question, but I've got like two more I really need to ask. First:



(please forgive the tattiness ) This works ok, but if I uncomment line 32 to add the polygon (with or without commenting out lines 25 and 26), the body doesn't move, it just... sits there. It still responds to gravity though. Am I missing a special command to fix it up or just plain doing it wrong?

Qu No 2: For this game I'm making I want to use Box2D polygons for foreground collision. Obviously I can't make huge concave shapes for each chunk of floor or ceiling so I figured this: If in my editor I can, for an area like this (I rushed D: ), create a silly shape for collision like so, I can then "export" the level to a playable version where amongst all the other going-ons the shape has been triangulated (I figured it out today, go me... D: ) to give something like this, where all these triangles are then stored as individual shapes which on level-init are created as box2d polygon shapes and assigned to a static body to, all-in-all, represent the collision area.

So, um, does this sound feasible to you? Would having all these shapes in a body, and then all these bodies in a level cause crashes, show-stopper slowdowns, etc.?

Thanks for putting up with me!

Diggsey
13
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 23rd Jun 2009 14:41
1) I can't work out what is wrong with that code yet, it is a very odd problem. Here is a few things that may cause problems:

- You are using 1 pixel = 1 box2d unit, and box2d is optimized for the scale 1 box2d unit = 1 meter. (Using the pixel scale can cause certain things like torque and force to become HUGE values, which can cause problems)

- If you set your world to enable sleeping, you will need to use b2BodyWakeUp when you set the velocity or apply forces or impulses to that body

2) That should be fine There is a limit of about 16 or 32 shapes per body, so make sure you stay under that. Seeing as they are static geometry, they should take very little processing time. If speed does become a problem, you could merge adjacent triangles together to produce larger shapes, as long as they remain convex. Also, you could remove triangles that can never be hit because they are behind other triangles.

MonoCoder
13
Years of Service
User Offline
Joined: 4th Dec 2005
Location: england
Posted: 23rd Jun 2009 16:33
I think I've found the problem with the polygon not working - the angles were defined in reverse order (must've read somewhere that I had to do it like that ). Here's a slightly more focused program which has comments and has some notes on issues at the top, just to see if it helps anything. (I've also shrunk things down by /100'ing)




Thanks, and again for the tips!

Diggsey
13
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 23rd Jun 2009 19:38
The square problem is because you used 'cos' instead of 'sin' for the 'y' coordinate of the first vertex. At an angle of 45 degrees, they work out as the same.

The crashing is because there is a limit of 512 collision proxies each time-step (You very rarely get more than about 20!) and creating hundreds of shapes in the same position is the most effective way to reach that 512 collision mark

MonoCoder
13
Years of Service
User Offline
Joined: 4th Dec 2005
Location: england
Posted: 25th Jun 2009 23:38
Ah ok. So long as that limit isn't on bodies I'm fine with that. And lol, ITT: I fail at proofreading.

Okay, I won't promise I'll stop asking questions after this because I've not managed it so far. But I was wondering if this sort of thing is achievable:



In a nutshell: Turn collision between objects on and off in some way (directly between bodies, shapes, or groups). Not sure where this might apply - in the picture I could just delete bodies for the background objects until they come back to the foreground, but if the body data is needed that might be less feasible. Or something. Or they might need to collide with other things while back there.
Another example would be my pipe-clinging zapper enemy. It needs to be collideable with the player, but would probably go nuts if it's partly stuck inside a static body.

One more thing - If I want to resize a shape in a body, should it be fine to simply delete the shape and place a differently sized one in it's place?


Ta for your time!

Diggsey
13
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 26th Jun 2009 00:20
Here's a copy of an email I sent to Nex explaining how to do what you're after:

Quote: "
b2SetShapeTemplateCategoryBits and b2SetShapeTemplateMaskBits are the commands you are looking for.

The category bits of one shape are bitwise ANDed with the mask bits of the second shape in a collision. If the result is non-zero, a collision takes place. I'm not entirely sure about the priorities, but I think that if either the category bits of the first AND with the mask bits of the second to produce a non-zero value, or the category bits of the second AND with the mask bits of the first to produce a non-zero value, there will be a collision.

The easiest way to use it is to say that each bit represents a group. If a shape's category bit for that group is set, the shape is a member of that group, and if its mask bit for that group is set, it will collide with shapes in that group.

For example:
Group:
15.................etc................0
Category bits:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 (Each one is 16 bits long, a word in DBPro)
Mask bits:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

That shape would be in group 1, but would only collide with objects in group 0.

Hope that helps,
Diggsey
"


Yes, deleting the shape and re-adding it is the best way to resize it, just make sure you recalculate the mass afterwards

MonoCoder
13
Years of Service
User Offline
Joined: 4th Dec 2005
Location: england
Posted: 26th Jun 2009 01:58
Awesome.

Though if a shape should collide every group when it's mask bit is set to 1:



I take it none-template shapes have a group to themselves? Not that that detail troubles me.

I was wondering, if you took a shape away and replaced it, would any current collisions with the deleted shape go awry or ought?

Diggsey
13
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 26th Jun 2009 11:26
@MonoCoder
No, when its mask bit is set to 1 it should only collide with objects in group 0. (Or 1 depending on where you start counting!)

I'm not sure about the default vales, but it should be 0xFFFF for both the mask and group.

Deleting a shape will cause the engine to think that the shape has moved away from the object it was colliding with The only problem is if you add a new shape already overlapping an existing shape, but it will probably separate quite quickly.

MonoCoder
13
Years of Service
User Offline
Joined: 4th Dec 2005
Location: england
Posted: 26th Jun 2009 15:51 Edited at: 27th Jun 2009 01:24
Ah, I was using the bin to decimal function which wasn't actually doing anything; I didn't catch on so it was setting both things to 0. Using %1111111111111111 or anything none-zero works as you say. Going to stick to binary instead of hex as it's a bit easier to get my head around.

Your help is awesome. I've actually run out of question for now. Ta!


edit: I've registered on the wiki and added pages for the set bits commands.

edit2: Actually I have a quick question. I want to handle collision by getting data from the Contact Listener and passing it straight to Lua so objects can digest it or whatever. If I do it like this, are there time constraints? ie. Lua running code while Box2D waits to carry on? Or does it only come back with collisions after finishing stepping the world? If not, if an Object tried to change a Box2D object mid-step, would it crash?
Sorry, just curious

Neuro Fuzzy
12
Years of Service
User Offline
Joined: 11th Jun 2007
Location:
Posted: 7th Aug 2009 04:09
Hey, could you explain a bit more about contact listeners and contact manifolds? The contact listener sample explain everything enough to kind of use it, but it's still unclear. Some questions i have: What exactly are contact manifolds? What has to be passed to the contact listener function? Why is the "contactpoint" and contact id seperate?

Btw, this is a great wrapper, i've already got some cool physics working (over 100 objects moving onscreen), the only problem is the lack of documentation.
Diggsey
13
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 7th Aug 2009 12:00
@Nero Fuzzy

Originally, there was only one way to get any collisions that had occured, which was by getting a list of contacts (different from contact points) in the main loop, and then iterating through them. Each contact represented a collision between a pair of shapes.

Each contact had multiple manifolds, and each manifold represents an actual overlap between two shapes (presumably for future use, when with more complex shapes there may be multiple overlaps between two shapes). Each manifold has a small set of points which box2d creates to approximate the overlap area.

So, the contact stored which two shapes were colliding, and a list of manifolds, and the manifold stored a list of points, and all the collision data associated with each point such as the normal, the amount of overlap, etc.

However, with box2d v2, Erin introduced CCD, which means that contacts may only exist INSIDE a call to b2Step, and so I needed to implement a callback, in the form of a contact listener, or it would be possible to miss collisions between objects using CCD.

Because it is a pain for the user to manually iterate through all the contacts, and for each contact iterate through the manifolds, and then for each manifold, iterate through all the points, the first parameter to contact listeners is a contact point.

A contact point is the new equivalent of a single point in a manifold, but from a contact point, you can also get all the information that you could get from both a manifold and a contact.

The last thing to explain is IDs: both points in a manifold, and contact points have an associated ID. The ID is just a number which box2d generates to keep track of contacts (for the simulation to be stable, box2d must know the difference between contacts which are new, and contacts which were present before but haven't been fully resolved yet).

The second parameter to the contact listener indicates whether the contact point was just created, is about to be destroyed, or has been maintained.

Neuro Fuzzy
12
Years of Service
User Offline
Joined: 11th Jun 2007
Location:
Posted: 7th Aug 2009 19:48
Okay, i'm starting to catch on.

One thing that's confusing me still is that in your contact listener function, theres the ContactPoint input, but then you also make a call to b2GetContactPointID. What's the difference? Is contactpoint a pointer to the actual contactID?

Basically, i'm trying to get a force from a collision, to make breakable objects (ie two object slam together, if the collision force is over a certain threshold, one or both of them break). I tried changing the contact listener function to this:


but that just crashes.i still don't get what i'm doing wrong though. If thecontact point is a point in the manifold, why can't i pass it to a manifol d function (or if i can, why is b2getcontactid the wrong command there)?
Diggsey
13
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 10th Aug 2009 00:37
Quote: "The ID is just a number which box2d generates to keep track of contacts"


It has no more meaning than that.

Quote: "but that just crashes"


That's because the contact point ID is NOT a contact, it is just a unique number. (Unique for the life of the contact, after the contact is destroyed, another one could later be created using the same ID).

Basically, in every step, box2d builds a list of collisions between shapes. For each collision it will generate some contact points, and send a 'created' message for each point to the contact listener. The next step, it will do the same again, but for each contact point it will check if a similar one existed in the last step (based on shapes colliding and the particular edges and vertices overlapping).

If one did exist, it will give it the same ID, and it will send a 'maintained' message. If it didn't exist, it gives it a new ID and sends a 'created' message like before. If any contacts from the last step cannot be matched up, 'destroyed' messages will be sent for those contacts.

The way it works allows you to more easily react to simulation events, because you can simply play a sound on the 'created' event, without having to worry about it playing multiple times because the objects stay colliding.

Basically, if the function isn't 'b2*ContactPoint*' then you can't use it with the ContactPoint input! As I said, the manifolds and contacts are the old ways to get collision before CCD, and were left in for compatibility. Just don't use them, they are not needed

Neuro Fuzzy
12
Years of Service
User Offline
Joined: 11th Jun 2007
Location:
Posted: 10th Aug 2009 05:45
soo...
b2GetContactPointID(ContactPoint)

returnd the ID of the contact point, but the variable ContactPoint is just used to identify contact points...? Here is what i'm confused about:

The program is passed ContactPoint, which is different (apparently) from b2GetContactPointID(ContactPoint), but commands like b2GetContactPointPositionX, are being passed ContactPoint, in the argument where ContactPointID is supposed to go. So should b2GetContactPointID be ignored, because ContactPoint is the ContactID that should be used with the "newer" commands?

And if i don't need to be concerned with contact manifolds, how could i get the impact force of one object on the other?

Basically, b2GetContactPointID doesn't return ContactPoint, but ContactPoint is passed into the function for the argument contactpointid... which doesn't really make sense...

also, b2getmanifoldpointnormalforce is the only command i can find that returns a force, and has a contact point as an argument, so i'd think i would need to use that command to get a normal force.
Diggsey
13
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 10th Aug 2009 13:42
The confusion is that there are two sorts of ID numbers here. b2GetContactPointID returns Box2D's internal ID, and it is effectively meaningless unless compared with another internal ID to match up contacts. The ID numbers that all the other commands take and return are the DBPro ID numbers. These numbers identify all box2d objects to the plugin.

No commands use the value from b2GetContactPointID, it is ONLY to compare contacts over multiple time steps, because even if a contact point existed before, it will still have a new DBPro ID because it has new data, so to compare them, the plugin gives you access to the internal ID!

The command to get the amount of force in the collision is the similarly named 'b2GetContactPointNormalForce' command

You can also get the direction of impact using 'b2GetContactPointNormalX/Y'.

Here is a complete command list for contact points:

b2GetContactPointID
b2GetContactPointNormalX
b2GetContactPointNormalY
b2GetContactPointNormalForce
b2GetContactPointPositionX
b2GetContactPointPositionY
b2GetContactPointSeparation
b2GetContactPointShapeA
b2GetContactPointShapeB
b2GetContactPointTangentForce

Neuro Fuzzy
12
Years of Service
User Offline
Joined: 11th Jun 2007
Location:
Posted: 10th Aug 2009 22:48
aaah, ok. But... those commands aren't in the wiki! The only contact commands there are:

b2GetContactManifoldCount
b2GetContactManifold
b2GetContactShapeA
b2GetContactShapeB
b2GetContactSolid
b2GetContactFriction
b2GetContactRestitution
b2GetContactTOI

and as far as i'm aware, there isn't an alternative command list to use. (actually, now that i'm checking the .ini file, i can see those commands there. maybe it would be better just to use that instead :\)

thanks
Diggsey
13
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 11th Aug 2009 02:17
@Neuro Fuzzy
Those commands are quite new and I'm afraid I never got around to adding them. It is a wiki though, so you can add them if you want

Stefan p
10
Years of Service
User Offline
Joined: 2nd Nov 2008
Location: Online
Posted: 9th Oct 2009 22:17
Your wiki isn't working when I go to the page it says its suspened. Don't know if you did something but just wanted to let you know.

Thanks, Stefan
Diggsey
13
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 10th Oct 2009 01:29
Diggsey
13
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 12th Oct 2009 02:08
I've updated the wiki to use templates now

It is much easier to add pages for commands and functions. For information on how to add command pages, go to the page 'Template:Command' and for function pages, 'Template:Function' and it will explain how to use the templates. You can see existing help files as well. (Although I've only converted about 40% of the command and function help files over to using templates so far)

Stefan p
10
Years of Service
User Offline
Joined: 2nd Nov 2008
Location: Online
Posted: 12th Oct 2009 18:33 Edited at: 16th Oct 2009 22:35
Thank You, and Good Job, I was looking for 2d physics and this is a nice wrapper.

Edit: Btw I can't get to help files from editor and I don't think you gave out the help files with the download it only had the INI and the DLL. Some Tutorials for this would be nice. Something simple like getting an animated character to move on ground and be able to jump and shoot bullets.

Thanks, Stefan
Stefan p
10
Years of Service
User Offline
Joined: 2nd Nov 2008
Location: Online
Posted: 2nd Nov 2009 21:59
I think i should repost incase you don't check on this thread and just use mailback, well anyways you can't access the help files from within DBP normal editor U.7

Thanks, Stefan
Diggsey
13
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 2nd Nov 2009 23:45
@Stefan p
The help files can be downloaded here: http://tinyurl.com/664fzl

They are simply shortcuts to the online wiki, but it makes it easier to access them from the editor. There are so many commands that not all of them have help files, but there are a couple of sample programs on the wiki, and some general explanation pages, so you should be able to figure most things out.

If you can't then ask on this thread, and I can explain it (and perhaps improve the wiki).

Stefan p
10
Years of Service
User Offline
Joined: 2nd Nov 2008
Location: Online
Posted: 3rd Nov 2009 22:52
If you're talking about the top download, it just has the INI and DLL for me. When I hit F1 on them it still doesn't open the wiki. mabye you forgot to attach the help files or something

Thanks, Stefan
Diggsey
13
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 4th Nov 2009 18:55 Edited at: 4th Nov 2009 18:56
Oops, I must have updated the download and forgot to reinclude the help files.

I attached a zip containing them to this post. Extract it to your 'DBPro\Help\commands' directory.

Attachments

Login to view attachments
CCompiler
12
Years of Service
User Offline
Joined: 10th May 2007
Location: UK
Posted: 18th Dec 2009 23:25
The wiki is down again, is it possible to get it back up or at least an offline source.
Stefan p
10
Years of Service
User Offline
Joined: 2nd Nov 2008
Location: Online
Posted: 22nd Dec 2009 01:38
An offline source would be nice.

I am mother and father, but never nurse.I'm rarely still, but I never wander. What am I? See my sketch
swissolo
9
Years of Service
User Offline
Joined: 9th Jan 2010
Location:
Posted: 9th Apr 2010 02:45
An offline source would definitely be great, because the wiki is still down.

swis
BMacZero
13
Years of Service
User Offline
Joined: 30th Dec 2005
Location: E:/ N_America/ USA/ CA/ South
Posted: 9th Apr 2010 04:13 Edited at: 9th Apr 2010 04:13
Put it up on http://wiki.thegamecreators.com. I'd be happy to help if you have the files somewhere.

Diggsey
13
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 9th Apr 2010 12:51
Sadly, my HD containing a backup of the wiki files died at the same time as the website died (seems to be cursed!)

Now, I can either start the wiki from scratch for box2d v2, or I can make a new plugin for the latest version of box2d and make the help files as I go for once

I would prefer to do the second option, but I'll see what people want...

swissolo
9
Years of Service
User Offline
Joined: 9th Jan 2010
Location:
Posted: 13th Apr 2010 00:35 Edited at: 22nd Apr 2010 23:45
hmmm...
What is faster would be nice but you'll probably have to make a new plugin at some point anyway too, so?

Edit: After using the first version of this, could position object be an extra parameter when creating bodys? One command is nicer than 2.

swis
Alien Menace
AGK Developer
14
Years of Service
User Offline
Joined: 11th Jan 2005
Location: Earth (just visiting)
Posted: 27th May 2010 06:49
Hi Diggsey!

It would be nice to get some solid documentation up for the current version because we have that now and it's ready to go. For me, I'd prefer tutorials or example code to learn from rather than just the command summary. I had 1.41 figured out pretty well but was never really able to get my head around version 2. The documentation has always been the achilles heel of your otherwise excellent wrapper. Whatever you decide to do will be much appreciated.

Cheers
Steve

Intel Core Duo2 E6850 3.0 GHz - 2x Geforce 8800 GTS SLI - 6GB RAM - Creative X-FI - Windows 7 64-bit.
Diggsey
13
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 27th May 2010 15:34 Edited at: 27th May 2010 16:23
OK, I've got a week and a half free of exams (except for my driving test...) so I'll make a start.

@swissolo
Making a new version is probably faster because I'll be far more motivated!

@Alien Menace
There's probably not much point making documentation to explain version 2 if there is a new version. I'd be better off making documentation to explain that instead.

Also, there are lots of cool new features in the new version including kinematic bodies and meshes.

Diggsey
13
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 28th May 2010 20:35 Edited at: 28th May 2010 20:41
Progress:
- I've got my environment completely set up and automated. (I click build and the string table, keywords, help files and plugin are all generated and copied to the correct folders!)
- I've created the common functions for checking that objects exist and are of the correct type.
- I've reintroduced support for automatic unit scaling, so you can now use whatever units you want. (Distance, Angle, Time and Mass can all use a custom scale)
- 20 commands already done, including the comments needed to generate their help files.

Example of a help file:


If I had made the help file for b2GetNextBody yet it would have automatically been made into a link to that page.

Attachments

Login to view attachments
GMS0012
12
Years of Service
User Offline
Joined: 18th Nov 2006
Location:
Posted: 28th May 2010 21:13 Edited at: 28th May 2010 21:14
where can I download your tool ?

is it only the .ini and .dll file

or you you have a complete setup?
Diggsey
13
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 28th May 2010 21:40
It is only an .ini and a .dll.
Put the .ini in your Editor/Keywords folder, and the .dll in your Compiler/plugins-user folder.

GMS0012
12
Years of Service
User Offline
Joined: 18th Nov 2006
Location:
Posted: 28th May 2010 22:23 Edited at: 28th May 2010 22:34
ah ok. and where can i find the help?

this is not working

http://diggsey.heliohost.org/box2d/wiki/

Login to post a reply

Server time is: 2019-07-20 02:15:16
Your offset time is: 2019-07-20 02:15:16