Показать сообщение отдельно
Старый 31.03.2011, 01:04   #2
Leowey
Знающий
 
Аватар для Leowey
 
Регистрация: 08.11.2010
Адрес: Москва
Сообщений: 285
Написано 78 полезных сообщений
(для 182 пользователей)
Плохо Ответ: РусСофтДрожжи: эксперимент "шутер за 7 дней"

Ну вот и первый день разработки подошёл к концу. К сожалению было сделано не много, а именно:

1. Составлен план работ.
2. Сделано большое количество заготовок для текстур.
3. Сделано несколько бесшовных текстур.
4. Сделан framework для физической библиотеки ТОКАМАК (теперь напоминает physx или newton). Рабочее название – “framegibon”
5. Был куплен новый микрофон .
6. Также был страшно измучен ashadow.bb .
7. Была прочитана книга «Съешьте лягушку!».


Свои очень скромные труды я выставляю сюда. Все текстуры – освобождены от швов (затайлены), имеют разрешение 512х512 точек в формате JPEG.




http://fotki.yandex.ru/users/leoweyka2007/


P.S. Надеюсь, что завтрашний день будет более плодовитым.

P.P.S. Framegibon тоже выставляю на показ. Прошу не плеваться, писалось на очень скорую руку...





Const seg=16
Const Rigid_Bodies=10000,Animated_Bodies=1000,Particle_Count=10000
Const infinity=9999999999999999
Const TOK_COLL_DYNAMIC=1,TOK_COLL_STATIC=2,TOK_COLL_PARTICLE=3

Global opBodyCount,opJointCount,opParticleCount
Global colbank

Function phsCreateWorld(plane)
	TOKSIM_SetRigidBodiesCount Rigid_Bodies
	TOKSIM_SetAnimatedBodiesCount Animated_Bodies
	TOKSIM_SetRigidParticleCount Particle_Count ;disabled because particles use rigid bodies
	TOKSIM_SetControllersCount Controllers_Count
	TOKSIM_SetOverlappedPairsCount (Rigid_Bodies*(Animated_Bodies-1))/2
	TOKSIM_SetGeometriesCount Rigid_bodies+Animated_Bodies;+Particle_Count+Controllers_Count ;Assuming each one only has one geometry.  Not true with more complex rigid bodies and animated bodies.
	TOKSIM_CreateSimulator(0,-6.89,0)
	
	;setup collision bank
	colbank=CreateBank(104*(Rigid_bodies+Animated_Bodies+50))
	TOKSIM_SetCInfoBank colbank
	TOKSIM_SetCollisionResponse TOK_COLL_DYNAMIC,TOK_COLL_DYNAMIC,3
	TOKSIM_SetCollisionResponse TOK_COLL_DYNAMIC,TOK_COLL_STATIC,3
	TOKSIM_SetCollisionResponse TOK_COLL_PARTICLE,TOK_COLL_PARTICLE,0
	
	If plane=1 Then
		;plane 
		xw=1000000
		zw=1000000
		phsBodyCreatePlane(xw, -50, zw)
		
	EndIf
End Function

Function phsSetGravity(gravx, gravy, gravz)
	TOKSIM_SetGravity gravx, gravy, gravz
End Function

Function phsDestroyWorld()
	TOKSIM_DestroySimulator()
End Function

