you rock baby ;)
edit: i have got toms stencil libary from here and when your code work, i'll manage to make a shadow libary and you'll get it fisrt :)
edit2: after long searching i found a function which createes a volukme BUT the volume is created not just from the edges... so it is not useful :(
edit: i have got toms stencil libary from here and when your code work, i'll manage to make a shadow libary and you'll get it fisrt :)
edit2: after long searching i found a function which createes a volukme BUT the volume is created not just from the edges... so it is not useful :(
Function CreateVolume(entity, light) ;entity - the entity that casts the shadow ;light - the light entity from which the light ; ;This function is included in case somebody wants to build shadow volumes and try stuff out. ;This is fairly slow because it extrudes and caps every triangle on a mesh. This means ;that 6 times more triangles need to be made for each one on the mesh. ;(I tried faster methods but trust me its not easy) ;It may be useful only for very basic geometry. lx#=EntityX(light,True) ly#=EntityY(light,True) lz#=EntityZ(light,True) a_vol.volumes=New volumes a_vol\mesh=CreateMesh() ;EntityBlend a_vol\mesh,2 ;EntityFX a_vol\mesh,1 EntityColor a_vol\mesh,0,0,0 EntityAlpha a_vol\mesh,0.001 volsurf=CreateSurface(a_vol\mesh) numsurf=CountSurfaces(entity) vpos=CreatePivot() vposend=CreatePivot() VolumeDepth#=1000 ;For surfcount=1 To numsurf-1 surfcount=1 While surfcount <= numsurf cursurface=GetSurface(entity, surfcount) maxtricount=CountTriangles (cursurface) ;For tricount=0 To tricount-1 While tricount < maxtricount v1x#=VertexX(cursurface, TriangleVertex(cursurface, tricount, 0)) v1y#=VertexY(cursurface, TriangleVertex(cursurface, tricount, 0)) v1z#=VertexZ(cursurface, TriangleVertex(cursurface, tricount, 0)) TFormPoint v1x#,v1y#,v1z#, entity, 0 v1x#=TFormedX() v1y#=TFormedY() v1z#=TFormedZ() v2x#=VertexX(cursurface, TriangleVertex(cursurface, tricount, 1)) v2y#=VertexY(cursurface, TriangleVertex(cursurface, tricount, 1)) v2z#=VertexZ(cursurface, TriangleVertex(cursurface, tricount, 1)) TFormPoint v2x#,v2y#,v2z#, entity, 0 v2x#=TFormedX() v2y#=TFormedY() v2z#=TFormedZ() v3x#=VertexX(cursurface, TriangleVertex(cursurface, tricount, 2)) v3y#=VertexY(cursurface, TriangleVertex(cursurface, tricount, 2)) v3z#=VertexZ(cursurface, TriangleVertex(cursurface, tricount, 2)) TFormPoint v3x#,v3y#,v3z#, entity, 0 v3x#=TFormedX() v3y#=TFormedY() v3z#=TFormedZ() PositionEntity vpos,v1x#,v1y#,v1z# PositionEntity vposend, lx#,ly#,lz#,1 PointEntity vposend, vpos MoveEntity vposend, 0,0,VolumeDepth# v1xe#=EntityX(vposend, True) v1ye#=EntityY(vposend, True) v1ze#=EntityZ(vposend, True) PositionEntity vpos,v2x#,v2y#,v2z# PositionEntity vposend, lx#,ly#,lz#,1 PointEntity vposend, vpos MoveEntity vposend, 0,0,VolumeDepth# v2xe#=EntityX(vposend, True) v2ye#=EntityY(vposend, True) v2ze#=EntityZ(vposend, True) PositionEntity vpos,v3x#,v3y#,v3z# PositionEntity vposend, lx#,ly#,lz#,1 PointEntity vposend, vpos MoveEntity vposend, 0,0,VolumeDepth# v3xe#=EntityX(vposend, True) v3ye#=EntityY(vposend, True) v3ze#=EntityZ(vposend, True) v1=AddVertex(volsurf,v1x#,v1y#,v1z#) v1e=AddVertex(volsurf,v1xe#,v1ye#,v1ze#) v2=AddVertex(volsurf,v2x#,v2y#,v2z#) v2e=AddVertex(volsurf,v2xe#,v2ye#,v2ze#) v3=AddVertex(volsurf,v3x#,v3y#,v3z#) v3e=AddVertex(volsurf,v3xe#,v3ye#,v3ze#) AddTriangle (volsurf, v1,v1e,v2) AddTriangle (volsurf, v2,v1e,v2e) AddTriangle (volsurf, v1,v3,v1e) AddTriangle (volsurf, v3,v3e,v1e) AddTriangle (volsurf, v3,v2,v3e) AddTriangle (volsurf, v2,v2e,v3e) AddTriangle (volsurf, v1,v2,v3) ;cap top AddTriangle (volsurf, v1e,v2e,v3e) ;cap bottom tricount=tricount+1 Wend ;Next surfcount=surfcount+1 Wend ;Next FreeEntity vpos FreeEntity vposend End Function