Type Conversions+Object Command

Blitz3D Forums/Blitz3D Beginners Area/Type Conversions+Object Command

BlueWolf(Posted 2004) [#1]
Hi,

I am having a little trouble with types here.

My code looks like this

Function CreateParticle(mass#,x#,y#,z#) ; Function creates a particle
	 	
		particle.particle= New Particle ;sets up various aspects of the new particle
		particle\mass= mass ;set particle mass
		particle\oldx= x ;sets particles x, y and z
		particle\oldy= y
		particle\oldz= z
		particle\name= Handle(particle) ;stores the particles pointer in particle\name
		
	PositionEntity particle\name,oldx,oldy,oldz

	Return particle\name
		
End Function 


Function CreateConstraint(p1%,p2%,stretch#,length#=3)

	constraint.constraint= New Constraint
	constraint\p1=Object.particle(p1)
	constraint\p2=Object.particle(p2)
	constraint\stretch=stretch
	constraint\length=length
	
End Function


The bit that is not working is

	constraint\p1=Object.particle(p1)
	constraint\p2=Object.particle(p2)


so basically I want constraint\p1 to be a pointer to the actual particle.particle type. Also an explanation of the object command would probably help me.

Lots of questions here. Any help is appreciated.


Jeppe Nielsen(Posted 2004) [#2]
How are the p1 and p2 fields defined in the type, they should have a .particle defintion after them:
Type constraint
...
Field p1.particle
Field p2.particle
...
End type

Also in the CreateParticle function, you are not positioning the particle correctly, as you cannot use positionentity with a type, but only with pivots, meshes, sprites etc:
...
;PositionEntity particle\name,oldx,oldy,oldz
;the above doesn´t work, so use something like the next line, the oldx, oldy and oldz variables should be from the type I think:
PositionEntity particle\entity,particle\oldx,particle\oldy,particle\oldz

	Return particle\name
		
End Function


Hope this explains it somehow.


BlueWolf(Posted 2004) [#3]
Hi,

Thanks for responding. I have altered my CreateParticle() to do what you said.

How are the p1 and p2 fields defined in the type, they should have a .particle defintion after them:


A quick question about this. If I were to set up my fields like

Field p1.particle

would I be able to refer to them as constraint\p1 or would I have to refer to them as contraint\p1.particle or something like that. If the below one is true is their another way to accomplih this.


Jeppe Nielsen(Posted 2004) [#4]
You would refer to them as constraint\p1, as it is defined in the type declaration that it refers to a type called particle. You could also use the other.


BlueWolf(Posted 2004) [#5]
Okay thanks


BlueWolf(Posted 2004) [#6]
Oh one more question? Say my particle type was like

Type Particle
Field blah
Field mass#
Field blah


and in the constraint type I had the bit about p1.particle. I am able to acess the fields of the particle through the constraint.

Something like

par1.particle=constraint\p1\mass

if so how would I do that?


Floyd(Posted 2004) [#7]
par1.particle=constraint\p1\mass
This has the form:

par1.particle = something

where the something *must* be a particle. No other kind of value can be assigned to par1.particle.

In your example code the something is a number. This is an error.

One possible legal assignment is

par1.particle = constraint\p1

This is valid because constraint\p1 is a particle.