Type und Dim Problem

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

furbolg

Betreff: Type und Dim Problem

BeitragSo, Okt 17, 2004 5:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leutz !

Eigentlich kenn ich mich mit Types aus und sie sind super easy aber eines check ich net:

Code: [AUSKLAPPEN]

Type TTerrainData
field y#
field tex%
end type

Dim TerrainData.TTerrainData(0,0)
....
function Create_Terrain(TX,TZ)
Dim TerrainData(TX,TZ)
for z = 0 to TZ-1
  for x = 0 to TX-1
    TerrainData(x,z) = new TTerrainData
    TerrainData(x,z)\y = 1
    TerrainData(x,z)\tex = 0 ;noch keine Textur
  next
next

;eigentlich steht hier ne for schleife aber geht auch hier nicht (selber error)
debuglog "Y# : " + TerrainData(0,0)\y ; << Error: Array out of Bound oder so
end function



Habt ihr ne Idee wo der Fehler is ?[/b]

Hubsi

BeitragSo, Okt 17, 2004 5:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab eigentlich nichts verändert und bei mir gehts wunderbar. In die Debuglog schreibt er : "Y#: 1.0"Code: [AUSKLAPPEN]
Type TTerrainData
Field y#
Field tex%
End Type

Dim TerrainData.TTerrainData(0,0)
create_terrain(1,1)
WaitKey()
End
Function Create_Terrain(TX,TZ)
Dim TerrainData(TX,TZ)
For z = 0 To TZ-1
  For x = 0 To TX-1
    TerrainData(x,z) = New TTerrainData
    TerrainData(x,z)\y = 1
    TerrainData(x,z)\tex = 0 ;noch keine Textur
  Next
Next

;eigentlich steht hier ne for schleife aber geht auch hier nicht (selber error)
DebugLog "Y# : " + TerrainData(0,0)\y ; << Error: Array out of Bound oder so
End Function
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

furbolg

BeitragSo, Okt 17, 2004 5:52
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm ... komisch bei mir gehts jetzt auch aber bei der for schleife immer noch net ...

// edit

sehr komisch ...

Wenn ich alles nach dem erstellen Test gehts, sobald ich die Füllschleife nutzte gehts nicht .... muss den Code wohl nochmal überarbeiten ...
  • Zuletzt bearbeitet von furbolg am So, Okt 17, 2004 6:02, insgesamt 2-mal bearbeitet

Hubsi

BeitragSo, Okt 17, 2004 5:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Poste mal die Schleife, der Fehler kann ja nur dort zu finden sein Smile
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

furbolg

BeitragSo, Okt 17, 2004 6:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Auf deine Verantwortung Wink

Ich weiss nich wie ich das 3D Terrain in Blitz3D umsetzen soll ...
In C wars mit Pointer leichter ^^

Code: [AUSKLAPPEN]

Type TERRAIN_TLevelData
Field y#
Field tex%
End Type



Const TERRAIN_PatchSize = 16
Dim TERRAIN_LevelData.TERRAIN_TLevelData(0,0)
Dim TERRAIN_PatchMesh(0,0)
Dim TERRAIN_PatchSurface(0,0,0)

Function TERRAIN_CreateFlat(SizeX,SizeY)

;Our Cube look like this (Ascii Artist ;)
;         (0,1)       (1,1)
;   v2         v4
;   +--------+
;   |  \           |
;   |    \         |
;   |      \       |
;   |        \     |
;   |          \   |
;   |            \ |
;   +--------+
;   v0           v1
;         (0,0)       (1,0)

;   If model wrong dir then rotateentity camera,0,90,0
brush=CreateBrush(255,255,255)
;mesh=CreateMesh()
;surface=CreateSurface(mesh,brush)
;v0=AddVertex(surface,0+1,0,0+1)
;v1=AddVertex(surface,1+1,0,0+1)
;v2=AddVertex(surface,0+1,0,1+1)
;v3=AddVertex(surface,1+1,1,1+1)
;AddTriangle(surface,v0,v2,v1)
;AddTriangle(surface,v2,v3,v1)
;UpdateNormals mesh
;EntityFX mesh,2

;Redim + Leveldaten setzen
Dim TERRAIN_LevelData.TERRAIN_TLevelData(SizeX,SizeY)
Dim TERRAIN_PatchMesh(SizeX/TERRAIN_PatchSize,SizeY/TERRAIN_PatchSize)
Dim TERRAIN_PatchSurface(SizeX/TERRAIN_PatchSize,SizeY/TERRAIN_PatchSize,TERRAIN_PatchSize*TERRAIN_PatchSize)


For LY = 0 To SizeY-1
   For LX = 0 To SizeX-1
   TERRAIN_LevelData(LX,LY) = New TERRAIN_TLevelData
   TERRAIN_LevelData(LX,LY)\y = 0
   TERRAIN_LevelData(LX,LY)\tex = 0
   Next
Next

For LY = 0 To SizeY-1
   For LX = 0 To SizeX-1
      bla = TERRAIN_LevelData(tx,ty)\y
   Next
next


;Patches erstellen + füllen
tx = 0
ty = 0
pxpy = 0

For Y = 0 To (SizeX / TERRAIN_PatchSize)-1
   For X = 0 To (SizeY / TERRAIN_PatchSize)-1
   
   TERRAIN_PatchMesh(X,Y) = CreateMesh()
   

      For PatchY = 0 To TERRAIN_PatchSize-1
         For PatchX = 0 To TERRAIN_PatchSize-1
         
            If(PatchY = 0 And PatchX = 0)
              TERRAIN_PatchSurface(X,Y,0) = CreateSurface(TERRAIN_PatchMesh(X,Y),brush) ;beim 1. erstellen brauchen wir nur ein surface ^^

               bla = TERRAIN_LevelData(tx,ty)\y
               
               v0=AddVertex(TERRAIN_PatchSurface(X,Y,0),0+tx,0+TERRAIN_LevelData(tx,ty)\y,0+ty)
               v1=AddVertex(TERRAIN_PatchSurface(X,Y,0),1+tx,0+TERRAIN_LevelData(tx,ty)\y,0+ty)
               v2=AddVertex(TERRAIN_PatchSurface(X,Y,0),0+tx,0+TERRAIN_LevelData(tx,ty)\y,1+ty)
               v3=AddVertex(TERRAIN_PatchSurface(X,Y,0),1+tx,0+TERRAIN_LevelData(tx,ty)\y,1+ty)
               AddTriangle(TERRAIN_PatchSurface(X,Y,0),v0,v2,v1)
               AddTriangle(TERRAIN_PatchSurface(X,Y,0),v2,v3,v1)
               
               DebugLog ("X: "+X+" Y: "+Y+" TX: "+tx+" TY: "+ty)

            Else
               TERRAIN_PatchSurface(X,Y,pxpy) = -1 ;ungenutzt markieren
             EndIf
             
             pxpy = pxpy + 1
             tx = tx + 1
         Next
         ty = ty + 1
      Next
      
   UpdateNormals TERRAIN_PatchMesh(X,Y)
  EntityFX TERRAIN_PatchMesh(X,Y),2

   Next
Next


vielleicht hast du ja tipps wie ichs besser machen kann (in bezug ich mesh, surface etc. ich brauch 16*16 surface weil bei mir jeder Patch (16*16) theoretisch ne eigene Textur haben soll Wink

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group