Can't load objects

Blitz3D Forums/Blitz3D Programming/Can't load objects

Ash_UK(Posted 2006) [#1]
Hi people. I am having a major problem here in getting my file requester to work. When I run the code and press L to load an object I get the error "Variable must be a type" for some reason. It highlights the code:

If KeyDown(200) Then MoveEntity m\entity,0,0,.1

As being the offending code. For some reason though.
I can't figure this one out its driving me insane :(

So the thing is, it shouldn't be flagging me an error to begin with as I haven't even had the chance to load a file for it to check in the first place :(

Here is my code. I would be very grateful if someone can help me out here.


Graphics3D 800,600
SetBuffer BackBuffer()


;file requester code 
Include "bin\file_request.bb"
Global file_path$="C:\"
;file$ = getopenfile$("Select file...",file_path$,"3DS file"+Chr(0)+"*.3ds"+Chr(0)+"Blitz 3D file"+Chr(0)+"*.b3d"+Chr(0))



Global L_KEY = 38
Global M_KEY = 50
Global W_KEY = 17
Global FULL_SCREEN_KEY = 33

Global view_x = 0;150
Global view_y = 0;100
Global view_width = 500
Global view_height = 300

Global FULL_SCREEN = 0	;Used to resize the window
Global MOVE = 0 		;Used to control the movement of objects
Global WIRE = 0			;Used to toggle wireframe mode on/off


Global cam = CreateCamera()
	PositionEntity cam,0,2,-4

AmbientLight 175,175,175
Global light = CreateLight(1)

Global plane = CreatePlane()
;file$= getopenfile$("Please select a texture for the grid..","file_path$","Bitmap"+Chr(0)+"*.bmp"+Chr(0)+"Jpeg"+Chr(0)+"*.jpg"+Chr(0)+"PNG"+Chr(0)+"*.png"+Chr(0)+"All"+Chr(0)+"*"+Chr(0))
plane_tex = LoadTexture("textures/plane_tex.png")
EntityTexture plane,plane_tex

;Global ball = CreateSphere()
;PositionEntity ball,0,MeshHeight(ball)/2,0

Global bg = LoadImage("img\bg.png")

Global font = LoadFont("georgia.tff",18,1)
SetFont font


;Types
Type mesh

	Field entity 
	Field x#
	Field y#
	Field z#
	
End Type

ClsColor 150,180,255


While Not KeyHit(1)
Cls
DrawImage bg,0,0
WireFrame WIRE

	;TurnEntity cam,0,.2,0
	If KeyHit(L_KEY) Then load_object
	If KeyHit(M_KEY) Then MOVE = 1-MOVE
	If KeyHit(W_KEY) Then WIRE = 1-WIRE
	If KeyHit(FULL_SCREEN_KEY) Then FULL_SCREEN = 1-FULL_SCREEN
	
	check_move	
	
	UpdateWorld
	RenderWorld
	
	
	Rect view_x,view_y,view_width,view_height,0
	
	resize_view
	
	Flip
	
Wend
End











Function trim_file_path(file$)

	For loop = Len(file$) To 1 Step - 1
		If Mid$(file$,loop,1) = "\" And flag = 0 Then
			flag = 1
			length = loop
		End If
	Next
	
	If flag = 1 Then
		file_path = Mid$(file,1,length)
	End If
	
	Return file
	
End Function






Function load_object()

	file$ = getopenfile$("Select file...",file_path$,"3DS file"+Chr(0)+"*.3ds"+Chr(0)+"Blitz 3D file"+Chr(0)+"*.b3d"+Chr(0))
		
	If file$<>0 
		
		m.mesh = New mesh
		m\entity = LoadMesh(file$)
		m\x = 0
		m\y = 0
		m\z = 0
		
		FitMesh m\entity,m\x,m\y,m\z,0.9,0.9,0.9
		
		PositionEntity m\entity,m\x,m\y,m\z
		
	EndIf	
	
End Function






Function resize_view()

	If FULL_SCREEN = 1
		
		view_x = 0
		view_y = 15
		view_width = 800
		view_height = 550
		
		Text view_x+1,view_y+1,"Kitchen Designer"
		Text 0,565,"L - Load Object"
		Text 0,585,"F - Normal Screen"
		
			If MOVE<>0 
				Color 0,255,50
			Else
				Color 255,255,255
			EndIf
			Text 200,565,"M - Move Mode"
			Color 255,255,255
		
			If WIRE<>0
				Color 255,50,0
			Else
				Color 255,255,255
			EndIf
			Text 200,585,"W - Wireframe On/Off"
			Color 255,255,255
		
		Text 400,565,"ESC - Exit"
		
	ElseIf FULL_SCREEN = 0
		
		view_x = 0;150
		view_y = 0;100
		view_width = 500
		view_height = 300
		
		Text view_x+1,view_y+1,"Kitchen Designer"
		Text view_x,view_y+305,"L - Load Object" 
		Text view_x,view_y+325,"F - Full Screen"
		
			If MOVE<>0 
				Color 0,255,50
			Else
				Color 255,255,255
			EndIf
			Text view_x,view_y+345,"M - Move Mode"
			Color 255,255,255
		
			If WIRE<>0
				Color 255,50,0
			Else
				Color 255,255,255
			EndIf
			Text view_x,view_y+365,"W - Wireframe On/Off"
			Color 255,255,255
			
		Text view_x,view_y+385,"ESC - Exit"
	
	EndIf
	
	CameraViewport cam,view_x,view_y,view_width,view_height
	
End Function

		
	
	
	
	
Function check_move()

	If MOVE <> 0
	
		If KeyDown(200) Then MoveEntity m\entity,0,0,.1
		If KeyDown(208) Then MoveEntity m\entity,0,0,-.1
		If KeyDown(205) Then MoveEntity m\entity,.1,0,0
		If KeyDown(203) Then MoveEntity m\entity,-.1,0,0
		
	EndIf
	
End Function

	


Thanks for any help guys :)

Ash


Matty(Posted 2006) [#2]
In your check_move() function the 'm' does not exist yet. You have to pass the type directly to the function like this "function check_move(m.mesh)", alternatively you have to make the type instance holding your entity global.


Ash_UK(Posted 2006) [#3]
Hi Matty :) Thanks a million. That sorted out the problem :)

Now i'm presented with a new problem. When I press L to load an object, I get the error message, "Entity does not exist" and it highlights:

FitMesh m\entity,m\x,m\y,m\z,0.9,0.9,0.9

As being the offending code. Any ideas?


Thanks again for your help. Very much appriciated :)

Ash


Ash_UK(Posted 2006) [#4]
Hmmm. Actually, its quite difficult to fully explain my problem so I have included a link to a zip file below. This contains everything for the code to run.

Just make sure to have either a 3ds or B3d object to test it out :)

Here is the file:

EDIT: Sorry I am having a problem with getting a link to my file :( I have this code enclosed in the [a] and [/a] but the link doesn't seem to work even though I know the location to the file is correct :( I'll see if I can fix it somehow.

The code in [a] and [/a]

http://www.ashleymoore.streamlinenettrial.co.uk/htdocs/zips/kitchen.rar


Ash


Stevie G(Posted 2006) [#5]
Page not found.