92 lines
2.0 KiB
Plaintext
Executable File
92 lines
2.0 KiB
Plaintext
Executable File
ProcObjNumSegments = 32
|
|
|
|
plugin SimpleObject GtaProcObj
|
|
name:"Gta ProcObj"
|
|
classID:#(0x2e205dbb, 0x2d724d25)
|
|
category:"Gta"
|
|
(
|
|
parameters main rollout:params
|
|
(
|
|
radiusInner type:#float ui:radiusInner default:0
|
|
radiusOuter type:#float ui:radiusOuter default:0
|
|
)
|
|
|
|
rollout params "Two Faces Parameters"
|
|
(
|
|
spinner radiusInner "Inner Radius" type:#float range:[-1000,1000,0]
|
|
spinner radiusOuter "Outer Radius" type:#float range:[-1000,1000,0]
|
|
)
|
|
|
|
on buildMesh do
|
|
(
|
|
numVerts = (ProcObjNumSegments + 1) * 2
|
|
Count = (ProcObjNumSegments + 1)
|
|
segmentSize = 360.0 / ProcObjNumSegments
|
|
segmentAngle = 0
|
|
vertList = #()
|
|
polyList = #()
|
|
|
|
actualRadiusInner = radiusInner
|
|
actualRadiusOuter = radiusOuter
|
|
|
|
if actualRadiusInner < 0 then (
|
|
|
|
actualRadiusInner = -actualRadiusInner
|
|
)
|
|
|
|
if actualRadiusOuter < 0 then (
|
|
|
|
actualRadiusOuter = -actualRadiusOuter
|
|
)
|
|
|
|
for i = 1 to Count do (
|
|
|
|
innerVert = [actualRadiusInner * (sin segmentAngle),actualRadiusInner * (cos segmentAngle), 0]
|
|
outerVert = [actualRadiusOuter * (sin segmentAngle),actualRadiusOuter * (cos segmentAngle), 0]
|
|
|
|
append vertList innerVert
|
|
append vertList outerVert
|
|
|
|
if i != Count then (
|
|
|
|
append polyList [(i * 2) - 1,(i * 2) + 1,(i * 2)]
|
|
append polyList [(i * 2),(i * 2) + 1,(i * 2) + 2]
|
|
)
|
|
|
|
segmentAngle = segmentAngle + segmentSize
|
|
)
|
|
|
|
setmesh mesh numverts:vertList.count numfaces:polyList.count
|
|
|
|
for i = 1 to vertList.count do (
|
|
|
|
setvert mesh i vertList[i]
|
|
)
|
|
|
|
for i = 1 to polyList.count do (
|
|
|
|
setface mesh i polyList[i]
|
|
setedgevis mesh i 1 true
|
|
setedgevis mesh i 2 true
|
|
setedgevis mesh i 3 true
|
|
)
|
|
|
|
update mesh
|
|
)
|
|
|
|
tool create
|
|
(
|
|
on mousePoint click do
|
|
case click of
|
|
(
|
|
1: nodeTM.translation = gridPoint
|
|
3: #stop
|
|
)
|
|
on mouseMove click do
|
|
case click of
|
|
(
|
|
2: radiusOuter = gridDist.y
|
|
3: radiusInner = gridDist.y
|
|
)
|
|
)
|
|
) |