@name NewYearTree @persist Tree:table Coef Balls:table HoloCount:normal function void buildTree( ConesCoef:normal ) { HoloCount = 4 Cone1 = table() Cone2 = table() Cone3 = table() Cylinder = table() Origin = entity():pos() Cone1["id", normal] = 1 Cone2["id", normal] = 2 Cone3["id", normal] = 3 Cylinder["id", normal] = 4 Cone1["pos", vector] = Origin + vec( 0, 0, Coef * 5 * ConesCoef + Coef * 4) Cone2["pos", vector] = Origin + vec( 0, 0, (Coef * 5 + Coef * 4) * ConesCoef + Coef * 4) Cone3["pos", vector] = Origin + vec( 0, 0, (Coef * 5 + Coef * 4 + Coef * 3) * ConesCoef + Coef * 4) Cylinder["pos", vector] = Origin + vec( 0, 0, Coef * 2 ) Cone1["radius", normal] = Coef*5 Cone2["radius", normal] = Coef*4 Cone3["radius", normal] = Coef*3 Cone1["heigth", normal] = Coef*5*2 Cone2["heigth", normal] = Coef*4*2 Cone3["heigth", normal] = Coef*3*2 Cone1["color", vector] = vec( 0, 255, 0 ) Cone2["color", vector] = vec( 0, 255, 0 ) Cone3["color", vector] = vec( 0, 255, 0 ) Cylinder["color", vector] = vec( 102, 51, 0 ) Cone1["model", string] = "cone" Cone2["model", string] = "cone" Cone3["model", string] = "cone" Cylinder["model", string] = "cylinder" Cone1["size", vector] = vec( 5, 5, 5 ) Cone2["size", vector] = vec( 4, 4, 4 ) Cone3["size", vector] = vec( 3, 3 ,3 ) Cylinder["size", vector] = vec(1, 1, 2) Tree:pushTable( Cone1 ) Tree:pushTable( Cone2 ) Tree:pushTable( Cone3 ) Tree:pushTable( Cylinder ) for( I = 1, Tree:count() ) { Table = Tree[I, table] holoCreate( Table["id", normal], Table["pos", vector], Table["size", vector], ang( 0, 0, 0 ), Table["color", vector] ) holoModel( Table["id", normal], Table["model", string] ) } } function void makeBalls( Radius:normal, Amount:normal, Size:normal, Axis:normal, Pos:vector ) { Since = HoloCount + 1 if( Amount > 30 - HoloCount + 1 ) { print( "You can't make more than 30 holos" ) return } HoloCount += Amount + 1 ConeBalls = table() Ax = Axis C = Axis / Radius Dec = Axis / Amount for( I = Since, Amount + Since ) { Ball = table() Ball["id", normal] = I Ball["color", vector] = vec( 255, 0, 0 ) Ball["size", vector] = vec( 1, 1, 1 ) * Size Ball["model", string] = "sphere" Value = 180 / floor( Amount / 3 ) * (I - Since + 1) Ball["pos", vector] = Pos + vec( Radius * cos( Value ), Radius * sin( Value ), Ax - Axis ) Axis -= Dec Radius = Axis / C holoCreate( Ball["id", normal], Ball["pos", vector], Ball["size", vector], ang( 0, 0, 0 ), Ball["color", vector] ) holoModel( Ball["id", normal], Ball["model", string] ) ConeBalls:pushTable( Ball ) } Balls:pushTable( ConeBalls ) } if( first() ) { Coef = 6 buildTree( 0.8 ) BallSizeCoef = 0.2 for( I = 1, 3 ) { Info = Tree[I, table] makeBalls( Info["radius", normal]+Coef*BallSizeCoef, 8, BallSizeCoef, Info["heigth", normal], Info["pos", vector] + vec( 0, 0, -Info["radius", normal] ) ) } }