Function phsRenderPhysic(time# = 0.025, sinc%)
	If time > 0 TOKSIM_Advance(time#,sinc%)
End Function

Function phsBodyCreatePlane(x#, y#, z#)
Local ground
		ground = TOKAB_Create()
		TOKAB_AddBox(ground,x*2,100.0,z*2.0)
		TOKAB_SetPosition(ground,0.0,y,0.0)
		TOKRB_SetCollisionID(ground,TOK_COLL_STATIC)
		Return ground
End Function

Function phsBodyCreateCube(dx#, dy#, dz#, mass#)
Local body
	body = TOKRB_Create()
	TOKRB_AddBox body,dx * 2,dy * 2,dz * 2
	;TOKRB_AddBox body,dy * 2,dx * 2,dz * 2
	TOKRB_SetMass body, mass#
	TOKRB_SetLinearDamping body,0.0001
	TOKRB_SetAngularDamping body,0.0002 	
	
	TOKRB_UpdateBoundingInfo(body)
	TOKRB_SetCollisionID(body,TOK_COLL_DYNAMIC)
	TOKRB_SetBoxInertiaTensor body,dx * 2,dy * 2,dz * 2,mass#
	
	Return body
End Function

Function phsBodyCreateSphere(radius#, mass#)
Local body
	body = TOKRB_Create()
	TOKRB_AddSphere (body,radius# * 4)
	TOKRB_SetMass body, mass#
	TOKRB_SetLinearDamping body,0.001
	TOKRB_SetAngularDamping body,0.02 	
	TOKRB_SetSphereInertiaTensor body,radius# * .5,mass#
	Return body
End Function

Function phsBodyCreateCapsule(height#, radius#, mass#)
Local body
	body = TOKRB_Create()
	TOKRB_AddCylinder(body,radius#*4, height#*2)
	TOKRB_SetMass body, mass#
	TOKRB_SetLinearDamping body,0.00001
	TOKRB_SetAngularDamping body,0.00002 	
	TOKRB_SetCylinderInertiaTensor body,radius#*4,height#*2,mass#
	Return body
End Function

Function phsBodyCreateCylinder(radius#, height#, mass#)
Local body
	body = TOKRB_Create()	
	TOKRB_AddCylinder (body,radius#*4, height#*2)
	TOKRB_SetMass body, mass#
	TOKRB_SetCylinderInertiaTensor body,radius * 4,height * 2,mass#
	TOKRB_SetLinearDamping body,0.0001
	TOKRB_SetAngularDamping body,0.0002 	
	Return body
End Function

Function phsBodyCreateHull(meshobj,Convex,mass#=1)
	mw#=MeshWidth(meshobj)*2.5
	mh#=MeshHeight(meshobj)*2.5
	md#=MeshDepth(meshobj)*2.5
	bbb = TOKRB_Create();TOKRB_Create()
 	geom=TOKRB_AddConvex(bbb,Convex,BankSize(Convex))
	TOKRB_SetLinearDamping bbb,0.001
	TOKRB_SetAngularDamping bbb,0.02 	
	TOKRB_SetMass bbb,mass#
	TOKRB_SetBoxInertiaTensor bbb,mw#,mh#,md#,mass# 
	Return bbb
End Function

Function phsBodyCreateTrimesh(mesh)
	scount=CountSurfaces(mesh)
 For ind=1 To scount
  surface=GetSurface(mesh,ind)
  ttltris=ttltris+CountTriangles(surface)
  ttlvert=ttlvert+CountVertices(surface)
 Next
 vertices=CreateBank(16*ttlvert)
 triangles=CreateBank(24*ttltris)
 offsetv=0
 offsett=0
 For ind=1 To scount
  surface = GetSurface(mesh,ind)
  ctr=CountTriangles(surface)
  tric=tric+cvt
  cvt=CountVertices(surface)
  ;fill bank with vertices
  For v=0 To cvt-1
   PokeFloat vertices,offsetv,VertexX#(surface,v)
   PokeFloat vertices,offsetv+4,VertexY#(surface,v)
   PokeFloat vertices,offsetv+8,VertexZ#(surface,v)
   PokeFloat vertices,offsetv+12,0.0
   offsetv=offsetv+16
  Next
  ;fill bank with triangles
  For v=0 To ctr-1
   PokeInt triangles,offsett,tric+TriangleVertex(surface,v,0)
   PokeInt triangles,offsett+4,tric+TriangleVertex(surface,v,1)
   PokeInt triangles,offsett+8,tric+TriangleVertex(surface,v,2)
   PokeInt triangles,offsett+12,2	; Material ID
   PokeInt triangles,offsett+16,0
   PokeInt triangles,offsett+20,0
   offsett=offsett+24
  Next
 Next

 ;Hand over the terrain data to Tokamak
TOKSIM_SetStaticMesh vertices,ttlvert,triangles,ttltris
 ; Now we can free the banks as Tokamak has copied all data
 FreeBank vertices
 FreeBank triangles

;Return body
End Function

Function phsBodyCreateCompound()
	body = TOKRB_Create()	
	TOKRB_UpdateBoundingInfo(body)
	TOKRB_SetCollisionID(body,TOK_COLL_DYNAMIC)	
	Return body
End Function

Function phsBodyAddCompoundBox(body,w#=1,h#=1,d#=1,x#=0,y#=0,z#=0,pitch#=0,yaw#=0,roll#=0)
	temp_g = TOKRB_AddBox(body,w#*2,h#*2,d#*2)
	TOKGEOM_SetPositionAndRotation(temp_g,x#,y#,z#,pitch#,yaw#,roll#)
	TOKRB_SetLinearDamping temp_g,0.0001
	TOKRB_SetAngularDamping temp_g,0.0002 	
End Function

Function phsBodyAddCompoundSphere(body,radius#=1,x#=0,y#=0,z#=0, pitch#=0, yaw#=0, roll#=0)	
	temp_g = TOKRB_AddSphere(body,radius#*4)
	TOKGEOM_SetPositionAndRotation(temp_g,x#,y#,z#,pitch#,yaw#,roll#)	
End Function

Function phsBodyAddCompoundCapsule(body,radius#=1,height#=1,x#=0,y#=0,z#=0,pitch#=0,yaw#=0,roll#=0)	
	temp_g = TOKRB_AddCylinder(body,radius#*2,height#)
	TOKGEOM_SetPositionAndRotation(temp_g,x#,y#,z#,pitch#-90,yaw#,roll#)
End Function

Function phsBodySetCompound(body, mesh, mass#)
	mw#=MeshDepth(mesh)*4
	mh#=MeshDepth(mesh) * 4
	md#=MeshDepth(mesh) * 4
		TOKRB_SetMass body,mass#
		TOKRB_SetBoxInertiaTensor body,mw#,mh#,md#,mass#
	TOKRB_SetLinearDamping body,0.0001
	TOKRB_SetAngularDamping body,0.2 	
End Function




Function phsBodySetEntity(mesh, body)
	PositionEntity mesh, TOKRB_GetX(body), TOKRB_GetY(body), TOKRB_GetZ(body)
	RotateEntity mesh, TOKRB_GetPitch(body), TOKRB_GetYaw(body), TOKRB_GetRoll(body), False
End Function

Function phsBodySetPosition(body, x#, y#, z#)
	TOKRB_SetPosition body, x, y, z
End Function

Function phsBodySetRotation(body, x#, y#, z#)
	TOKRB_SetRotation body, x, y, z
End Function


Function phsCreateBallJoint(x#=0,y#=0,z#=0,pitch#=0,yaw#=0,roll#=0,body2=0,body1=0,d#=0,e#=1,i#=100)	
	J = TOKJOINT_Create(3,body2,body1)
	TOKJOINT_SetPositionAndRotationWorld(J,x,y,z,pitch,yaw,roll)
	TOKJOINT_SetType(J,1)
	TOKJOINT_Enable(J,True)
	TOKJOINT_SetDampingFactor J,d#
	TOKJOINT_SetEpsilon J,e#
	TOKJOINT_SetIterations J,i#
	Return J
End Function

Function phsBallJointSetLimit(j,e1=0,MinAng#=0,MaxAng#=0,e2=0,MinAng2#=0,MaxAng2#=0) 
	TOKJOINT_SetLowerLimit J,MinAng#/(180/Pi)
	TOKJOINT_SetUpperLimit J,MaxAng#/(180/Pi)
	TOKJOINT_EnableLimit J,e1
	TOKJOINT_SetLowerLimit2 J,MinAng2#/(180/Pi)
	TOKJOINT_SetUpperLimit2 J,MaxAng2#/(180/Pi)
	TOKJOINT_EnableLimit2 J,e2
End Function

Function phsHingeJointCreate(x#=0,y#=0,z#=0,pitch#=0,yaw#=0,roll#=0,body2=0,body1=0,d#=0.5,e#=0.0,i#=10)	
	J = TOKJOINT_Create(3,body2,body1)
	TOKJOINT_SetPositionAndRotationWorld(J,x,y,z,pitch,yaw,roll)
	TOKJOINT_SetType(J,3)
	TOKJOINT_Enable(J,True)
	TOKJOINT_SetDampingFactor J,d# 
	TOKJOINT_SetEpsilon J,e#
	TOKJOINT_SetIterations J,i# 
	opJointCount=opJointCount+1
	Return J
End Function

Function phsHingeJointSetLimit(j,MinAng#=0,MaxAng#=0)
	If j=0 RuntimeError "Tokamak Warning: There Was no Hinge joint found!" 
	TOKJOINT_SetLowerLimit J,MinAng#/(180/Pi)
	TOKJOINT_SetUpperLimit J,MaxAng#/(180/Pi)
	TOKJOINT_EnableLimit J,1
End Function



Последний раз редактировалось Leowey, 31.03.2011 в 12:30.
(Offline)
 
Ответить с цитированием
Эти 7 пользователя(ей) сказали Спасибо Leowey за это полезное сообщение:
Egor Rezenov (31.03.2011), falcon (02.04.2011), krlmisha (31.03.2011), LLI.T.A.L.K.E.R. (31.03.2011), maxturbo (01.04.2011), pax (01.04.2011), St_AnGer (01.04.2011)