alphagui problem
Blitz3D Forums/Blitz3D Userlibs/alphagui problem| 
 | ||
| I created a gui and it works great...only one problem there is a miniature version of it on the ground in my game as well as the one taking the whole screen. Any reasoning for this? Chris | 
| 
 | ||
| can you be more specific??? Post some screens?? | 
| 
 | ||
| here is a link to the screen shot you request   | 
| 
 | ||
| ..may i see pieces of code you initialize AlphaGui as well as commands related to it within main loop, in relation with renderworld.. | 
| 
 | ||
| AlphaInit ; initialize the gui system; create the camera used throughout the system. AlphaGuiLoad("ar.gui") ; load the gui in, set to fill the whole screen then in the main loop RenderWorld tween AlphaGui play\px = EntityX(play\entity) : play\py = EntityY(play\entity) : play\pz = EntityZ(play\entity) Flip Wend End | 
| 
 | ||
| ..you should put AlphaGui() update before renderworld since updates of all gadgets should happen before rendering..another thing what may causing this issue is that you using custom camera, after AlphaInit()...It is because after AlphaInit(), its created GUI camera..and obviously on your screen you have 2 cameras, i guess one you have created and another one belong to GUI...if so, you should do this: AlphaInit() AlphaGuiLoad("Example.gui") ;camera camera=CreateCamera() ;and now, place your GUI in front of camera you have created AlphaToFront ; bring the gui camera to front, in front of the previously created camera and keep AlphaGui() at begining of rendering loop, not after..keep in mind...you have 2 cams here..one AlphaGui and one yours.. I hope this helps.. | 
| 
 | ||
| Here is the full code minus types 
AppTitle "Alternate Realities client Test"
Dim splitdata$(10)
; collision determinators
Const TYPE_PLAYER=1,TYPE_BULLET=2,TYPE_TARGET=3
Const TYPE_SCENERY=10,TYPE_TERRAIN=11
Global noserver=0
Global fps	        = 30
Global send_freq=2	;send every fifth update
Global networked=0
Dim splitdata$(1)
SeedRnd MilliSecs()
				
Global my_status$
Global play.player
Global message$
Global msg$
Global client_id$
Global me_net
; basic graphics setup
;Include "start.bb"
Graphics3D 1024,768,16,2
send_ct=1
Include "3denginefunctions.bb" ; all functions for world interaction
Include "3denginetypes.bb" ; all types and structures
Include "Alpha_Include.bb" ; include the functions
Global player_model
Global water_level=-98
Global light,castle,land,ground,water,sky
Global bull_x#=1.5
Global playercount
Collisions TYPE_PLAYER,TYPE_TERRAIN,2,3
Collisions TYPE_PLAYER,TYPE_SCENERY,2,3
Collisions TYPE_BULLET,TYPE_TERRAIN,2,1
Collisions TYPE_BULLET,TYPE_SCENERY,2,1
Collisions TYPE_TARGET,TYPE_TERRAIN,2,2
Collisions TYPE_TARGET,TYPE_SCENERY,2,2
setupworld()
ChangeDir "environ"
LoadEnviron( "terrain-1.jpg","water-2_mip.bmp","sky","heightmap_256.bmp" )
ChangeDir "..\"
				
; connect to server
name$=Input("what is your name?")
ip$="ar.game-host.org"
port=8080
Global stream=OpenTCPStream(ip$,port)
If stream=0
	Print "could not connect to server...playing solo"
	Print "press a key to continue"
	WaitKey()
Else
split(ReadLine(stream))
			play.player=createplayer(0,8,5)
	
playercount=Int(splitdata$(1))
play\netid=Int(splitdata$(2))
play\name$=name$
	networked=1
	Print "You are playerid:"+play\netid+" and there are currently " + playercount + " players connected"
	WaitKey()
EndIf
Global walk=ExtractAnimSeq(play\model,280,310)
			;	AnimateMD2 play\model,1,1,32,100,1
				play\stream=stream				
				If networked=1 And playercount>1
				WriteLine(play\stream,1+","+play\netid+","+EntityX(play\entity)+","+EntityY(play\entity)+","+EntityZ(play\entity)+","+EntityPitch(play\entity)+","+EntityYaw(play\entity)+","+EntityRoll(play\entity)+",1,1,"+name$) ; notify new player of all existing player
				If ReadAvail(stream)
				For ct=1 To playercount-1
				p.player=createplayer(0,8,5)
				Line$=ReadLine(stream)
				split(Line$)
				p\netid=Int(splitdata$(2))
				p\px=Float(splitdata$(3)):p\py=Float(splitdata$(4)):p\pz=Float(splitdata$(5)):p\rx=Float(splitdata$(6)):p\ry=Float(splitdata$(7)):p\rz=Float(splitdata$(8))
		         p\Aniseq=Int(splitdata$(9)):p\animframe=Int(splitdata$(10)):p\name$=splitdata$(11)
            		p\stream=stream
    		        PositionEntity p\entity,p\px,p\py,p\pz,1
		         RotateEntity p\entity,p\rx,p\ry,p\rz
		         Next	
				End If
				End If
