"Allgemeine" Funktionen für Types

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Black Spider

Betreff: "Allgemeine" Funktionen für Types

BeitragFr, Dez 09, 2005 16:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leute,
hab mal ne kleine Frage, also:
In unserem Spiel gibt (und soll es) sehr viele Objekte Geben, die alle aus Types bestehen.
Nun sollen diese auch alle ein Update erhalten. Nur da ich echt keine Lust hab für jedes objekt eine einzelne update Funktion zu erstellen,
wollte ich eine Allgemeine Funktion erstellen, die dann für jeden Type aufgerufen wird.
Problem: die Types. es sollte eigentlich so aussehen:
BlitzBasic: [AUSKLAPPEN]

For s.stein = Each stein
objektupdate(s,stein,mesh,gewicht,90,90,90,-20)
Next

Function objektupdate(typekürzel$,Typename$,Objektname$,andereeigenschaften$,x,y,z,s)

TranslateEntity typekürzel$\objektname$,0,s,0

End Function

oder so ähnlich halt. leider funzt das nicht,...

Habt ihr ne Ahnung !?
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif
 

BIG BUG

BeitragFr, Dez 09, 2005 16:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit OOP (nur in BMax) könntest Du sowas realisieren.

In BB3D musst Du alle Objekte in einem Type verwalten, dann ist das auch kein Problem.
Es muss dann halt ein zusätzliches Feld "Klasse" oder so geben, mit dem Du dann einen normalen Stein von einem Feuerstein unterscheiden kannst -> entspricht dann der C4ID in Clonk...
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

Black Spider

BeitragFr, Dez 09, 2005 17:06
Antworten mit Zitat
Benutzer-Profile anzeigen
aha, klingt auch gut...

wie bekomme ich das mit dieser "klasse" hin ?
Kannst du mir da mal ein Beispiel nennen ?
Und:
wenn doch alle objekte in einem Type sind, und ich nur ein objekt neu machen will,
dann nehm ich ja:BlitzBasic: [AUSKLAPPEN]
ao.alleobjekte = New alleobjekte

doch dann wird doch der Ganze type berechnet...
(und auch die objekte die ich nicht will oder ?)

Danke!
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif
 

Klaas

BeitragFr, Dez 09, 2005 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Man kann Objekte so verschachteln da sich sowas ähnliches machen lässt.

Wie unten im Listing zu sehen ist kann man dann auf den Type Entity zugreifen welches für jedes Entity gleich ist und die Basiseigenschaften enthält, wie eben die Position.

Ich habe mal etwas angefangen, dabei war die Idee das man über brushes auch gewisse Materialeigenschaften zuweist. Ich poste das mal hier:
Code: [AUSKLAPPEN]

;entity classes
Const type_mesh = 1
Const type_terrain = 2
Const type_pivot = 3
Const type_sprite = 4
Const type_light = 5
Const type_camera = 6
Const type_plane = 7
Const type_mirror = 8
Const type_emitter = 9

Global default_brush.brush = createDefaultBrush()

Function createDefaultBrush.brush()
   t.texture = New texture
   t\texture = CreateTexture(8,8)
   t\scaleU# = 1
   t\scaleV# = 1
   t\blend = 1
   
   s.sound3d = New sound3d
   
   m.material = New material
   m\name$ = "_default"
   For i=0 To 15
      m\sound[i] = s
   Next
   
   b.brush = New brush
   b\brush = CreateBrush(255,255,255)
   b\name$ = "_default"
   
   ;vision
   b\alpha# = 1
   b\fx = 0
   b\blend = 1
   b\red = -1
   b\green = -1
   b\blue = -1
   For i=0 To 3
      b\texture[i] = t
   Next
   b\material = m

   Return b
End Function

Type Entity
   Field id
   Field entity
   Field name$
   
   Field class
   
   Field mesh.mesh
   Field terrain.terrain
   Field pivot.pivot
   Field sprite.sprite
   Field camera.camera
   Field plane.plane
   Field light.light
