Thanks for the offer to share your code and feel free to post it here if you want.
I am sure we can learn from it, and that many people could use it.
Quote: "One of the biggest problems I had was that the built in particles are an emitter based system.
If you wanted to bulk affect the particles (or even individually) after they were emitted then you are out of luck. (by affect, I mean move them around like world co-ords)
"
Moving the built in particles around in world coordinates is not a problem. (using a work around)
As you can see from my video, they move along with the ship, and even stay in the right place when the ship is rotating.
You can move the ship forwards and backwards and rotate it left or right to change course, and the camera can be tilted slightly and panned 360 degrees so you can scan the horizon without having to turn the ship.
Maybe you cannot tell it, but the ship is moving in the world co-ordinates, just the camera is following the ship for the third person perspective which makes it hard to tell.
If you look closely, you can tell by the water when the ship is moving, and by the direction of the smoke from the smoke stack because it does not change direction (straight up) but flows because the ship and particle base is moving. (the lag caused by FRAPS makes it difficult to see, as well as the low resolution, but they are moving)
The ship is slower than normal to take off because of the frame rate drop, but it is moving and that is why I run into the other ship. (you can see it bump and the smoke gets bumped too because it stays at the smoke stack)
There are no long list of commands for moving the particles like the objects have, but you can set the position to the world coordinates of an object.
In my case I am using hidden boxes like the ones that I use for the ships ray casting for collision.
SetObjectPosition(208, GetObjectWorldX(1),GetObjectWorldY(1),GetObjectWorldZ(1))
SetObjectRotation(208, 0, GetObjectAngleY(1), 0)
MoveObjectLocalY(208, 50) // WATER CANNON FOR PLAYER SHIP
MoveObjectLocalZ(208, 188)
SetObjectPosition(209, GetObjectWorldX(1),GetObjectWorldY(1),GetObjectWorldZ(1))
SetObjectRotation(209, 0, GetObjectAngleY(1), 0)
MoveObjectLocalY(209, 110) //SMOKE STACK FOR PLAYER SHIP
MoveObjectLocalZ(209, -22)
SetObjectPosition(210, GetObjectWorldX(1),GetObjectWorldY(1),GetObjectWorldZ(1))
SetObjectRotation(210, 0, GetObjectAngleY(1), 0)
//MoveObjectLocalY(210, 10) //PROP WAKE FOR PLAYER SHIP
MoveObjectLocalZ(210, -170)
That way they are being positioned with global and local commands relative to the ship for the proper offsets to stay right when rotating.
The hidden boxes are following the ship, so I just set the position of the particles to their world coordinates.
Set3DParticlesPosition( 1, GetObjectWorldX(208),GetObjectWorldY(208),GetObjectWorldZ(208) )
Set3DParticlesPosition( 2, GetObjectWorldX(209),GetObjectWorldY(209),GetObjectWorldZ(209) )
Set3DParticlesPosition( 3, GetObjectWorldX(210),GetObjectWorldY(210),GetObjectWorldZ(210) )
This way, I can use all of those fancy commands for moving objects to move my particles.
I first did that when playing around modifying the 3d particles example included with AppGameKit, the hard part was getting the angles worked out when trying to spin them around.
EDIT
I have been making a lot of 3d particles without any frame rate losses, which is excellent. (the particles really make things come alive)
I made sure to use reasonable frequencies, and so far they take less hits than adding lots of objects.
I added 300 icebergs to my ocean and that dropped the frame rates from 59 to 42+ depending on which way I rotate the camera and how many are on screen.
The 3d particles I have added have not affected the frame rates at all, so I am very pleased and finding the limitations are easily worked around. (angles only so far)
The frame rates have been capped at 30 to save energy for mobile batteries, so the icebergs are not a problem either. (solved fan problem - it was uncapped before)
If i get to a point where the frame rates drop below 30 (29.xx) then I will simply add a LOD system for the icebergs and ships.
It is amazing what AppGameKit can do with the limited resources on these mobile devices.
Coding things my way since 1981 -- Currently using AppGameKit V2 Tier 1