Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I made a little CCSprite subclass to draw the terrain using alpha cut. You could expand that to do some multi-texturing and draw some nice high res terrain. It does a full refresh of the texture for each change. I didn't really profile it, but it seems to run fine that way. If the performance is fine and you can avoid the extra trouble of doing a partial refresh of the texture, I would.
I'd recommend inverting your colors, Chipmunk expects the value returned by the sampler to represent density. 0 is low density, and 1 is high density. Also you can use the values as an alpha texture in OpenGL without having to invert them.
I'd avoid indexed color bitmaps, especially if you are copying the raw bytes out of a CGImage loaded from one. It means that you are copying color indexes, not actual color values. If you use an anti-aliased greyscale png, you can get a smoother contour out of the terrain anyway.
Your don't need to fiddle with the bitmap in your pointInsideTerrain: method. You can just ask the sampler what the density at the point is.
Hmm... I think those were the only changes I made really.