;   Field mirror.mirror
;   field emitter.emitter
   Field Parent.entity
   
   Field x#,y#,z#
   Field pitch#,yaw#,roll#
   Field EntityTyp
   
   Field PickMode
   Field PickModeObscurer
   Field copyof.entity
   Field visibility
   
   Field brush.brush
   Field Boundary.Boundary
   Field property.property
End Type

Type mesh
   Field xresource
   Field surf.surf
   Field scaleX#,scaleY#,scaleZ#
   Field lightmap.lightmap
End Type

Type terrain
   Field detail
   Field morph
   Field shading
   Field scaleX#,scaleY#,scaleZ#
End Type

Type pivot
   Field scaleX#,scaleY#,scaleZ#
End Type

Type sprite
   Field scaleX#,scaleY#
   Field handleX#,handleY#
   Field ViewMode
   Field fadeRate#
   Field fadeTo#
   Field rotation#
End Type

Type camera
   Field ClsRed,ClsGreen,ClsBlue
   Field ClsCol,ClsZB
   Field FogRed,FogGreen,FogBlue
   Field FogMode
   Field FogNear#,FogFar#
   Field ProjMode
   Field RangeNear#,RangeFar#
   Field ViewX,ViewY,ViewWidth,ViewHeight
   Field zoom#
End Type

Type light
   Field red#,green#,blue#
   Field typ
   Field range#
   Field coneIn#,ConeOut#
End Type

Type plane
   Field grid
End Type

Type surf
   Field surface
   Field mesh.mesh
   Field brush.brush
End Type

Type lightmap
   Field lightmap
   Field ressource$
End Type

Type brush
   Field id
   Field brush
   
   ;identifier
   Field name$
   
   ;vision
   Field alpha#
   Field shininess#
   Field fx
   Field blend
   Field red,green,blue

   ;texture
   Field texture.texture[4]
   Field frame[4]
   
   ;misc
   Field material.material
   Field order

   ;autofade
   Field AutofadeNear#
   Field AutofadeFar#
End Type

Type material
   Field id
   Field name$
   
   Field sound.sound3d[16]
   Field spawn.entity[16]
End Type

Type Boundary
   Field id
   Field x#,y#,z#,width#,height#,depth#
   Field radiusX#,radiusY#
End Type

Type Collision
   Field id
   Field name$
   Field SourceType.ColType
   Field TargetType.ColType
   Field Methode
   Field Reaction
End Type

Type ColType
   Field id
   Field num
   Field name$
End Type

Type property
   Field name$[16]
   Field value$[16]
End Type

Type Texture
   Field id
   Field texture
   
   Field name$
   Field width
   Field height
   Field start
   Field frames
   Field posU#,posV#
   Field scaleU#,scaleV#
   Field rotation
   Field blend
   Field coord
   Field flag
End Type

Type sound3D
   Field sound
   Field file$
   
   Field loop
   Field pitch
End Type


Wer jetzt meint das sei Speicherverschwendung ... das kann man so oder so sehen, einerseits ist das sicher so, andererseits kann man damit echt fantastische Sachen machen. Speicher ist bei den Mengen an Grafiken und Geometrie kaum ein Problem.[/code]

Black Spider

BeitragSa, Dez 10, 2005 16:10
Antworten mit Zitat
Benutzer-Profile anzeigen
hey das is gut! Ich probiers aus,
und wie ich das jetzt verstanden habe, erstellst du ein Objekt im Type Objekt.
Die Textur im Type Textur.
Die Speziellen eigenschaften im Type spezielleEigenschaften usw...

Und dann eine UpdateFunktion die die ID des Entsprechenden Objekts, der eigenschaft prüft,
und dann dementsprechend es so Updated wie es soll...

So müsste es gehen

Danke!
Vielen Dank!!!
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group