Re: AttachNodeObject() Error
Posted: Sun Feb 17, 2013 3:43 pm
Don't know why you mentioned that, given that it is a defacto requirement to be a developer..........faulty brain
http://www.purebasic.com
https://www.purebasic.fr/english/
Don't know why you mentioned that, given that it is a defacto requirement to be a developer..........faulty brain
thats a great idea.defacto requirement to be a developer
Code: Select all
IncludeFile "Screen3DRequester.pb"
Enumeration
#MyMesh
#MyMatl
#MyEnt
#MyNode
#MyCamera
#MyLight
EndEnumeration
#CameraSpeed = 2
NewList sgListPts.s()
sgDelim.s = Chr(44)
igFaceCnt.i = 0
Define iKeyX.i, iKeyY.i, iMouseX.i, iMouseY.i
Restore MeshPoints
For i = 1 To 36
AddElement(sgListPts())
Read.s sgListPts()
Next i
If InitEngine3D()
InitSprite()
InitKeyboard()
InitMouse()
Add3DArchive("Data\Scripts", #PB_3DArchive_FileSystem)
Add3DArchive("Data\Textures", #PB_3DArchive_FileSystem)
Add3DArchive("Data/Packs/skybox.zip", #PB_3DArchive_Zip)
Add3DArchive("Data/Packs/desert.zip", #PB_3DArchive_Zip)
Parse3DScripts()
If Screen3DRequester()
AmbientColor(RGB(255,255,255))
GetScriptMaterial(#MyMatl, "Color/Yellow")
SetMaterialColor(#MyMatl, #PB_Material_AmbientColor, RGB(255,255,0))
MaterialBlendingMode(#MyMatl, #PB_Material_Add )
MaterialCullingMode(#MyMatl, #PB_Material_NoCulling)
CreateMesh(#MyMesh, #PB_Mesh_TriangleList, #PB_Mesh_Static)
FirstElement(sgListPts())
i = 0
SkyBox("desert07.jpg")
Repeat
MeshVertexPosition(ValD(StringField(sgListPts(),1,sgDelim)),ValD(StringField(sgListPts(),2,sgDelim)),ValD(StringField(sgListPts(),3,sgDelim)))
NextElement(sgListPts())
MeshVertexPosition(ValD(StringField(sgListPts(),1,sgDelim)),ValD(StringField(sgListPts(),2,sgDelim)),ValD(StringField(sgListPts(),3,sgDelim)))
NextElement(sgListPts())
MeshVertexPosition(ValD(StringField(sgListPts(),1,sgDelim)),ValD(StringField(sgListPts(),2,sgDelim)),ValD(StringField(sgListPts(),3,sgDelim)))
NextElement(sgListPts())
MeshFace(i, i + 1, i + 2)
igFaceCnt = igFaceCnt + 1
i = i + 3
Until i > 34
FinishMesh(#True)
CreateEntity(#MyEnt, MeshID(#MyMesh), MaterialID(#MyMatl), 0, 0, 0)
;Camera
CreateCamera(#MyCamera, 0, 0, 100, 100)
MoveCamera(#MyCamera,0,200,500, #PB_Absolute)
CameraLookAt(#MyCamera, EntityX(#MyEnt), EntityY(#MyEnt), EntityZ(#MyEnt))
CameraFixedYawAxis(#MyCamera, #True, 0, 1, 0)
CameraBackColor(#MyCamera, RGB(35, 35, 35))
;node
node = CreateNode(#PB_Any, 0,0,0)
AttachNodeObject(node, CameraID(#MyCamera))
;Light
CreateLight(#MyLight, RGB(255, 255, 255), 20, 150, 120)
AmbientColor(RGB(255, 255, 255))
Repeat
Screen3DEvents()
If ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
iKeyX = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Right)
iKeyX = #CameraSpeed
Else
iKeyX = 0
EndIf
If KeyboardPushed(#PB_Key_Up)
iKeyY = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Down)
iKeyY = #CameraSpeed
Else
iKeyY = 0
EndIf
EndIf
If ExamineMouse()
iMouseX = -(MouseDeltaX()/10)
iMouseY = -(MouseDeltaY()/10)
EndIf
RotateNode(node, 0, -0.4, 0, #PB_Relative)
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
EndIf
EndIf
End
DataSection
MeshPoints:
;01
Data$ "50.0000,50.0000,-50.0000"
Data$ "-50.0000,-50.0000,-50.0000"
Data$ "-50.0000,50.0000,-50.0000"
;02
Data$ "50.0000,50.0000,-50.0000"
Data$ "50.0000,-50.0000,-50.0000"
Data$ "-50.0000,-50.0000,-50.0000"
;03
Data$ "50.0000,50.0000,50.0000"
Data$ "-50.0000,50.0000,50.0000"
Data$ "-50.0000,-50.0000,50.0000"
;04
Data$ "50.0000,50.0000,50.0000"
Data$ "-50.0000,-50.0000,50.0000"
Data$ "50.0000,-50.0000,50.0000"
;05
Data$ "50.0000,-50.0000,50.0000"
Data$ "-50.0000,-50.0000,50.0000"
Data$ "-50.0000,-50.0000,-50.0000"
;06
Data$ "50.0000,-50.0000,50.0000"
Data$ "-50.0000,-50.0000,-50.0000"
Data$ "50.0000,-50.0000,-50.0000"
;07
Data$ "50.0000,50.0000,50.0000"
Data$ "50.0000,-50.0000,50.0000"
Data$ "50.0000,-50.0000,-50.0000"
;08
Data$ "50.0000,50.0000,50.0000"
Data$ "50.0000,-50.0000,-50.0000"
Data$ "50.0000,50.0000,-50.0000"
;09
Data$ "-50.0000,50.0000,50.0000"
Data$ "50.0000,50.0000,50.0000"
Data$ "50.0000,50.0000,-50.0000"
;10
Data$ "-50.0000,50.0000,50.0000"
Data$ "50.0000,50.0000,-50.0000"
Data$ "-50.0000,50.0000,-50.0000"
;11
Data$ "-50.0000,-50.0000,50.0000"
Data$ "-50.0000,50.0000,50.0000"
Data$ "-50.0000,50.0000,-50.0000"
;12
Data$ "-50.0000,-50.0000,50.0000"
Data$ "-50.0000,50.0000,-50.0000"
Data$ "-50.0000,-50.0000,-50.0000"
EndDataSectionIf you want the blue in a script to be changed to yellow all you have to do is edit the diffuse in the script.applePi wrote: i want it to be colored by Yellow from script, but can't get this unless inserting this line:
SetMaterialColor(#MyMatl, #PB_Material_AmbientColor, RGB(255,255,0))
if we replaced RGB(255,255,0) with RGB(0,0,255) we will get a blue color.
so whats the purpose of the script color in this case !!.
Code: Select all
material ColorYellow/Yellow
{
technique
{
pass
{
ambient 0.1 0.1 0.1
diffuse 1 1 0.1
specular 0.7 0.7 0.7 64
shading phong
}
}
}
Code: Select all
#MeshFromTriangles = 3
#MyEnt = 4
Define.f KeyX, KeyY, MouseX, MouseY
If InitEngine3D()
ExamineDesktops()
;************************ADD PATH TO SCRIPTS************************
Add3DArchive("Data/Scripts", #PB_3DArchive_FileSystem)
Parse3DScripts()
InitSprite()
InitKeyboard()
InitMouse()
DeskWid=DesktopWidth(0)
DeskHei=DesktopHeight(0)
OpenWindow(0, 0, 0, DeskWid, DeskHei, "Script Test, press Z to change light to Light_SpecularColor ", #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, DeskWid, DeskHei, 0, 0, 0)
Yellow = GetScriptMaterial(#PB_Any, "Color/Yellow")
CreateSphere(0, 40, 50, 50)
CreateEntity(0,MeshID(0), MaterialID(Yellow) , -90, 0, 0)
CreateCamera(0, 0, 0, 100, 100)
CameraBackColor(0, RGB(0,50,0))
MoveCamera(0,0, 100, 300)
CameraLookAt(0, 0, 0, 0)
CreateLight(0, $FFFFFF, 1560, 900, 500)
;SetLightColor(0, #PB_Light_SpecularColor, $FFFFFF)
WorldShadows(#PB_Shadow_Modulative, 6000, RGB(100,100,100))
;;;;Mesh from triangles list
CreateMesh(#MeshFromTriangles ,#PB_Mesh_TriangleList, #PB_Mesh_Static)
Restore MeshPoints
For i=0 To 5
Read.f x : Read.f y : Read.f z
Read.f u: Read.f v
MeshVertexPosition(x*2 , y*2, z*2 )
MeshVertexTextureCoordinate(u, v)
MeshVertexNormal(x, y, z)
Next i
NormalizeMesh(#MeshFromTriangles)
;reading how to build faces
Restore Triangles
For i=0 To 1
Read.w t1 : Read.w t2 : Read.w t3
MeshFace(t1, t2, t3)
Next i
FinishMesh(#True)
CreateEntity(#MyEnt, MeshID(#MeshFromTriangles), MaterialID(Yellow), 90, -50, 0)
RotateEntity(#MyEnt, 0, 100, 0, #PB_Absolute)
;;;oooooooooooooooooooooooooooooooooooooooooo
Repeat
Event=WaitWindowEvent()
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Z)
SetLightColor(0, #PB_Light_SpecularColor, $FFFFFF)
EndIf
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
Else
MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
End
DataSection
MeshPoints:
Data.f 50,0,0 , 0,0
Data.f -50,0,0 , 1,0
Data.f 0,60,0 , 1,1
Data.f 0,60,0 ,0,1
Data.f 50,0,-70 ,0,0
Data.f 50,0,0 ,1,0
Triangles:
Data.w 0,1,2
Data.w 3,4,5
EndDataSection