Знающий
Регистрация: 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.
|