;
; ------------------------------------------------------------
;
; PureBasic - ResetMaterial
;
; (c) Fantaisie Software
;
; ------------------------------------------------------------
;
;Use [F5]
IncludeFile #PB_Compiler_Home + "examples/3d/Screen3DRequester.pb"
Declare CreateMaterialScript(texture.s)
CreateMaterialScript("r2skin.jpg")
#PB_Engine3D_Entity = 2
#PB_Engine3D_BillboardGroup = 4
If InitEngine3D(#PB_Engine3D_DebugOutput)
InitSprite()
InitKeyboard()
InitMouse()
If Screen3DRequester()
Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Models" , #PB_3DArchive_FileSystem)
Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures", #PB_3DArchive_FileSystem)
Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Scripts" , #PB_3DArchive_FileSystem)
Parse3DScripts()
; Материал (Material)
GetScriptMaterial(0, "TestReset")
; Сетка (Mesh)
LoadMesh(0, "robot.mesh")
; Сущность (Entity)
CreateEntity(0, MeshID(0), MaterialID(0), -60, 0, 0)
CreateEntity(1, MeshID(0), MaterialID(0))
CreateEntity(2, MeshID(0), MaterialID(0), 60, 0, 0)
; Этот сохранит свой материал
CreateEntity(3, MeshID(0), #PB_Material_None, -60, 0, 60)
; Камера
;
CreateCamera(0, 0, 0, 100, 100)
MoveCamera(0, 150, 90, 150, #PB_Absolute)
CameraLookAt(0, 0, 50, 0)
CameraBackColor(0, RGB(0, 0, 30))
; - Свет
;
AmbientColor(RGB(75, 75, 75))
CreateLight(0, RGB(255, 255, 255), 0, 500, 0)
Repeat
Screen3DEvents()
If ExamineKeyboard()
If KeyboardReleased(#PB_Key_F5)
CreateMaterialScript("nskingr.jpg") ; Замена Текстуры
ReloadMaterial("TestReset", "ResetMaterial.material", #True)
GetScriptMaterial(0, "TestReset")
ResetMaterial(#PB_Engine3D_Entity)
EndIf
EndIf
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
End
EndIf
Else
MessageRequester("Ошибка","3D Движок не может быть инициализирован")
EndIf
Procedure CreateMaterialScript(texture.s)
If CreateFile(0, #PB_Compiler_Home + "examples/3d/Data/Scripts/ResetMaterial.material")
Restore Material
Line$ = "material TestReset"
While Line$<> "END"
If FindString(Line$, "MyTextureHere", 1)
Line$ = ReplaceString(Line$, "MyTextureHere", texture)
EndIf
WriteStringN(0, Line$)
Read.s Line$
Wend
CloseFile(0)
Else
MessageRequester("Инфо","не удается создать файл!")
EndIf
EndProcedure
DataSection
Material:
Data.s "{"
Data.s " technique"
Data.s " {"
Data.s " pass"
Data.s " {"
Data.s " texture_unit"
Data.s " {"
Data.s " texture MyTextureHere"
Data.s " }"
Data.s " }"
Data.s " }"
Data.s "}"
Data.s "END"
EndDataSection