Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/environment3/data/levels/includes/asteroidField.lua @ 8946

Last change on this file since 8946 was 8946, checked in by fmauro, 14 years ago

asteroidBelt function added

File size: 2.3 KB
Line 
1--[[ asteroid field generator
2generates asteroid field
3        posX, posY, posZ - position in space
4        minSize, maxSize - size boundaries of each asteroid
5        radius - size of the cube around position in space
6        count - number of asteroids
7--]]
8function asteroidField(posX, posY, posZ, minSize, maxSize, radius, count)
9        for i = 1, count, 1
10        do
11                size = (math.random() * (maxSize - minSize)) + minSize
12                pX = (2 * math.random() * radius) - radius + posX
13                pY = (2 * math.random() * radius) - radius + posY
14                pZ = (2 * math.random() * radius) - radius + posZ
15                print("<StaticEntity ")
16               
17                print("position = \"") 
18                print(pX) print(",") 
19                print(pY) print(",") 
20                print(pZ) print("\"")
21               
22                print("scale = \"") print(size) print("\"")
23               
24                print("collisionType = static linearDamping = 0.8 angularDamping = 1 collisiondamage = 1000 enablecollisiondamage = true>")
25                print("<attached> <Model mass=\"") print(size * 10) print("\" mesh=\"ast") print(math.mod(i,6) + 1) print(".mesh\" /> </attached>")
26                print("<attached> <ForceField position=\"0,0,0\" mode=\"newtonianGravity\" diameter=\"") print(size * 2.7) print("\" massDiameter=\"") print(size * 2) print("\" mass=\"") print(size * 1000) print("\" /> </attached>")
27                print("<collisionShapes> <SphereCollisionShape radius=\"") print(size*2.5) print("\" /> </collisionShapes>")
28                print("</StaticEntity>")
29        end
30end
31
32
33--[[ asteroid belt generator
34generates asteroid belt
35        posX, posY, posZ - position in space
36        yaw, pitch - rotation
37        minSize, maxSize - size boundaries of each asteroid
38        radius0, radius1 - inner/outer radius
39        count - number of asteroids
40--]]
41function asteroidBelt(centerX, centerY, centerZ, yaw, pitch, segments, minSize, maxSize, radius0, radius1, count)
42        dPhi = (2 * math.pi) / segments
43        width = math.abs(radius1 - radius0)
44        radius = (radius1 + radius0) / 2
45        segmentCount = count / segments
46       
47        print("<StaticEntity collisionType=static yaw=")
48        print(yaw)
49        print(" pitch=")
50        print(pitch)
51        print(" position = \"") 
52                print(centerX) print(",") 
53                print(centerY) print(",") 
54                print(centerZ) print("\"") 
55        print(">")
56        print("<attached>")
57       
58        for i = 0, segments - 1, 1
59        do
60                asteroidField((radius * math.cos(i * dPhi)),
61                                        (radius * math.sin(i * dPhi)),
62                                        0, minSize, maxSize, width,segmentCount)
63        end
64       
65        print("</attached>")
66        print("</StaticEntity>")
67end
Note: See TracBrowser for help on using the repository browser.