camera1.ChaseCam=CreateChaseCam( play\entity )
listener=CreateListener( play\entity,.1,1,.2 )
period=1000/fps
time=MilliSecs()-period
piv=CreatePivot()
PositionEntity piv,0,10,40
AlphaInit ; initialize the gui system; create the camera used throughout the system.
AlphaGuiLoad("ar.gui")  ; load the gui in, set to fill the whole screen
While Not KeyHit(1)
			AlphaGui
			AlphaToFront
	If KeyHit(17)
		wire=Not wire
		WireFrame wire
	EndIf
	Repeat
	elapsed=MilliSecs()-time
Until elapsed
	
	;how many 'frames' have elapsed	
	ticks=elapsed/period
	;fractional remainder
   tween#=Float(elapsed Mod period)/Float(period)
	
	For k=1 To ticks
		time=time+period
		If k=ticks Then CaptureWorld
		
		TurnEntity piv,0,5,0
		PositionEntity piv,0,7,40;47+Sin(time*.1)*40,40
		UpdateGame()
		UpdateWorld
	     
		For c.ChaseCam=Each ChaseCam
			UpdateChaseCam( c )
			PositionEntity sky,EntityX(c\camera),EntityY(c\camera),EntityZ(c\camera)
		Next
Next
	RenderWorld tween
play\px = EntityX(play\entity) : play\py = EntityY(play\entity) : play\pz = EntityZ(play\entity)
	Flip
Wend
End
Function UpdateGame()
	;For h.Hole=Each Hole
;		UpdateHole( h )
	;Next
	;For b.Bullet=Each Bullet
	;	UpdateBullet( b )
	
	;Next
	;For s.Spark=Each Spark
;		UpdateSpark( s )
	;Next
				UpdatePlayer(play )
		updatenetwork()
			
End Function
Function setupworld()
	
	do1=LoadMesh("drawftest.b3d")
   ScaleEntity do1,.03,.03,.03
PositionEntity do1,0,130,0
;	ScaleEntity do1,.003,.003,.003
	EntityType do1, TYPE_SCENERY
text2=LoadTexture("s04_stone01_s_01.tga")
EntityTexture(do1,text2)
   player_model=LoadAnimMesh( "necromancer.b3d" )
DebugLog(AnimLength(player_model));
	ScaleEntity player_model,.03,.03,.03
RotateEntity player_model,0,180,0;
	TranslateEntity player_model,0,-1.25,0
  
	HideEntity player_model
	
	
	
	
     ; setup collisions - PLAYER TO DUNGEON
	
End Function
Function UpdateNetwork()
	While ReadAvail(stream)
	split(ReadLine(stream))
		Select splitdata$(1)
		Case 1
	    For p.player=Each player
	  If Int(splitdata$(2))=p\netid
		
			p\px=Float(splitdata$(3)):p\py=Float(splitdata$(4)):p\pz=Float(splitdata$(5)):p\rx=Float(splitdata$(6)):p\ry=Float(splitdata$(7)):p\rz=Float(splitdata$(8))
	    	p\Aniseq=Int(splitdata$(9)):p\animframe=Int(splitdata$(10)):p\name$=splitdata$(11)
	            PositionEntity p\entity,p\px,p\py,p\pz,1
		RotateEntity p\entity,p\rx,p\ry,p\rz
			p\anim_speed=1.75
				 If Not AnimSeq(p\model) = walk
  necro_anim(p)
 EndIf
	    EndIf
	
	   Next
	   Case 2	
		p.player=createplayer(0,1.501,5)
		Animate p\model,0
		p\netid=splitdata$(2)	
	
		Case 7
		For p.player=Each player
		If Int(splitdata$(2))=p\netid
		FreeEntity p\entity
		
		Delete p
		
		EndIf
		Next	
		End Select
		
		
