-í Ž!½?csdkTd„Zd„Z@d„Zed„Z–eeeƒ—eeeƒ˜eeeƒ™eeeƒdS((s*c s:  |djo  gSn tdd|ƒ}  g} d|}xMt|ƒD]<}| it|ddƒƒt | ddd|ƒq\WxItt | ƒƒD]2}t | | || |dt | ƒgƒqµW|ot | ƒn| i| ƒt| |||ƒ| SdS(screates a cone origin X,Y,Z specifies the location for the center of the cone's base height specifies the height radius specifies the radius of the cone's base sides specifies how many sides the cone has endcap determines if the cone should have an endcap (0 = no, 1 = yes)iif360.0f-1.0iN(ssidess vert_insertsheightstopPointsvertssanglesrangesisappendsradiuss rotate_vertsslens poly_insertsendcapstranslate_vertssoriginXsoriginYsoriginZ( soriginXsoriginYsoriginZsheightsradiusssidessendcapsanglesistopPointsverts((s ./prefabs.pyscones$     0 c s”&'|djo (gSn)g}*g} +d|} ,xƒt|ƒD,]r} -|it|d|ƒƒ.t |ddd| ƒ/| it|ddƒƒ0t | ddd| ƒqPW2xbtt |ƒƒD2]K} 3t | | dt | ƒ| | || || dt |ƒgƒqßW5|iƒ6|o7t |ƒ8t | ƒn:|| } ;t| |||ƒ<| SdS(sncreates a cylinder origin X,Y,Z specifies the location for the center of the cylinder's base height specifies the height topRadius specifies the radius of the cylinder's top end bottomRadius specifies the radius of the cylinder's bottom end sides specifies how many sides the cylinder has endcap determines if the cylinder should have endcaps (0 = no, 1 = yes)if360.0if-1.0iN(ssidesstopVertss bottomVertssanglesrangesisappends vert_inserts topRadiussheights rotate_vertss bottomRadiusslens poly_insertsreversesendcapssvertsstranslate_vertssoriginXsoriginYsoriginZ( soriginXsoriginYsoriginZsheights topRadiuss bottomRadiusssidessendcapsstopVertssanglesisvertss bottomVerts((s ./prefabs.pyscylinders,      I    csg@EQt|||ƒ}Rt|||ƒ}St|||ƒ}Tt|||ƒ} Ut|||ƒ} Vt|||ƒ} Wt|||ƒ} Xt|||ƒ} Zt| |||gƒ[t| | | | gƒ\t||| | gƒ]t||| | gƒ^t|| | | gƒ_t| || | gƒa|||| | | | | gSdS(sÇcreates a cuboid min X,Y,Z specifies the coordinate for the cube's corner closest to the origin (0,0,0) max X,Y,Z specifies the coordinate for the cube's corner furthest from the origin (0,0,0)N(s vert_insertsminXsminYsminZsv1smaxXsv2smaxYsv3sv4smaxZsv5sv6sv7sv8s poly_insert(sminXsminYsminZsmaxXsmaxYsmaxZsv1sv2sv3sv4sv5sv6sv7sv8((s ./prefabs.pyscube@s  c sxelm|djp |djo ngSnotdd|ƒ}p|gg}q|g}rd|}sd|} td|}uxÀu|djoŻvg} wxt |ƒDw]n} xt|ddƒ}y|i |ƒz| i |ƒ|t|gd|dƒ~t| ddd| ƒq´W|i | ƒ€||7}q‹Wtddd|ƒ}‚|i |gƒƒ|i |ƒ…xÊt t|ƒdƒD…]Ż} †|| } ‡|| d} ˆx…t tt| ƒt| ƒƒƒDˆ]_} t| | dt| ƒ| | t| ƒ| | t| ƒ| | dt| ƒgƒqíWqĦW’t||||ƒ“|Sd S( sbcreates a sphere origin X,Y,Z specifies the center of the sphere radius specifies the radius numSlices determines how many 'layers' will be used to make the sphere (think 'wedding cake', or the latitude lines on a globe) numWedges determines how many 'wedges' will be used to make the sphere (think of an orange, or the longitude lines on a globe)iif180.0f360.0f-90.0f89.900000000000006f-1.0iN(s numSlicess numWedgess vert_insertsradiussvertsslicessvertss sliceAngles wedgeAnglescurrSliceAngles currSlicesrangesjsappends rotate_vertsslens nextSlicesmaxsis poly_insertstranslate_vertssoriginXsoriginYsoriginZ(soriginXsoriginYsoriginZsradiuss numSlicess numWedgessvertsslicess sliceAngles currSlices wedgeAnglesisjs nextSlicesvertsscurrSliceAngle((s ./prefabs.pyssphereesB         % aN(s pykludge3dsconescylinderscubesspheresregister_functions__name__(sspherescylinderscubescone((s ./prefabs.pys?s   ! % 1