; ------------------------------------ ; Name: Matrix Command Set ; Version: V1.0 ; Author: Simon Harrison ; Email: si@si-design.co.uk ; Website: http://www.si-design.co.uk ; Date: 18/09/01 ; ------------------------------------ Dim db_matrix(65535) Dim db_matrix_data(65535,5) Dim db_image(65535) ; ------------------ ; Name: DB_LoadImage ; ------------------ Function DB_LoadImage(filename$,image_no) db_image(image_no)=LoadTexture(filename$) End Function ; ---------------- ; Name: MakeMatrix ; ---------------- Function MakeMatrix(no,width#,depth#,xseg#,zseg#) db_matrix_data(no,0)=width# db_matrix_data(no,1)=depth# db_matrix_data(no,2)=xseg# db_matrix_data(no,3)=zseg# db_backdrop=True db_matrix(no)=CreateMesh() surf=CreateSurface(db_matrix(no)) For z#=1 To depth# : z#=z#-1 For x#=1 To width# : x#=x#-1 vert0=AddVertex(surf,x#,0,z#) vert1=AddVertex(surf,x#,0,z#+(depth#/zseg#)) vert2=AddVertex(surf,x#+(width#/xseg#),0,z#+(depth#/zseg#)) vert3=AddVertex(surf,x#+(width#/xseg#),0,z#) tri0=AddTriangle(surf,vert0,vert1,vert2) tri1=AddTriangle(surf,vert0,vert2,vert3) VertexNormal surf,vert0,0,1,0 VertexNormal surf,vert1,0,1,0 VertexNormal surf,vert2,0,1,0 VertexNormal surf,vert3,0,1,0 x#=x#+(width#/xseg#) Next z#=z#+(depth#/zseg#) Next End Function ; -------------------- ; Name: PositionMatrix ; -------------------- Function PositionMatrix(no,x#,y#,z#) PositionEntity db_matrix(no),x#,y#,z# End Function ; -------------------------- ; Name: PrepareMatrixTexture ; -------------------------- Function PrepareMatrixTexture(matrix_no,image_no,across,down) db_matrix_data(matrix_no,4)=across db_matrix_data(matrix_no,5)=down brush=CreateBrush() BrushTexture brush,db_image(image_no) surf=GetSurface(db_matrix(matrix_no),1) PaintSurface surf,brush End Function ; ---------------- ; Name: FillMatrix ; ---------------- Function FillMatrix(matrix_no,height#,tile_no) tile_no=tile_no-1 xseg=db_matrix_data(matrix_no,2) zseg=db_matrix_data(matrix_no,3) across=db_matrix_data(matrix_no,4) down=db_matrix_data(matrix_no,5) surf=GetSurface(db_matrix(matrix_no),1) cv=CountVertices(surf) ; Set height For z=0 To zseg For x=0 To xseg index=(x*4)+(z*(xseg*4)) If index>=0 And index=0 And index=0 And index=0 And index=0 And index=0 And index=0 And index=0 And index=0 And index=0 And index=0 And index=0 And index=0 And index=0 And index=0 And index=0 And index0 Then Return True Else Return False End Function ; --------------------- ; Name: MatrixPositionX ; --------------------- Function MatrixPositionX(no) EntityX#(db_matrix(no)) End Function ; --------------------- ; Name: MatrixPositionY ; --------------------- Function MatrixPositionY(no) EntityY#(db_matrix(no)) End Function ; --------------------- ; Name: MatrixPositionZ ; --------------------- Function MatrixPositionZ(no) EntityZ#(db_matrix(no)) End Function ; ------------------------ ; Name: GetMatrixHeight#() ; ------------------------ Function GetMatrixHeight#(matrix_no,x,z) xseg=db_matrix_data(matrix_no,2) surf=GetSurface(db_matrix(matrix_no),1) cv=CountVertices(surf) index=(x*4)+(z*(xseg*4)) If index>=0 And index=0 And index=0 And index=0 And index=0 And index=0 And index=0 And index=0 And index0 Then Return True Else Return False End Function ; ---------------------------- ; Name: MatrixWireframeState() ; ---------------------------- Function MatrixWireframeState() Return 0 End Function