| texture - texture to ask about |
|
Returns why a texture's most recent reload failed, or an empty string. When a reload goes wrong - a manual ReloadTexture or an automatic WatchTexture pickup - the game keeps showing the last-known-good pixels rather than breaking, which is exactly right but easy to miss: you saved the file, nothing changed on screen, and there is no crash to point at. TextureReloadError is where the answer lives. It returns the failure message for that texture's source, such as a file that no longer decodes with the original layout, or a texture that was never file-backed. An empty string means there is nothing to report: the last reload succeeded, or none has been attempted. A successful reload clears any earlier message. During live-editing sessions, print it near the thing you are tweaking - one Text call turns "why isn't my texture updating?" into an on-screen explanation. The same failures are also filed as error records in diagnostics (category "texture"), so DrawDiagnostics shows them too. See also: ReloadTexture, WatchTexture, CountDiagnostics, DrawDiagnostics. |
; TextureReloadError Example
; --------------------------
Graphics3D 640,480,0,2
SetBuffer BackBuffer()
SeedRnd MilliSecs()
camera=CreateCamera()
PositionEntity camera,0,0,-4
light=CreateLight()
RotateEntity light,45,45,0
; Write the texture file this example will reload, then load it
PaintFile 30,70,160
crate=CreateCube()
texture=LoadTexture("reload_error_demo.bmp")
EntityTexture crate,texture
While Not KeyDown(1)
; Space repaints the file properly and reloads it - this succeeds
If KeyHit(57) Then
PaintFile Rand(0,255),Rand(0,255),Rand(0,255)
ok=ReloadTexture(texture)
EndIf
; B overwrites the file with junk and reloads - the reload fails,
; the crate keeps its previous pixels, and the error is recorded
If KeyHit(48) Then
file=WriteFile("reload_error_demo.bmp")
WriteLine file,"this is not a bitmap"
CloseFile file
ok=ReloadTexture(texture)
EndIf
TurnEntity crate,0.5,1,0
; Arrow keys move the camera
If KeyDown(200) Then MoveEntity camera,0,0,0.1
If KeyDown(208) Then MoveEntity camera,0,0,-0.1
If KeyDown(203) Then TurnEntity camera,0,1,0
If KeyDown(205) Then TurnEntity camera,0,-1,0
RenderWorld
Text 0,0,"Space: good repaint B: corrupt the file Arrows: camera Esc: exit"
; TextureReloadError holds the most recent failure, or "" after success
If TextureReloadError(texture)<>"" Then Text 0,20,"TextureReloadError: "+TextureReloadError(texture) Else Text 0,20,"TextureReloadError is empty - last reload succeeded"
Flip
Wend
; Remove the file this example created
FreeTexture texture
DeleteFile "reload_error_demo.bmp"
End
; Draw a coloured pattern and save it as the reloadable file on disk
Function PaintFile(red,green,blue)
scratch=CreateTexture(64,64)
SetBuffer TextureBuffer(scratch)
ClsColor red,green,blue
Cls
Color 255-red,255-green,255-blue
Oval 12,12,40,40,True
SetBuffer BackBuffer()
Color 255,255,255
SaveBuffer TextureBuffer(scratch),"reload_error_demo.bmp"
FreeTexture scratch
End Function