Wend
For p.player=Each player	
If Animating(p\model)=False And anim_whichone(p\model)<>1
Animate p\model,0
EndIf
Next
End Function
Function UpdateChaseCam( c.chasecam )
	
	If KeyDown(200)
		TranslateEntity c\heading,0,-3,0
	Else If KeyDown(208)
		TranslateEntity c\heading,0,+3,0
	EndIf
	
	dx#=EntityX(c\target,True)-EntityX(c\camera,True)
	dy#=EntityY(c\target,True)-EntityY(c\camera,True)
	dz#=EntityZ(c\target,True)-EntityZ(c\camera,True)
	
	TranslateEntity c\camera,dx*.1,dy*.1,dz*.1
	
	PointEntity c\camera,c\heading
	
	PositionEntity c\target,0,0,0
	ResetEntity c\target
	PositionEntity c\target,0,3,-10
	
;	PositionEntity c\sky,EntityX(c\camera),EntityY(c\camera),EntityZ(c\camera)
	AlphaToFront
End Function
Function CreatePlayer.Player( x#,y#,z#)
	p.Player=New Player
	p\px=x
	p\py=y
	p\pz=z
	p\entity=CreatePivot()
	p\model=CopyEntity( player_model,p\entity )
	PositionEntity p\entity,x,y,z,0
	EntityType p\entity,TYPE_PLAYER
	EntityRadius p\entity,1.5
	ResetEntity p\entity
	HideEntity player_model
	Return p
End Function
Function CreateChaseCam.ChaseCam( entity )
	c.ChaseCam=New ChaseCam
	c\entity=entity
	c\camera=CreateCamera()
	
	c\target=CreatePivot( entity )
	PositionEntity c\target,0,3,-10
	EntityType c\target,TYPE_TARGET
	
	c\heading=CreatePivot( entity )
	PositionEntity c\heading,0,0,20
;	c\sky=CopyEntity( sky )
	Return c
	
End Function
Function UpdatePlayer( p.Player )
			DebugLog("anim frame:"+AnimTime#(p\model))
move$=""
	If KeyHit(56)	;fire?
;		CreateBullet( p )
	EndIf
	If KeyDown(203)	;left/right
		move$="L"		
		TurnEntity p\entity,0,6,0	;turn player left/right
	ElseIf KeyDown(205)
	    move$=move$+"R"		
		TurnEntity p\entity,0,-6,0
	EndIf
	
	If KeyDown(30)		;forward
	    move$=move$+"F"		
		If p\anim_speed<=0
			p\anim_speed=1.75
;	Stop
		DebugLog("animseq:"+AnimSeq(p\model))
		 If Not AnimSeq(p\model) = walk
  necro_anim(p)
 EndIf
	;		anim_walk(p)
		EndIf
		MoveEntity p\entity,0,0,1
	
	ElseIf KeyDown(44)	;back
	    move$=move$+"B"		
		If p\anim_speed>=0
			p\anim_speed=-1.75
			 If Not AnimSeq(p\model) = walk
  necro_anim(p)
 EndIf
		EndIf
		MoveEntity p\entity,0,0,-1
	ElseIf p\anim_speed
	p\anim_speed=0
	Animate p\model,0
;			anim_idle(p)
			;move$="I"
   EndIf	
	
	Goto skip	
	ex#=EntityX(p\entity):ez#=EntityZ(p\entity)
	PositionEntity p\entity,ex,TerrainY( land,ex,0,ez )+1.5,ez
	Return
	.skip
	
	ty#=EntityY(p\entity)
	y_vel#=(ty-p\player_y)
	p\player_y=ty
	
	If KeyHit(57)	;jump?
	y_vel=5	;2.4
    ;move$=move$+"JUMP"		
Else
	y_vel=y_vel-.5	;2
	EndIf
	TranslateEntity p\entity,0,y_vel,0	
	If networked=1 And move$<>""
;	p\Animframe=MD2AnimTime(p\model)
	If  Instr(move$,"L") Or Instr(move$,"R") Then WriteLine(stream,1+","+p\netid+","+p\px+","+p\py+","+p\pz+","+p\rx+","+p\ry+","+p\rz+","+7+","+p\animframe+","+p\name$)
	If  Instr(move$,"F") Or Instr(move$,"B") Then WriteLine(stream,1+","+p\netid+","+p\px+","+p\py+","+p\pz+","+p\rx+","+p\ry+","+p\rz+","+8+","+p\animframe+","+p\name$)
	EndIf
	
	p\px=EntityX(p\entity)
	p\py=EntityY(p\entity)
	p\pz=EntityZ(p\entity)
	p\rx=EntityPitch(p\entity)
	p\ry=EntityYaw(p\entity)
	p\rz=EntityRoll(p\entity)
	my_status$="A"
.totallyskip
End Function
Function LoadEnviron( land_tex$,water_tex$,sky_tex$,height_map$ )
	
	light=CreateLight()
	TurnEntity light,45,45,0
	LightRange light,500
;	AmbientLight 10,10,10 ;dungeon to be dark, except for torch (local) lighting
	
	LightRange light,1
	land_tex=LoadTexture( land_tex$,1 )
	ScaleTexture land_tex,10,10
	
	land=LoadTerrain( height_map$ )
	EntityTexture land,land_tex
	
	TerrainShading land,True
	PositionEntity land,-1000,-100,-1000
	ScaleEntity land,2000.0/256,100,2000.0/256
	EntityType land,TYPE_TERRAIN
	TerrainDetail land,750,True
	
	For k=1 To n_trees
		Repeat
			tx#=Rnd(-70,70)-150
			tz#=Rnd(-70,70)+400
			ty#=TerrainY( land,tx,0,tz )
		Until ty>water_level
		t=CopyEntity( tree_sprite )
		PositionEntity t,tx,ty,tz
		ScaleSprite t,Rand(2,3),Rand(4,6)
	Next
	
	ground=CreatePlane()
	EntityTexture ground,land_tex
	PositionEntity ground,0,-100,0
	EntityOrder ground,9
	
	water_tex=LoadTexture( water_tex$,3 )
	ScaleTexture water_tex,20,20
	
	water=CreatePlane()
	EntityTexture water,water_tex
	PositionEntity water,0,water_level,0
	
	sky=LoadSkyBox( sky_tex$ )
	EntityOrder sky,10
	HideEntity sky
	
End Function
Function LoadSkyBox( file$ )
	m=CreateMesh()
	;front face
	b=LoadBrush( file$+"_FR.jpg",49 )
	s=CreateSurface( m,b )
	AddVertex s,-1,+1,-1,0,0:AddVertex s,+1,+1,-1,1,0
	AddVertex s,+1,-1,-1,1,1:AddVertex s,-1,-1,-1,0,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
	;right face
	b=LoadBrush( file$+"_LF.jpg",49 )
	s=CreateSurface( m,b )
	AddVertex s,+1,+1,-1,0,0:AddVertex s,+1,+1,+1,1,0
	AddVertex s,+1,-1,+1,1,1:AddVertex s,+1,-1,-1,0,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
	;back face
	b=LoadBrush( file$+"_BK.jpg",49 )
	s=CreateSurface( m,b )
	AddVertex s,+1,+1,+1,0,0:AddVertex s,-1,+1,+1,1,0
	AddVertex s,-1,-1,+1,1,1:AddVertex s,+1,-1,+1,0,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
	;left face
	b=LoadBrush( file$+"_RT.jpg",49 )
	s=CreateSurface( m,b )
	AddVertex s,-1,+1,+1,0,0:AddVertex s,-1,+1,-1,1,0
	AddVertex s,-1,-1,-1,1,1:AddVertex s,-1,-1,+1,0,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
	;top face
	b=LoadBrush( file$+"_UP.jpg",49 )
	s=CreateSurface( m,b )
	AddVertex s,-1,+1,+1,0,1:AddVertex s,+1,+1,+1,0,0
	AddVertex s,+1,+1,-1,1,0:AddVertex s,-1,+1,-1,1,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
	;bottom face	
	b=LoadBrush( file$+"_DN.jpg",49 )
	s=CreateSurface( m,b )
	AddVertex s,-1,-1,-1,1,0:AddVertex s,+1,-1,-1,1,1
	AddVertex s,+1,-1,+1,0,1:AddVertex s,-1,-1,+1,0,0
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
	ScaleMesh m,100,100,100
	FlipMesh m
	EntityFX m,1
	Return m
End Function
Function anim_walk(p.player)
If anim_whichone(p\model)<>2
;			DebugLog("frame:"+MD2AnimTime(p\model))
;	AnimateMD2 p\model,1,p\anim_speed,1,31,1
EndIf
End Function
Function anim_walk2(p.player)
If anim_whichone(p\model)<>2
;			DebugLog("frame:"+MD2AnimTime(p\model))
	;AnimateMD2 p\model,3,p\anim_speed,1,31,1
EndIf
End Function
Function anim_idle(p.player)
If anim_whichone(p\model)<>1
;	AnimateMD2 p\model,1,1,32,100,1
End If
End Function
Function anim_whichone(md2)
End Function
Function pnu(p.player)
			pack$ = EntityX(p\Entity)+" "+EntityY(p\Entity)+" "+EntityZ(p\Entity)
;			SendNBMsg(1,pack,0,mainstream)
			pitch# = EntityPitch(p\entity)
			roll# = EntityRoll(p\entity)
			pack$=LSet$( pitch,7 )+LSet$( EntityYaw(p\entity),7 )+LSet$( roll,7 )
;			SendNBMsg(3,pack,nbmsgfrom(mainstream),mainstream)
End Function	
Function Split(DataToSplit$)
;Declare our variables
Local splitcounter = 0, pntr = -1,chris=1, pntr2 = 0, counter = 0
;	Continue to check for splits until we reach the end of the string
	Local a=0
	While pntr <> 0
		pntr = Instr(datatosplit$, ",", chris)
;	If we found a split then add 1 to the counter
		If pntr > 0 Then splitcounter = splitcounter + 1
	chris=pntr+1
	a=a+1
	Wend
;	Now we have the amount of items (-1) in the string so we can dimension our array
	Dim SplitData$(splitcounter + 1)
;	the first item in the string is handled differently than the rest since there is no comma preceding it
	pntr = 0:pntr2 = Instr(DataToSplit$, ",", 1)
	SplitData$(1) = Left$(DataToSplit$, pntr2 - 1)
;	After splitting off the first item we move on to the rest of the string.
	For counter = 2 To splitcounter
;	These 2 pointers keep track of the beginning and ending of the item we are looking for in the string.
		pntr = pntr2 + 1
		pntr2 = Instr(DataToSplit$, ",", pntr)
;	Now that we have the items location we can pull it from the main string and insert it in to our return array
		SplitData$(counter) = Mid$(DataToSplit$, pntr, (pntr2 - pntr))
	Next
;	Once we have done every instance of the comma delimiters we are left with the very end of the string
;	This also is handled differently than the rest of the string since there is no comma after it.
	SplitData$(counter) = Right$(DataToSplit$, Len(DataToSplit$) - pntr2)
;	Now we can return the # of items located in the string back to the calling program.
	Return (splitcounter + 1)
End Function
Function necro_anim(p.player)
;If Animateseq(p\model)=False
Animate p\model,1,p\anim_speed,1,10
;EndIf
End Function
 | 
| 
 | ||
| sorry its very NOT finished...so a lot of useless stuff in it | 
| 
 | ||
| AlphaToFront() should be before main loop, after AlphaGuiLoad.. ;like this: ;############################ AlphaInit() ; initialize the gui system; create the camera used throughout the system. AlphaGuiLoad("ar.gui") ; load the gui in, set to fill the whole screen AlphaToFront() While Not KeyHit(1) CLS AlphaGui ;################################### | 
| 
 | ||
| didnt work here is fixed part AlphaInit() ; initialize the gui system; create the camera used throughout the system. AlphaGuiLoad("ar.gui") ; load the gui in, set to fill the whole screen AlphaToFront() While Not KeyHit(1) Cls AlphaGui If KeyHit(17) wire=Not wire WireFrame wire EndIf Repeat elapsed=MilliSecs()-time Until elapsed | 
| 
 | ||
| i keep trying everything you are saying, but still its there ;( | 
| 
 | ||
| ..Chris..one of your cams are ON..thats why you have double HUD elements..Ill take a look closer when i came back...but point is..take a careful look where you updating your game camera in relation with Alpha Gui update... | 
| 
 | ||
| the only cam I have is a chase cam | 
| 
 | ||
| there is also AlphaGui cam created..do you have same FOV set for both cams?? | 
| 
 | ||
| probably since i dont think i set that at all | 
| 
 | ||
| ..ahh..ok..i see that you using AlphaInit, after creating your camera..that should happen (AlphaInit) after Graphics3D command and BEFORE any camera of yours...second I see that you using AlphatoFront in your camera update, and before main loop too, whats shouldnt be a case.. so, try to structure like this Graphics3D AlphaInit() AlphaGuiLoad() MyCamera=CreateCamera() AlphaToFront() ;main loop repeat AlphaGui() ..blah blah UpdateWorld() RenderWorld() Flip Until KeyDown(1) | 
| 
 | ||
| if I do that the gui goes away all together :( | 
| 
 | ||
| ..thats very very weird..it must be something more you messing with..because this basic structure should work with no problems at all..I never had issue with it.. | 
| 
 | ||
| ..try to keep same structure as I posted, except changing AlphaGui() position in relation with renderworld() |