Code: Alles auswählen
CreateEntityBody(platte,#PB_Entity_PlaneBody,1000,1,0.5)
Code: Alles auswählen
CreateEntityBody(platte,#PB_Entity_PlaneBody,1000,1,0.5)
Code: Alles auswählen
;
;
; ------------------------------------------------------------
;
; PureBasic - RagDoll
;
; (c) 2002 - Fantaisie Software , bobobo
;
; das Programm sollte im Verzeichnis \Examples\3D liegen
; weil es auf den Screenrequester und andere Daten dort zugreift
; alles ohne Gewähr
; ------------------------------------------------------------
;
#CameraSpeed = 0.5
IncludeFile "Screen3DRequester.pb"
Define.f KeyX, KeyY, MouseX, MouseY ,rott, moveit
Define.i Knupf1,knupf2, Knupf3 , hands
Structure components
nodeid.i:ball.i:limb.i:texture.i:Bodymesh.i:Body.i:HeadMesh.i:Head.i
Nose.i:eyer.i:eyel.i:mouth.i:earl.i:earr.i:arml.i:armlu.i:armr.i:armru.i
legl.i:leglu.i:legr.i:legru.i:footl.i:footr.i:ct_bodyhead.i:ct_arml.i
hinge_arml.i:ct_armr.i:hinge_armr.i:hinge_legl.i:hinge_leglu.i:hinge_legr.i
hinge_legru.i:posx.i:posy.i:posz.i
EndStructure
Define ragdoll.components
Global NewList ragdolls.components()
Structure blood
id.i
time.i
EndStructure
bloodygameheight=340
NewList blood.blood()
Procedure killjoints()
ForEach ragdolls()
FreeJoint(#PB_All)
Next
EndProcedure
Procedure makejoints()
;joints
ForEach ragdolls()
RotateEntity(ragdolls()\Head,0,0,0,#PB_Absolute)
RotateEntity(ragdolls()\body,0,0,0,#PB_Absolute)
RotateEntity(ragdolls()\arml,0,0,0,#PB_Absolute)
RotateEntity(ragdolls()\armlu,0,0,0,#PB_Absolute)
RotateEntity(ragdolls()\armr,0,0,0,#PB_Absolute)
RotateEntity(ragdolls()\armru,0,0,0,#PB_Absolute)
RotateEntity(ragdolls()\legl,0,0,0,#PB_Absolute)
RotateEntity(ragdolls()\leglu,0,0,0,#PB_Absolute)
RotateEntity(ragdolls()\legr,0,0,0,#PB_Absolute)
RotateEntity(ragdolls()\legru,0,0,0,#PB_Absolute)
ragdolls()\ct_bodyhead=ConeTwistJoint(#PB_Any,EntityID(ragdolls()\Body) , 0, 0.7,0,EntityID(ragdolls()\Head) ,0,-0.4,0)
;ragdolls()\ct_bodyhead=PointJoint(#PB_Any,EntityID(ragdolls()\Body) , 0, 0.7,0,EntityID(ragdolls()\Head) ,0,-0.4,0)
ragdolls()\ct_arml = ConeTwistJoint(#PB_Any,EntityID(ragdolls()\Body),-0.6, 0.5 ,0,EntityID(ragdolls()\arml) , 0, 0.4,0)
ragdolls()\hinge_arml = HingeJoint(#PB_Any,EntityID(ragdolls()\arml) , 0, -0.45,0,1,0,0,EntityID(ragdolls()\armlu), 0,0.45,0,1,0,0)
ragdolls()\ct_armr = ConeTwistJoint(#PB_Any,EntityID(ragdolls()\Body), 0.6, 0.5,0,EntityID(ragdolls()\armr), 0, 0.4,0)
ragdolls()\hinge_armr = HingeJoint(#PB_Any,EntityID(ragdolls()\armr) , 0 ,-0.45,0,1,0,0,EntityID(ragdolls()\armru), 0,0.45,0,1,0,0)
ragdolls()\hinge_legl = HingeJoint(#PB_Any,EntityID(ragdolls()\Body) ,-0.3,-0.60,0,1,0,0,EntityID(ragdolls()\legl) , 0,0.40,0,1,0,0)
ragdolls()\hinge_legr = HingeJoint(#PB_Any,EntityID(ragdolls()\Body) , 0.3,-0.60,0,1,0,0,EntityID(ragdolls()\legr) , 0,0.40,0,1,0,0)
ragdolls()\hinge_leglu = HingeJoint(#PB_Any,EntityID(ragdolls()\legl) , 0,-0.45,0,1,0,0,EntityID(ragdolls()\leglu), 0,0.45,0,1,0,0)
ragdolls()\hinge_legru = HingeJoint(#PB_Any,EntityID(ragdolls()\legr) , 0,-0.45,0,1,0,0,EntityID(ragdolls()\legru), 0,0.45,0,1,0,0)
;joints attributes
SetJointAttribute(ragdolls()\ct_bodyhead,#PB_ConeTwistJoint_SwingSpan,0.5)
SetJointAttribute(ragdolls()\ct_bodyhead,#PB_ConeTwistJoint_SwingSpan2,0.5)
SetJointAttribute(ragdolls()\ct_bodyhead,#PB_ConeTwistJoint_TwistSpan,0.5)
; ;
SetJointAttribute(ragdolls()\ct_arml,#PB_ConeTwistJoint_SwingSpan ,0.2);seitl
SetJointAttribute(ragdolls()\ct_arml,#PB_ConeTwistJoint_SwingSpan2,1);dreh
SetJointAttribute(ragdolls()\ct_arml,#PB_ConeTwistJoint_TwistSpan ,2);vorzurück
; ;
SetJointAttribute(ragdolls()\hinge_arml,#PB_HingeJoint_LowerLimit,0)
SetJointAttribute(ragdolls()\hinge_arml,#PB_HingeJoint_UpperLimit,120)
SetJointAttribute(ragdolls()\hinge_armr,#PB_HingeJoint_LowerLimit,0)
SetJointAttribute(ragdolls()\hinge_armr,#PB_HingeJoint_UpperLimit,120)
SetJointAttribute(ragdolls()\ct_armr,#PB_ConeTwistJoint_SwingSpan,0.2);seitlich
SetJointAttribute(ragdolls()\ct_armr,#PB_ConeTwistJoint_SwingSpan2,1);dreh
SetJointAttribute(ragdolls()\ct_armr,#PB_ConeTwistJoint_TwistSpan,2);vorzurück
SetJointAttribute(ragdolls()\hinge_legl,#PB_HingeJoint_LowerLimit,-1)
SetJointAttribute(ragdolls()\hinge_legl,#PB_HingeJoint_UpperLimit,120)
SetJointAttribute(ragdolls()\hinge_legr,#PB_HingeJoint_LowerLimit,-1)
SetJointAttribute(ragdolls()\hinge_legr,#PB_HingeJoint_UpperLimit,120)
SetJointAttribute(ragdolls()\hinge_leglu,#PB_HingeJoint_LowerLimit,-120)
SetJointAttribute(ragdolls()\hinge_leglu,#PB_HingeJoint_UpperLimit,1)
SetJointAttribute(ragdolls()\hinge_legru,#PB_HingeJoint_LowerLimit,-120)
SetJointAttribute(ragdolls()\hinge_legru,#PB_HingeJoint_UpperLimit,1)
Next
EndProcedure
If InitEngine3D()
; Ergebnis = WorldDebug(#PB_World_DebugBody)
Add3DArchive(#PB_Compiler_Home + "/Examples/3D/" +"Data/Textures", #PB_3DArchive_FileSystem)
Add3DArchive(#PB_Compiler_Home + "/Examples/3D/" +"Data/Packs/desert.zip", #PB_3DArchive_Zip)
Parse3DScripts()
InitSprite()
InitKeyboard()
InitMouse()
If Screen3DRequester()
WorldShadows(#PB_Shadow_Additive,512)
SkyBox("desert07.jpg")
camera=CreateCamera(#PB_Any,0,0,100,100)
;CameraRenderMode(camera, #PB_Camera_Plot)
MoveCamera(camera,0, 260 ,15, #PB_Absolute)
texture1t=CreateTexture(#PB_Any,512,512)
font=LoadFont(#PB_Any,"",14,#PB_Font_HighQuality)
StartDrawing(TextureOutput(texture1t))
DrawingFont(FontID(font))
Box(0, 0, 512, 512, RGBA(222,222,255, 200))
For l=0 To 128
Circle(Random(512),Random(512),Random(4)+1,RGBA(128,128,255,255))
Next l
DrawingMode(#PB_2DDrawing_Transparent)
FrontColor(#Black)
;BackColor(#Black)
th=TextHeight("X")
ty=0
DrawText(0, 0,"V:Hands OFF/ON (**)")
ty+th
DrawText(0,ty,"U:IdiotDance OFF/ON (**)")
ty+th
DrawText(0,ty,"R:reset (*)")
ty+th
DrawText(0,ty,"B:BloodyGame (**)")
ty+th
DrawText(0,ty,"BloodyGameHeight N:increase , M: decrease (*)")
ty+th
DrawText(0,ty,"T:upright (*)")
ty+th
DrawText(0,ty,"H:hail (*), G:strange (*)")
ty+th
DrawText(0,ty,"T: upright (*)")
ty+th
DrawText(0,ty,"F:forceup (near plate) (trampoline) (*)")
ty+th
DrawText(0,ty,"J:forceup (*)")
ty+th
DrawText(0,ty,"P:LookatAll (*)")
ty+th
DrawText(0,ty,"S:Shoot (**)")
ty+th
DrawText(0,ty,"L:Disassemble , O: Assemble (**)")
ty+th
DrawText(0,ty,"1,2,3,4,6,8 turns head (*)")
ty+th
DrawText(0,ty,"Add:Gravitiy decrease")
ty+th
DrawText(0,ty,"Sub:Gravitiy increase")
ty+th
DrawText(0,ty,"(*) while pressed, (**) when release key")
;Debug ty
StopDrawing()
texture1=CreateMaterial(#PB_Any, TextureID(texture1t))
texture2=CreateTexture(#PB_Any,256,256)
StartDrawing(TextureOutput(texture2))
DrawingMode(#PB_2DDrawing_AlphaBlend)
Box(0,0,256,256,RGBA(0,0,0,0))
DrawingFont(FontID(font))
;FrontColor(RGBA(0,0,0,255))
DrawText(0,0,"Press B and have fun",RGBA(255,255,0,255),RGBA(0,0,0,0))
DrawText(0,50,"Hold N for a time and press B",RGBA(255,255,0,255),RGBA(0,0,0,0))
DrawText(0,70,"and have even more fun",RGBA(255,255,0,255),RGBA(0,0,0,0))
StopDrawing()
infomat=CreateMaterial(#PB_Any,TextureID(texture2))
MaterialBlendingMode(infomat,#PB_Material_AlphaBlend)
texture2= CreateTexture(#PB_Any,256,256)
StartDrawing(TextureOutput(texture2))
Box(0,0,256,256,RGBA(80,80,80,180))
For l=0 To 400
Circle(Random(256),Random(256),Random(3)+1,RGBA(Random(5)+100,Random(5)+100,Random(5)+100,180))
Next l
DrawText(0,0,"ragdoll ®",RGBA(255,0,0,255),RGBA(80,80,80,222))
StopDrawing()
texture2=CreateMaterial(#PB_Any, TextureID(texture2))
textureblue = CreateTexture(#PB_Any,256,256)
StartDrawing(TextureOutput(textureblue))
Box(0,0,256,256,#White)
Ellipse( 0,128,25,50,RGB(30, 144, 255))
Ellipse(256,128,25,50,RGB(30, 144, 255))
Ellipse( 0,128,10,20,RGB(0 , 0, 0))
Ellipse(256,128,10,20,RGB(0 , 0, 0))
StopDrawing()
MatEye = CreateMaterial(#PB_Any,TextureID(textureblue))
texturedead = CreateTexture(#PB_Any,256,256)
StartDrawing(TextureOutput(texturedead))
Box(0,0,256,256,#White)
For de=0 To 10
Line(0,128+de,256,1,#Black)
Line(0,128-de,256,1,#Black)
Next
For de=0 To 10
Line(de,0,1,256,#Black)
Line(256-de,0,1,256,#Black)
Next
StopDrawing()
MatDeadEye = CreateMaterial(#PB_Any,TextureID(texturedead))
textureflesh = CreateTexture(#PB_Any,256,256)
StartDrawing(TextureOutput(textureflesh))
Box(0,0,256,256,RGB(255, 218, 185))
For f=0 To 512
Circle(Random(255),Random(255),Random(2),RGB(243, 208, 161))
Next
StopDrawing()
MatFlesh = CreateMaterial(#PB_Any,TextureID(textureflesh))
texturemouth = CreateTexture(#PB_Any,256,256)
StartDrawing(TextureOutput(texturemouth))
Box(0,0,256,256,#White)
For t=0 To 256 Step 16
Line(t,0,1,256,#Black)
Line(t-1,0,1,256,#Black)
Line(t-2,0,1,256,#Black)
Line(t+1,0,1,256,#Black)
Line(t+2,0,1,256,#Black)
Next t
StopDrawing()
MatMouth = CreateMaterial(#PB_Any,TextureID(texturemouth))
texturekontakt= CreateTexture(#PB_Any,256,256)
StartDrawing(TextureOutput(texturekontakt))
DrawingMode(#PB_2DDrawing_AlphaBlend)
Box(0,0,256,256,RGBA(0,0,0,0))
For c=1 To 32
bx=64+Random(128)
by=64+Random(128)
br=Random(32)
Circle(bx,by,br,RGBA(255,0,0,br*4))
Next c
StopDrawing()
MatKontakt = CreateMaterial(#PB_Any,TextureID(texturekontakt))
MaterialBlendingMode(MatKontakt,#PB_Material_AlphaBlend)
RotateMaterial(MatKontakt,0.005,#PB_Material_Animated)
AddMaterialLayer(MatKontakt,TextureID(texturekontakt),#PB_Material_Add)
Bodymesh = CreateCube(#PB_Any,1)
LimbMesh = CreateCylinder(#PB_Any, 0.1 ,0.80)
HeadMesh = CreateSphere(#PB_Any , 0.5); ,12,12)
NoseMesh = CreateSphere(#PB_Any , 0.25, 3, 4)
EyeMeshl = CreateSphere(#PB_Any , 0.10);,8,8)
EyeMeshr = CreateSphere(#PB_Any , 0.10);,8,8)
MouthMesh = CreateSphere(#PB_Any , 0.25,15,15)
EarMeshl = CreateSphere(#PB_Any , 0.25);,8,8)
EarMeshr = CreateSphere(#PB_Any , 0.25);,8,8)
FootMeshl = CreateSphere(#PB_Any , 0.25,6,6)
FootMeshr = CreateSphere(#PB_Any , 0.25,6,6)
kontaktMesh= CreatePlane(#PB_Any,0.25,0.25,1,1,1,1)
TransformMesh(kontaktMesh,0,0.05,0,1,1,1,0,0,0)
kontakt=CreateEntity(#PB_Any,MeshID(kontaktMesh),MaterialID(MatKontakt))
EntityRenderMode(kontakt, #PB_Entity_CastShadow)
TransformMesh(NoseMesh , 0.00, 0.00, 0.50, 1.00, 1.00, 1.00, 0.00, 0.00, 0.00)
TransformMesh(EyeMeshl ,-0.35, 0.20, 0.25, 1.00, 1.00, 1.00, 0.00, 0.00, 0.00)
TransformMesh(EyeMeshr , 0.35, 0.20, 0.25, 1.00, 1.00, 1.00, 0.00, 0.00, 0.00)
TransformMesh(MouthMesh, 0.00,-0.15, 0.22, 1.50, 0.45, 1.00, 40.00, 0.00, 0.00)
TransformMesh(EarMeshl ,-0.50,-0.10,-0.20, 1.00, 1.00, 0.25, 0.00, 0.00, 0.00)
TransformMesh(EarMeshr , 0.50,-0.10,-0.20, 1.00, 1.00, 0.25, 0.00, 0.00, 0.00)
TransformMesh(FootMeshl,-0.02,-0.38, 0.15, 0.50, 0.25, 1.00, 10.00, 20.00, 0.00)
TransformMesh(FootMeshr, 0.02,-0.38, 0.15, 0.50, 0.25, 1.00, 10.00,-20.00, 0.00)
For r=1 To 8 ;3 Dinger
AddElement(ragdolls())
ragdolls()\posx=r*2-2
ragdolls()\posy=260
ragdolls()\posz=0
ragdolls()\texture=texture2
;bodyparts
ragdolls()\Body=CreateEntity(#PB_Any,MeshID(Bodymesh),MaterialID(ragdolls()\texture),ragdolls()\posx,ragdolls()\posy,ragdolls()\posz)
ScaleEntity(ragdolls()\Body,1.0,1,0.25)
ragdolls()\Nose = CreateEntity(#PB_Any,MeshID(NoseMesh) ,MaterialID(MatFlesh))
ragdolls()\eyel = CreateEntity(#PB_Any,MeshID(EyeMeshl) ,MaterialID(MatEye))
ragdolls()\eyer = CreateEntity(#PB_Any,MeshID(EyeMeshr) ,MaterialID(MatEye))
ragdolls()\mouth = CreateEntity(#PB_Any,MeshID(MouthMesh),MaterialID(MatMouth))
ragdolls()\earl = CreateEntity(#PB_Any,MeshID(EarMeshl) ,MaterialID(MatFlesh))
ragdolls()\earr = CreateEntity(#PB_Any,MeshID(EarMeshr) ,MaterialID(MatFlesh))
ragdolls()\Head = CreateEntity(#PB_Any,MeshID(HeadMesh),MaterialID(MatFlesh), ragdolls()\posx,ragdolls()\posy+1,ragdolls()\posz)
AttachEntityObject(ragdolls()\Head,"",EntityID(ragdolls()\Nose) ,0,0,0,0,0,0)
AttachEntityObject(ragdolls()\Head,"",EntityID(ragdolls()\eyel) ,0,0,0,0,0,0)
AttachEntityObject(ragdolls()\Head,"",EntityID(ragdolls()\eyer) ,0,0,0,0,0,0)
AttachEntityObject(ragdolls()\Head,"",EntityID(ragdolls()\mouth),0,0,0,0,0,0)
AttachEntityObject(ragdolls()\Head,"",EntityID(ragdolls()\earl) ,0,0,0,0,0,0)
AttachEntityObject(ragdolls()\Head,"",EntityID(ragdolls()\earr) ,0,0,0,0,0,0)
ragdolls()\arml = CreateEntity(#PB_Any,MeshID(LimbMesh),MaterialID(ragdolls()\texture) ,ragdolls()\posx-0.6,ragdolls()\posy,ragdolls()\posz)
ragdolls()\armlu = CreateEntity(#PB_Any,MeshID(LimbMesh),MaterialID(ragdolls()\texture) ,ragdolls()\posx-0.6,ragdolls()\posy-1,ragdolls()\posz)
ragdolls()\armr = CreateEntity(#PB_Any,MeshID(LimbMesh),MaterialID(ragdolls()\texture) ,ragdolls()\posx+0.6,ragdolls()\posy,ragdolls()\posz)
ragdolls()\armru = CreateEntity(#PB_Any,MeshID(LimbMesh),MaterialID(ragdolls()\texture) ,ragdolls()\posx+ 0.6,ragdolls()\posy-1,ragdolls()\posz)
ragdolls()\legl = CreateEntity(#PB_Any,MeshID(LimbMesh),MaterialID(ragdolls()\texture) ,ragdolls()\posx-0.3,ragdolls()\posy-1,ragdolls()\posz)
ragdolls()\legr = CreateEntity(#PB_Any,MeshID(LimbMesh),MaterialID(ragdolls()\texture) ,ragdolls()\posx+ 0.3,ragdolls()\posy-1,ragdolls()\posz)
ragdolls()\leglu = CreateEntity(#PB_Any,MeshID(LimbMesh),MaterialID(ragdolls()\texture) ,ragdolls()\posx-0.3,ragdolls()\posy-2,ragdolls()\posz)
ragdolls()\legru = CreateEntity(#PB_Any,MeshID(LimbMesh),MaterialID(ragdolls()\texture) ,ragdolls()\posx+ 0.3,ragdolls()\posy-2,ragdolls()\posz)
ragdolls()\footl = CreateEntity(#PB_Any,MeshID(FootMeshl),MaterialID(ragdolls()\texture))
AttachEntityObject(ragdolls()\leglu,"",EntityID(ragdolls()\footl) ,0,0,0,0,0,0)
ragdolls()\footr = CreateEntity(#PB_Any,MeshID(FootMeshr),MaterialID(ragdolls()\texture))
AttachEntityObject(ragdolls()\legru,"",EntityID(ragdolls()\footr) ,0,0,0,0,0,0)
;rendermode=#PB_Entity_CastShadow
;rendermode=#PB_Entity_CastShadow|#PB_Entity_DisplaySkeleton
;bodyPhysics
CreateEntityBody(ragdolls()\Body,#PB_Entity_BoxBody ,10, 0,1)
EntityRenderMode(ragdolls()\Body, #PB_Entity_CastShadow)
EntityRenderMode(ragdolls()\Head, #PB_Entity_CastShadow)
CreateEntityBody(ragdolls()\Head, #PB_Entity_ConvexHullBody, 5, 0.25, 1)
EntityRenderMode(ragdolls()\arml, #PB_Entity_CastShadow)
CreateEntityBody(ragdolls()\arml, #PB_Entity_CylinderBody, 1, 0 ,1)
EntityRenderMode(ragdolls()\armlu, #PB_Entity_CastShadow)
CreateEntityBody(ragdolls()\armlu, #PB_Entity_CylinderBody, 1, 0, 1)
EntityRenderMode(ragdolls()\armr, #PB_Entity_CastShadow)
CreateEntityBody(ragdolls()\armr, #PB_Entity_CylinderBody, 1, 0, 1)
EntityRenderMode(ragdolls()\armru, #PB_Entity_CastShadow)
CreateEntityBody(ragdolls()\armru, #PB_Entity_CylinderBody, 1, 0,1)
EntityRenderMode(ragdolls()\legl, #PB_Entity_CastShadow)
CreateEntityBody(ragdolls()\legl, #PB_Entity_CylinderBody, 1, 0,1)
EntityRenderMode(ragdolls()\leglu, #PB_Entity_CastShadow)
CreateEntityBody(ragdolls()\leglu, #PB_Entity_CylinderBody,1, 0,1)
EntityRenderMode(ragdolls()\legr, #PB_Entity_CastShadow)
CreateEntityBody(ragdolls()\legr, #PB_Entity_CylinderBody, 1, 0,1)
EntityRenderMode(ragdolls()\legru, #PB_Entity_CastShadow)
CreateEntityBody(ragdolls()\legru, #PB_Entity_CylinderBody,1, 0,1)
Next
makejoints()
;
plate=CreateCube(#PB_Any,1)
ScaleMaterial(texture1,1,1)
RotateMaterial(texture1,90,#PB_Material_Fixed)
platte=CreateEntity(#PB_Any,MeshID(plate),MaterialID(texture1),0,0,0)
ScaleEntity(platte,70,0.01,70)
MoveEntity(platte,0,256,0)
EntityRenderMode(platte, #PB_Entity_CastShadow)
CreateEntityBody(platte,#PB_Entity_StaticBody,1000,1,0.5)
info=CreateEntity(#PB_Any,MeshID(plate),MaterialID(infomat),0,0,0)
ScaleEntity(info,10,0.01,10)
MoveEntity(info,5,260,0)
RotateEntity(info,90,0,0)
EntityRenderMode(info, #PB_Entity_DisplaySkeleton )
suncolor=#White
sun=CreateLight(#PB_Any,suncolor,17830,12860,10930,#PB_Light_Point)
CameraLookAt(camera,EntityX(ragdolls()\Head),EntityY(ragdolls()\Head),EntityZ(ragdolls()\Head))
dance=1
hands=1
Repeat
;Debug hands
;Debug "************"
Screen3DEvents()
If ExamineMouse()
MouseX = -MouseDeltaX() * #CameraSpeed * 0.05
MouseY = -MouseDeltaY() * #CameraSpeed * 0.05
EndIf
If hands=1
hands=2
;Debug hands
;Händchenhalten
sp=-0.5
tau.f=0
damp.f=0.5
SelectElement(ragdolls(),0)
jx=EntityX(ragdolls()\armru)
jy=EntityY(ragdolls()\armru)
jz=EntityZ(ragdolls()\armru)
id=EntityID(ragdolls()\armru)
SelectElement(ragdolls(),1)
jx1=EntityX(ragdolls()\armlu)
jy1=EntityY(ragdolls()\armlu)
jz1=EntityZ(ragdolls()\armlu)
id1=EntityID(ragdolls()\armlu)
knupf1=PointJoint(#PB_Any,id,0,sp,0,id1,0,sp,0)
SetJointAttribute(knupf1,#PB_PointJoint_Damping,damp)
SetJointAttribute(knupf1,#PB_PointJoint_Tau,tau)
jx=EntityX(ragdolls()\armru)
jy=EntityY(ragdolls()\armru)
jz=EntityZ(ragdolls()\armru)
id=EntityID(ragdolls()\armru)
SelectElement(ragdolls(),2)
jx1=EntityX(ragdolls()\armlu)
jy1=EntityY(ragdolls()\armlu)
jz1=EntityZ(ragdolls()\armlu)
id1=EntityID(ragdolls()\armlu)
knupf2=PointJoint(#PB_Any,id,0,sp,0,id1,0,sp,0)
SetJointAttribute(knupf2,#PB_PointJoint_Damping,damp)
SetJointAttribute(knupf2,#PB_PointJoint_Tau,tau)
EndIf
If hands=3
;Debug hands
hands=0
If knupf1
FreeJoint(knupf1)
knupf1=0
EndIf
If knupf2
FreeJoint(knupf2)
knupf2=0
EndIf
If knupf3
FreeJoint(knupf3)
knupf3=0
EndIf
EndIf
If dance=1
;dance=2
ForEach ragdolls()
If EntityY(ragdolls()\Head)<259.5
ApplyEntityImpulse(ragdolls()\Head ,0, 9,0,0,1,0)
ApplyEntityImpulse(ragdolls()\legru ,0, -5,0,0,-1,0)
ApplyEntityImpulse(ragdolls()\leglu ,0, -5,0,0,-1,0)
If EntityY(ragdolls()\leglu)<256.8
ApplyEntityImpulse(ragdolls()\leglu,Random(2)-1,Random(8),Random(2)-1)
EndIf
If EntityY(ragdolls()\legru)<256.8
ApplyEntityImpulse(ragdolls()\legru,Random(2)-1,Random(8),Random(2)-1)
EndIf
ApplyEntityImpulse(ragdolls()\armlu,Random(2)-1,Random(2)-1,Random(2)-1)
ApplyEntityImpulse(ragdolls()\armru,Random(2)-1,Random(2)-1,Random(2)-1)
EndIf
Next
EndIf
KeyboardMode(#PB_Keyboard_International)
If ExamineKeyboard()
If KeyboardReleased(#PB_Key_R) Or KeyboardReleased(#PB_Key_E)
px.f=0
py.f=0
pz.f=0
ForEach ragdolls()
px+EntityX(ragdolls()\Body)
py+EntityY(ragdolls()\Body)
pz+EntityZ(ragdolls()\Body)
Next
px=px/ListSize(ragdolls())
py=py/ListSize(ragdolls())
pz=pz/ListSize(ragdolls())
MoveCamera(camera,0, 260 ,15, #PB_Absolute)
CameraLookAt(camera,px,py,pz)
EndIf
If KeyboardPushed(#PB_Key_P)
px.f=0
py.f=0
pz.f=0
ForEach ragdolls()
px+EntityX(ragdolls()\Body)
py+EntityY(ragdolls()\Body)
pz+EntityZ(ragdolls()\Body)
Next
px=px/ListSize(ragdolls())
py=py/ListSize(ragdolls())
pz=pz/ListSize(ragdolls())
CameraLookAt(camera,px,py,pz)
EndIf
If KeyboardPushed(#PB_Key_N)
bloodygameheight+1
EndIf
If KeyboardPushed(#PB_Key_M)
bloodygameheight-1
If bloodygameheight<290
bloodygameheight=290
EndIf
EndIf
If KeyboardReleased(#PB_Key_O)
killjoints()
hands=0
makejoints()
ForEach ragdolls()
SetEntityMaterial(ragdolls()\eyel, MaterialID(MatEye))
SetEntityMaterial(ragdolls()\eyer, MaterialID(MatEye))
Next
EndIf
If KeyboardReleased(#PB_Key_L)
killjoints()
hands=0
ForEach ragdolls()
SetEntityMaterial(ragdolls()\eyel, MaterialID(MatDeadEye))
SetEntityMaterial(ragdolls()\eyer, MaterialID(MatDeadEye))
Next
EndIf
If KeyboardReleased(#PB_Key_B)
px.f=0
py.f=0
pz.f=0
ForEach ragdolls()
px+EntityX(ragdolls()\Body)
py+EntityY(ragdolls()\Body)
pz+EntityZ(ragdolls()\Body)
Next
px=px/ListSize(ragdolls())
py=py/ListSize(ragdolls())
pz=pz/ListSize(ragdolls())
ForEach(ragdolls())
ApplyEntityImpulse(ragdolls()\Body,Random(20)-10,0,Random(20)-10)
ApplyEntityImpulse(ragdolls()\Head,Random(20)-10,0,Random(20)-10)
Next
MoveCamera(camera,px,py+10,pz,#PB_Absolute)
CameraLookAt(camera,0,260,0)
EndIf
If KeyboardPushed(#PB_Key_S) And shoot=0
ForEach ragdolls()
ApplyEntityImpulse(ragdolls()\Body,0,0,-100,Random(8)-4,Random(8)-4,Random(8)-4)
shoot=1
Next
EndIf
If KeyboardReleased(#PB_Key_S)
shoot=0
EndIf
If KeyboardPushed(#PB_Key_R)
ForEach ragdolls()
MoveEntity(ragdolls()\Head,ragdolls()\posx,ragdolls()\posy,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\Body,ragdolls()\posx,ragdolls()\posy-1,ragdolls()\posz,#PB_Absolute)
RotateEntity(ragdolls()\Body,0,0,0,#PB_Absolute)
MoveEntity(ragdolls()\legr,ragdolls()\posx+0.3,ragdolls()\posy-2,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\legl,ragdolls()\posx-0.3,ragdolls()\posy-2,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\legru,ragdolls()\posx+0.3,ragdolls()\posy-2.9,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\leglu,ragdolls()\posx-0.3,ragdolls()\posy-2.9,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\armr,ragdolls()\posx+0.6,ragdolls()\posy-1,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\arml,ragdolls()\posx-0.6,ragdolls()\posy-1,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\armru,ragdolls()\posx+0.6,ragdolls()\posy-2,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\armlu,ragdolls()\posx-0.6,ragdolls()\posy-2,ragdolls()\posz,#PB_Absolute)
Next
EndIf
If KeyboardPushed(#PB_Key_B)
ForEach ragdolls()
MoveEntity(ragdolls()\Head,ragdolls()\posx,bloodygameheight,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\Body,ragdolls()\posx,bloodygameheight-1,ragdolls()\posz,#PB_Absolute)
RotateEntity(ragdolls()\Body,0,0,0,#PB_Absolute)
MoveEntity(ragdolls()\legr,ragdolls()\posx+0.3,bloodygameheight-2,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\legl,ragdolls()\posx-0.3,bloodygameheight-2,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\legru,ragdolls()\posx+0.3,bloodygameheight-2.9,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\leglu,ragdolls()\posx-0.3,bloodygameheight-2.9,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\armr,ragdolls()\posx+0.6,bloodygameheight-1,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\arml,ragdolls()\posx-0.6,bloodygameheight-1,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\armru,ragdolls()\posx+0.6,bloodygameheight-2,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\armlu,ragdolls()\posx-0.6,bloodygameheight-2,ragdolls()\posz,#PB_Absolute)
Next
EndIf
If KeyboardReleased(#PB_Key_V)
Select hands
Case 0
hands=1
Case 2
hands=3
EndSelect
EndIf
If KeyboardPushed(#PB_Key_T)
ForEach ragdolls()
ApplyEntityImpulse(ragdolls()\armlu ,0,-1,0,0,-1,0)
ApplyEntityImpulse(ragdolls()\armru ,0,-1,0,0,-1,0)
ApplyEntityImpulse(ragdolls()\leglu,0,-3,0,0,-1,0)
ApplyEntityImpulse(ragdolls()\legru,0,-3,0,0,-1,0)
ApplyEntityImpulse(ragdolls()\Head ,0, 10,0,0,1,0)
;ApplyEntityForce(ragdolls()\HEAD,(Random(10)+5)*-1,0,(Random(10)+5)*-1) ;nearly ParachuteEffect
Next
EndIf
If KeyboardPushed(#PB_Key_J)
ForEach ragdolls()
ApplyEntityImpulse(ragdolls()\Head,0,10,0)
Next
EndIf
If KeyboardPushed(#PB_Key_K)
SelectElement(ragdolls(),1)
ApplyEntityImpulse(ragdolls()\Head,0,Random(10)+9,0)
EndIf
If KeyboardPushed(#PB_Key_I)
I_f+1
SelectElement(ragdolls(),0)
ApplyEntityImpulse(ragdolls()\armlu,0,Random(10)+10+I_f,0)
EndIf
If KeyboardReleased(#PB_Key_I)
i_f=0
EndIf
If KeyboardReleased(#PB_Key_U)
Select dance
Case 1
dance=0
Case 0
dance=1
EndSelect
EndIf
If KeyboardPushed(#PB_Key_F)
ForEach ragdolls()
If EntityY(ragdolls()\Body)<259
ApplyEntityImpulse(ragdolls()\Body,0, 3,0,0,-10,0)
ApplyEntityImpulse(ragdolls()\armlu ,0, 3,0,0,-10,0)
ApplyEntityImpulse(ragdolls()\armru ,0, 3,0,0,-10,0)
ApplyEntityImpulse(ragdolls()\leglu ,0, 3,0,0,-10,0)
ApplyEntityImpulse(ragdolls()\legru ,0, 3,0,0,-10,0)
ApplyEntityImpulse(ragdolls()\Head ,0,6,0,0,0 ,0)
EndIf
Next
EndIf
If KeyboardPushed(#PB_Key_H)
ForEach ragdolls()
ApplyEntityImpulse(ragdolls()\armlu,0,1,0,0,-2,0)
ApplyEntityImpulse(ragdolls()\armru,0,1,0,0,-2,0)
ApplyEntityImpulse(ragdolls()\legl,0,-4,0,0,-20,0)
ApplyEntityImpulse(ragdolls()\legr,0,-4,0,0,-20,0)
ApplyEntityImpulse(ragdolls()\Head,0,5,0,0,0,0)
ApplyEntityImpulse(ragdolls()\Body,0,4,0,0,10,0)
Next
EndIf
If KeyboardPushed(#PB_Key_Add)
wg+1
WorldGravity(wg)
EndIf
If KeyboardPushed(#PB_Key_Subtract)
wg-1
WorldGravity(wg)
EndIf
If KeyboardPushed(#PB_Key_G)
ForEach ragdolls()
ApplyEntityImpulse(ragdolls()\Head ,0, 2,0)
ApplyEntityImpulse(ragdolls()\legl , 0, Random(4),0,0,-6,0)
ApplyEntityImpulse(ragdolls()\legr , 0, Random(4),0,0,-6,0)
ApplyEntityImpulse(ragdolls()\armlu , 0, Random(1),0,0,6,0)
ApplyEntityImpulse(ragdolls()\armru , 0, Random(1),0,0,6,0)
ApplyEntityImpulse(ragdolls()\Body,0,-6,0,0,0,0)
Next
EndIf
If KeyboardPushed(#PB_Key_Pad6)
ForEach ragdolls()
RotateEntity(ragdolls()\Head,0,10,0,#PB_Relative)
Next
EndIf
If KeyboardPushed(#PB_Key_Pad4)
ForEach ragdolls()
RotateEntity(ragdolls()\Head,0,-10,0,#PB_Relative)
Next
EndIf
If KeyboardPushed(#PB_Key_Pad1)
ForEach ragdolls()
RotateEntity(ragdolls()\Head,0,0,-5,#PB_Relative)
Next
EndIf
If KeyboardPushed(#PB_Key_Pad3)
ForEach ragdolls()
RotateEntity(ragdolls()\Head,0,0,5,#PB_Relative)
Next
EndIf
If KeyboardPushed(#PB_Key_Pad8)
ForEach ragdolls()
RotateEntity(ragdolls()\Head,-10,0,0,#PB_Relative)
Next
EndIf
If KeyboardPushed(#PB_Key_Pad2)
ForEach ragdolls()
RotateEntity(ragdolls()\Head,10,0,0,#PB_Relative)
Next
EndIf
If KeyboardPushed(#PB_Key_Left)
KeyX = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Right)
KeyX = #CameraSpeed
Else
KeyX = 0
EndIf
If KeyboardPushed(#PB_Key_Up)
KeyY = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Down)
KeyY = #CameraSpeed
Else
KeyY = 0
EndIf
EndIf
RotateCamera(camera, MouseY, MouseX, 0, #PB_Relative)
MoveCamera (camera, KeyX, 0, KeyY)
;Make it Bloody
ExamineWorldCollisions(#True)
While NextWorldCollision()
If platte=FirstWorldCollisionEntity() Or platte=SecondWorldCollisionEntity()
WorldCollisionAppliedImpulse()
impy=GetY()
If impy>666
killjoints()
hands=0
EndIf
If impy>100
dead=1
ForEach ragdolls()
SetEntityMaterial(ragdolls()\eyel, MaterialID(MatDeadEye))
SetEntityMaterial(ragdolls()\eyer, MaterialID(MatDeadEye))
Next
EndIf
If impy>20 ; blood with heavier impulses
If impy>100
impy=100
EndIf
WorldCollisionContact()
AddElement(blood())
blood()\id=CopyEntity(kontakt,#PB_Any)
ScaleEntity(blood()\id,impy/5,1,impy/5,#PB_Relative)
blood()\time=ElapsedMilliseconds()+(impy*impy/2)
MoveEntity(blood()\id,GetX(),GetY(),GetZ(),#PB_Absolute)
EndIf
EndIf
Wend
ForEach blood()
If ElapsedMilliseconds()>blood()\time+5000
FreeEntity(blood()\id)
DeleteElement(blood())
If dead
ForEach ragdolls()
SetEntityMaterial(ragdolls()\eyel, MaterialID(MatEye))
SetEntityMaterial(ragdolls()\eyer, MaterialID(MatEye))
Next
dead=0
EndIf
EndIf
Next
lre=RenderWorld()
Debug "RenderWorld " +lre
;Debug Engine3DFrameRate(#PB_Engine3D_Current)
Debug "Framerate "+Engine3DStatus(#PB_Engine3D_AverageFPS)
Debug "*******"
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
EndIf
Else
MessageRequester("Error", "The 3D Engine can't be initialized", 0)
EndIf
End
Code: Alles auswählen
;
; ------------------------------------------------------------
;
; PureBasic - RagDoll
;
; (c) 2002 - Fantaisie Software , bobobo
;
; das Programm sollte im Verzeichnis \Examples\3D liegen
; weil es auf den Screenrequester und andere Daten dort zugreift
; alles ohne Gewähr
; ------------------------------------------------------------
;
#CameraSpeed = 0.5
IncludeFile "Screen3DRequester.pb"
Define.f KeyX, KeyY, MouseX, MouseY ,rott, moveit
Define.i Knupf1,knupf2, Knupf3 , hands
Structure components
nodeid.i:ball.i:limb.i:texture.i:Bodymesh.i:Body.i:HeadMesh.i:Head.i
Nose.i:eyer.i:eyel.i:mouth.i:earl.i:earr.i:arml.i:armlu.i:armr.i:armru.i
legl.i:leglu.i:legr.i:legru.i:footl.i:footr.i:ct_bodyhead.i:ct_arml.i
hinge_arml.i:ct_armr.i:hinge_armr.i:hinge_legl.i:hinge_leglu.i:hinge_legr.i
hinge_legru.i:posx.i:posy.i:posz.i
EndStructure
Define ragdoll.components
Global NewList ragdolls.components()
Structure blood
id.i
time.i
EndStructure
bloodygameheight=340
NewList blood.blood()
Procedure killjoints()
ForEach ragdolls()
FreeJoint(#PB_All)
Next
EndProcedure
Procedure makejoints()
;joints
ForEach ragdolls()
RotateEntity(ragdolls()\Head,0,0,0,#PB_Absolute)
RotateEntity(ragdolls()\body,0,0,0,#PB_Absolute)
RotateEntity(ragdolls()\arml,0,0,0,#PB_Absolute)
RotateEntity(ragdolls()\armlu,0,0,0,#PB_Absolute)
RotateEntity(ragdolls()\armr,0,0,0,#PB_Absolute)
RotateEntity(ragdolls()\armru,0,0,0,#PB_Absolute)
RotateEntity(ragdolls()\legl,0,0,0,#PB_Absolute)
RotateEntity(ragdolls()\leglu,0,0,0,#PB_Absolute)
RotateEntity(ragdolls()\legr,0,0,0,#PB_Absolute)
RotateEntity(ragdolls()\legru,0,0,0,#PB_Absolute)
ragdolls()\ct_bodyhead=ConeTwistJoint(#PB_Any,EntityID(ragdolls()\Body) , 0, 0.7,0,EntityID(ragdolls()\Head) ,0,-0.4,0)
;ragdolls()\ct_bodyhead=PointJoint(#PB_Any,EntityID(ragdolls()\Body) , 0, 0.7,0,EntityID(ragdolls()\Head) ,0,-0.4,0)
ragdolls()\ct_arml = ConeTwistJoint(#PB_Any,EntityID(ragdolls()\Body),-0.6, 0.5 ,0,EntityID(ragdolls()\arml) , 0, 0.4,0)
ragdolls()\hinge_arml = HingeJoint(#PB_Any,EntityID(ragdolls()\arml) , 0, -0.45,0,1,0,0,EntityID(ragdolls()\armlu), 0,0.45,0,1,0,0)
ragdolls()\ct_armr = ConeTwistJoint(#PB_Any,EntityID(ragdolls()\Body), 0.6, 0.5,0,EntityID(ragdolls()\armr), 0, 0.4,0)
ragdolls()\hinge_armr = HingeJoint(#PB_Any,EntityID(ragdolls()\armr) , 0 ,-0.45,0,1,0,0,EntityID(ragdolls()\armru), 0,0.45,0,1,0,0)
ragdolls()\hinge_legl = HingeJoint(#PB_Any,EntityID(ragdolls()\Body) ,-0.3,-0.60,0,1,0,0,EntityID(ragdolls()\legl) , 0,0.40,0,1,0,0)
ragdolls()\hinge_legr = HingeJoint(#PB_Any,EntityID(ragdolls()\Body) , 0.3,-0.60,0,1,0,0,EntityID(ragdolls()\legr) , 0,0.40,0,1,0,0)
ragdolls()\hinge_leglu = HingeJoint(#PB_Any,EntityID(ragdolls()\legl) , 0,-0.45,0,1,0,0,EntityID(ragdolls()\leglu), 0,0.45,0,1,0,0)
ragdolls()\hinge_legru = HingeJoint(#PB_Any,EntityID(ragdolls()\legr) , 0,-0.45,0,1,0,0,EntityID(ragdolls()\legru), 0,0.45,0,1,0,0)
;joints attributes
SetJointAttribute(ragdolls()\ct_bodyhead,#PB_ConeTwistJoint_SwingSpan,0.5)
SetJointAttribute(ragdolls()\ct_bodyhead,#PB_ConeTwistJoint_SwingSpan2,0.5)
SetJointAttribute(ragdolls()\ct_bodyhead,#PB_ConeTwistJoint_TwistSpan,0.5)
; ;
SetJointAttribute(ragdolls()\ct_arml,#PB_ConeTwistJoint_SwingSpan ,0.2);seitl
SetJointAttribute(ragdolls()\ct_arml,#PB_ConeTwistJoint_SwingSpan2,1);dreh
SetJointAttribute(ragdolls()\ct_arml,#PB_ConeTwistJoint_TwistSpan ,2);vorzurück
; ;
SetJointAttribute(ragdolls()\hinge_arml,#PB_HingeJoint_LowerLimit,0)
SetJointAttribute(ragdolls()\hinge_arml,#PB_HingeJoint_UpperLimit,120)
SetJointAttribute(ragdolls()\hinge_armr,#PB_HingeJoint_LowerLimit,0)
SetJointAttribute(ragdolls()\hinge_armr,#PB_HingeJoint_UpperLimit,120)
SetJointAttribute(ragdolls()\ct_armr,#PB_ConeTwistJoint_SwingSpan,0.2);seitlich
SetJointAttribute(ragdolls()\ct_armr,#PB_ConeTwistJoint_SwingSpan2,1);dreh
SetJointAttribute(ragdolls()\ct_armr,#PB_ConeTwistJoint_TwistSpan,2);vorzurück
SetJointAttribute(ragdolls()\hinge_legl,#PB_HingeJoint_LowerLimit,-1)
SetJointAttribute(ragdolls()\hinge_legl,#PB_HingeJoint_UpperLimit,120)
SetJointAttribute(ragdolls()\hinge_legr,#PB_HingeJoint_LowerLimit,-1)
SetJointAttribute(ragdolls()\hinge_legr,#PB_HingeJoint_UpperLimit,120)
SetJointAttribute(ragdolls()\hinge_leglu,#PB_HingeJoint_LowerLimit,-120)
SetJointAttribute(ragdolls()\hinge_leglu,#PB_HingeJoint_UpperLimit,1)
SetJointAttribute(ragdolls()\hinge_legru,#PB_HingeJoint_LowerLimit,-120)
SetJointAttribute(ragdolls()\hinge_legru,#PB_HingeJoint_UpperLimit,1)
Next
EndProcedure
If InitEngine3D()
; Ergebnis = WorldDebug(#PB_World_DebugBody)
Add3DArchive(#PB_Compiler_Home + "/Examples/3D/" +"Data/Textures", #PB_3DArchive_FileSystem)
Add3DArchive(#PB_Compiler_Home + "/Examples/3D/" +"Data/Packs/desert.zip", #PB_3DArchive_Zip)
Parse3DScripts()
InitSprite()
InitKeyboard()
InitMouse()
If Screen3DRequester()
WorldShadows(#PB_Shadow_Additive,512)
SkyBox("desert07.jpg")
camera=CreateCamera(#PB_Any,0,0,100,100)
;CameraRenderMode(camera, #PB_Camera_Plot)
MoveCamera(camera,0, 260 ,15, #PB_Absolute)
texture1t=CreateTexture(#PB_Any,512,512)
font=LoadFont(#PB_Any,"",14,#PB_Font_HighQuality)
StartDrawing(TextureOutput(texture1t))
DrawingFont(FontID(font))
Box(0, 0, 512, 512, RGBA(222,222,255, 200))
For l=0 To 128
Circle(Random(512),Random(512),Random(4)+1,RGBA(128,128,255,255))
Next l
DrawingMode(#PB_2DDrawing_Transparent)
FrontColor(#Black)
;BackColor(#Black)
th=TextHeight("X")
ty=0
DrawText(0, 0,"V:Hands OFF/ON (**)")
ty+th
DrawText(0,ty,"U:IdiotDance OFF/ON (**)")
ty+th
DrawText(0,ty,"R:reset (*)")
ty+th
DrawText(0,ty,"B:BloodyGame (**)")
ty+th
DrawText(0,ty,"BloodyGameHeight N:increase , M: decrease (*)")
ty+th
DrawText(0,ty,"T:upright (*)")
ty+th
DrawText(0,ty,"H:hail (*), G:strange (*)")
ty+th
DrawText(0,ty,"T: upright (*)")
ty+th
DrawText(0,ty,"F:forceup (near plate) (trampoline) (*)")
ty+th
DrawText(0,ty,"J:forceup (*)")
ty+th
DrawText(0,ty,"P:LookatAll (*)")
ty+th
DrawText(0,ty,"S:Shoot (**)")
ty+th
DrawText(0,ty,"L:Disassemble , O: Assemble (**)")
ty+th
DrawText(0,ty,"1,2,3,4,6,8 turns head (*)")
ty+th
DrawText(0,ty,"Add:Gravitiy decrease")
ty+th
DrawText(0,ty,"Sub:Gravitiy increase")
ty+th
DrawText(0,ty,"Q:Quakemode, Hello Newzealand")
ty+th
DrawText(0,ty,"(*) while pressed, (**) when release key")
;Debug ty
StopDrawing()
texture1=CreateMaterial(#PB_Any, TextureID(texture1t))
texture2=CreateTexture(#PB_Any,256,256)
StartDrawing(TextureOutput(texture2))
DrawingMode(#PB_2DDrawing_AlphaBlend)
Box(0,0,256,256,RGBA(0,0,0,0))
DrawingFont(FontID(font))
;FrontColor(RGBA(0,0,0,255))
DrawText(0,0,"Press B and have fun",RGBA(255,255,0,255),RGBA(0,0,0,0))
DrawText(0,50,"Hold N for a time and press B",RGBA(255,255,0,255),RGBA(0,0,0,0))
DrawText(0,70,"and have even more fun",RGBA(255,255,0,255),RGBA(0,0,0,0))
StopDrawing()
infomat=CreateMaterial(#PB_Any,TextureID(texture2))
MaterialBlendingMode(infomat,#PB_Material_AlphaBlend)
texture2= CreateTexture(#PB_Any,256,256)
StartDrawing(TextureOutput(texture2))
Box(0,0,256,256,RGBA(80,80,80,180))
For l=0 To 400
Circle(Random(256),Random(256),Random(3)+1,RGBA(Random(5)+100,Random(5)+100,Random(5)+100,180))
Next l
DrawText(0,0,"ragdoll ®",RGBA(255,0,0,255),RGBA(80,80,80,222))
StopDrawing()
texture2=CreateMaterial(#PB_Any, TextureID(texture2))
textureblue = CreateTexture(#PB_Any,256,256)
StartDrawing(TextureOutput(textureblue))
Box(0,0,256,256,#White)
Ellipse( 0,128,25,50,RGB(30, 144, 255))
Ellipse(256,128,25,50,RGB(30, 144, 255))
Ellipse( 0,128,10,20,RGB(0 , 0, 0))
Ellipse(256,128,10,20,RGB(0 , 0, 0))
StopDrawing()
MatEye = CreateMaterial(#PB_Any,TextureID(textureblue))
texturedead = CreateTexture(#PB_Any,256,256)
StartDrawing(TextureOutput(texturedead))
Box(0,0,256,256,#White)
For de=0 To 10
Line(0,128+de,256,1,#Black)
Line(0,128-de,256,1,#Black)
Next
For de=0 To 10
Line(de,0,1,256,#Black)
Line(256-de,0,1,256,#Black)
Next
StopDrawing()
MatDeadEye = CreateMaterial(#PB_Any,TextureID(texturedead))
textureflesh = CreateTexture(#PB_Any,256,256)
StartDrawing(TextureOutput(textureflesh))
Box(0,0,256,256,RGB(255, 218, 185))
For f=0 To 512
Circle(Random(255),Random(255),Random(2),RGB(243, 208, 161))
Next
StopDrawing()
MatFlesh = CreateMaterial(#PB_Any,TextureID(textureflesh))
texturemouth = CreateTexture(#PB_Any,256,256)
StartDrawing(TextureOutput(texturemouth))
Box(0,0,256,256,#White)
For t=0 To 256 Step 16
Line(t,0,1,256,#Black)
Line(t-1,0,1,256,#Black)
Line(t-2,0,1,256,#Black)
Line(t+1,0,1,256,#Black)
Line(t+2,0,1,256,#Black)
Next t
StopDrawing()
MatMouth = CreateMaterial(#PB_Any,TextureID(texturemouth))
texturekontakt= CreateTexture(#PB_Any,256,256)
StartDrawing(TextureOutput(texturekontakt))
DrawingMode(#PB_2DDrawing_AlphaBlend)
Box(0,0,256,256,RGBA(0,0,0,0))
For c=1 To 32
bx=64+Random(128)
by=64+Random(128)
br=Random(32)
Circle(bx,by,br,RGBA(255,0,0,br*4))
Next c
StopDrawing()
MatKontakt = CreateMaterial(#PB_Any,TextureID(texturekontakt))
MaterialBlendingMode(MatKontakt,#PB_Material_AlphaBlend)
RotateMaterial(MatKontakt,0.005,#PB_Material_Animated)
AddMaterialLayer(MatKontakt,TextureID(texturekontakt),#PB_Material_Add)
Bodymesh = CreateCube(#PB_Any,1)
LimbMesh = CreateCylinder(#PB_Any, 0.1 ,0.80)
HeadMesh = CreateSphere(#PB_Any , 0.5); ,12,12)
NoseMesh = CreateSphere(#PB_Any , 0.25, 3, 4)
EyeMeshl = CreateSphere(#PB_Any , 0.10);,8,8)
EyeMeshr = CreateSphere(#PB_Any , 0.10);,8,8)
MouthMesh = CreateSphere(#PB_Any , 0.25,15,15)
EarMeshl = CreateSphere(#PB_Any , 0.25);,8,8)
EarMeshr = CreateSphere(#PB_Any , 0.25);,8,8)
FootMeshl = CreateSphere(#PB_Any , 0.25,6,6)
FootMeshr = CreateSphere(#PB_Any , 0.25,6,6)
kontaktMesh= CreatePlane(#PB_Any,0.25,0.25,1,1,1,1)
TransformMesh(kontaktMesh,0,0.05,0,1,1,1,0,0,0)
kontakt=CreateEntity(#PB_Any,MeshID(kontaktMesh),MaterialID(MatKontakt))
EntityRenderMode(kontakt, #PB_Entity_CastShadow)
TransformMesh(NoseMesh , 0.00, 0.00, 0.50, 1.00, 1.00, 1.00, 0.00, 0.00, 0.00)
TransformMesh(EyeMeshl ,-0.35, 0.20, 0.25, 1.00, 1.00, 1.00, 0.00, 0.00, 0.00)
TransformMesh(EyeMeshr , 0.35, 0.20, 0.25, 1.00, 1.00, 1.00, 0.00, 0.00, 0.00)
TransformMesh(MouthMesh, 0.00,-0.15, 0.22, 1.50, 0.45, 1.00, 40.00, 0.00, 0.00)
TransformMesh(EarMeshl ,-0.50,-0.10,-0.20, 1.00, 1.00, 0.25, 0.00, 0.00, 0.00)
TransformMesh(EarMeshr , 0.50,-0.10,-0.20, 1.00, 1.00, 0.25, 0.00, 0.00, 0.00)
TransformMesh(FootMeshl,-0.02,-0.38, 0.15, 0.50, 0.25, 1.00, 10.00, 20.00, 0.00)
TransformMesh(FootMeshr, 0.02,-0.38, 0.15, 0.50, 0.25, 1.00, 10.00,-20.00, 0.00)
For r=1 To 8 ;3 Dinger
AddElement(ragdolls())
ragdolls()\posx=r*2-2
ragdolls()\posy=260
ragdolls()\posz=0
ragdolls()\texture=texture2
;bodyparts
ragdolls()\Body=CreateEntity(#PB_Any,MeshID(Bodymesh),MaterialID(ragdolls()\texture),ragdolls()\posx,ragdolls()\posy,ragdolls()\posz)
ScaleEntity(ragdolls()\Body,1.0,1,0.25)
ragdolls()\Nose = CreateEntity(#PB_Any,MeshID(NoseMesh) ,MaterialID(MatFlesh))
ragdolls()\eyel = CreateEntity(#PB_Any,MeshID(EyeMeshl) ,MaterialID(MatEye))
ragdolls()\eyer = CreateEntity(#PB_Any,MeshID(EyeMeshr) ,MaterialID(MatEye))
ragdolls()\mouth = CreateEntity(#PB_Any,MeshID(MouthMesh),MaterialID(MatMouth))
ragdolls()\earl = CreateEntity(#PB_Any,MeshID(EarMeshl) ,MaterialID(MatFlesh))
ragdolls()\earr = CreateEntity(#PB_Any,MeshID(EarMeshr) ,MaterialID(MatFlesh))
ragdolls()\Head = CreateEntity(#PB_Any,MeshID(HeadMesh),MaterialID(MatFlesh), ragdolls()\posx,ragdolls()\posy+1,ragdolls()\posz)
AttachEntityObject(ragdolls()\Head,"",EntityID(ragdolls()\Nose) ,0,0,0,0,0,0)
AttachEntityObject(ragdolls()\Head,"",EntityID(ragdolls()\eyel) ,0,0,0,0,0,0)
AttachEntityObject(ragdolls()\Head,"",EntityID(ragdolls()\eyer) ,0,0,0,0,0,0)
AttachEntityObject(ragdolls()\Head,"",EntityID(ragdolls()\mouth),0,0,0,0,0,0)
AttachEntityObject(ragdolls()\Head,"",EntityID(ragdolls()\earl) ,0,0,0,0,0,0)
AttachEntityObject(ragdolls()\Head,"",EntityID(ragdolls()\earr) ,0,0,0,0,0,0)
ragdolls()\arml = CreateEntity(#PB_Any,MeshID(LimbMesh),MaterialID(ragdolls()\texture) ,ragdolls()\posx-0.6,ragdolls()\posy,ragdolls()\posz)
ragdolls()\armlu = CreateEntity(#PB_Any,MeshID(LimbMesh),MaterialID(ragdolls()\texture) ,ragdolls()\posx-0.6,ragdolls()\posy-1,ragdolls()\posz)
ragdolls()\armr = CreateEntity(#PB_Any,MeshID(LimbMesh),MaterialID(ragdolls()\texture) ,ragdolls()\posx+0.6,ragdolls()\posy,ragdolls()\posz)
ragdolls()\armru = CreateEntity(#PB_Any,MeshID(LimbMesh),MaterialID(ragdolls()\texture) ,ragdolls()\posx+ 0.6,ragdolls()\posy-1,ragdolls()\posz)
ragdolls()\legl = CreateEntity(#PB_Any,MeshID(LimbMesh),MaterialID(ragdolls()\texture) ,ragdolls()\posx-0.3,ragdolls()\posy-1,ragdolls()\posz)
ragdolls()\legr = CreateEntity(#PB_Any,MeshID(LimbMesh),MaterialID(ragdolls()\texture) ,ragdolls()\posx+ 0.3,ragdolls()\posy-1,ragdolls()\posz)
ragdolls()\leglu = CreateEntity(#PB_Any,MeshID(LimbMesh),MaterialID(ragdolls()\texture) ,ragdolls()\posx-0.3,ragdolls()\posy-2,ragdolls()\posz)
ragdolls()\legru = CreateEntity(#PB_Any,MeshID(LimbMesh),MaterialID(ragdolls()\texture) ,ragdolls()\posx+ 0.3,ragdolls()\posy-2,ragdolls()\posz)
ragdolls()\footl = CreateEntity(#PB_Any,MeshID(FootMeshl),MaterialID(ragdolls()\texture))
AttachEntityObject(ragdolls()\leglu,"",EntityID(ragdolls()\footl) ,0,0,0,0,0,0)
ragdolls()\footr = CreateEntity(#PB_Any,MeshID(FootMeshr),MaterialID(ragdolls()\texture))
AttachEntityObject(ragdolls()\legru,"",EntityID(ragdolls()\footr) ,0,0,0,0,0,0)
;rendermode=#PB_Entity_CastShadow
;rendermode=#PB_Entity_CastShadow|#PB_Entity_DisplaySkeleton
;bodyPhysics
CreateEntityBody(ragdolls()\Body,#PB_Entity_BoxBody ,10, 0,1)
EntityRenderMode(ragdolls()\Body, #PB_Entity_CastShadow)
EntityRenderMode(ragdolls()\Head, #PB_Entity_CastShadow)
CreateEntityBody(ragdolls()\Head, #PB_Entity_ConvexHullBody, 5, 0.25, 1)
EntityRenderMode(ragdolls()\arml, #PB_Entity_CastShadow)
CreateEntityBody(ragdolls()\arml, #PB_Entity_CylinderBody, 1, 0 ,1)
EntityRenderMode(ragdolls()\armlu, #PB_Entity_CastShadow)
CreateEntityBody(ragdolls()\armlu, #PB_Entity_CylinderBody, 1, 0, 1)
EntityRenderMode(ragdolls()\armr, #PB_Entity_CastShadow)
CreateEntityBody(ragdolls()\armr, #PB_Entity_CylinderBody, 1, 0, 1)
EntityRenderMode(ragdolls()\armru, #PB_Entity_CastShadow)
CreateEntityBody(ragdolls()\armru, #PB_Entity_CylinderBody, 1, 0,1)
EntityRenderMode(ragdolls()\legl, #PB_Entity_CastShadow)
CreateEntityBody(ragdolls()\legl, #PB_Entity_CylinderBody, 1, 0,1)
EntityRenderMode(ragdolls()\leglu, #PB_Entity_CastShadow)
CreateEntityBody(ragdolls()\leglu, #PB_Entity_CylinderBody,1, 0,1)
EntityRenderMode(ragdolls()\legr, #PB_Entity_CastShadow)
CreateEntityBody(ragdolls()\legr, #PB_Entity_CylinderBody, 1, 0,1)
EntityRenderMode(ragdolls()\legru, #PB_Entity_CastShadow)
CreateEntityBody(ragdolls()\legru, #PB_Entity_CylinderBody,1, 0,1)
Next
makejoints()
;
plate=CreateCube(#PB_Any,1)
ScaleMaterial(texture1,1,1)
RotateMaterial(texture1,90,#PB_Material_Fixed)
;boxes
;For r=1 To 600
; b=CreateEntity(#PB_Any,MeshID(plate),MaterialID(texture1),Random(20)-10,270,Random(20)-10);,Random(1),Random(10)+274,Random(1))
; ScaleEntity(b,0.2,3,0.2)
; CreateEntityBody(b,#PB_Entity_BoxBody ,05,0.01,100)
;Next r
platte=CreateEntity(#PB_Any,MeshID(plate),MaterialID(texture1),0,0,0)
;ScaleEntity(platte,70,0.01,70)
ScaleEntity(platte,70,0.5,70)
MoveEntity(platte,0,256,0)
EntityRenderMode(platte, #PB_Entity_CastShadow)
CreateEntityBody(platte,#PB_Entity_StaticBody,1,1,0.5)
info=CreateEntity(#PB_Any,MeshID(plate),MaterialID(infomat),0,0,0)
ScaleEntity(info,10,0.01,10)
MoveEntity(info,5,260,0)
RotateEntity(info,90,0,0)
EntityRenderMode(info, #PB_Entity_DisplaySkeleton )
suncolor=#White
sun=CreateLight(#PB_Any,suncolor,17830,12860,10930,#PB_Light_Point)
CameraLookAt(camera,EntityX(ragdolls()\Head),EntityY(ragdolls()\Head),EntityZ(ragdolls()\Head))
dance=1
hands=1
Repeat
;Debug hands
;Debug "************"
Screen3DEvents()
If ExamineMouse()
MouseX = -MouseDeltaX() * #CameraSpeed * 0.05
MouseY = -MouseDeltaY() * #CameraSpeed * 0.05
EndIf
If hands=1
hands=2
;Debug hands
;Händchenhalten
sp=-0.5
tau.f=0
damp.f=0.5
SelectElement(ragdolls(),0)
jx=EntityX(ragdolls()\armru)
jy=EntityY(ragdolls()\armru)
jz=EntityZ(ragdolls()\armru)
id=EntityID(ragdolls()\armru)
SelectElement(ragdolls(),1)
jx1=EntityX(ragdolls()\armlu)
jy1=EntityY(ragdolls()\armlu)
jz1=EntityZ(ragdolls()\armlu)
id1=EntityID(ragdolls()\armlu)
knupf1=PointJoint(#PB_Any,id,0,sp,0,id1,0,sp,0)
SetJointAttribute(knupf1,#PB_PointJoint_Damping,damp)
SetJointAttribute(knupf1,#PB_PointJoint_Tau,tau)
jx=EntityX(ragdolls()\armru)
jy=EntityY(ragdolls()\armru)
jz=EntityZ(ragdolls()\armru)
id=EntityID(ragdolls()\armru)
SelectElement(ragdolls(),2)
jx1=EntityX(ragdolls()\armlu)
jy1=EntityY(ragdolls()\armlu)
jz1=EntityZ(ragdolls()\armlu)
id1=EntityID(ragdolls()\armlu)
knupf2=PointJoint(#PB_Any,id,0,sp,0,id1,0,sp,0)
SetJointAttribute(knupf2,#PB_PointJoint_Damping,damp)
SetJointAttribute(knupf2,#PB_PointJoint_Tau,tau)
EndIf
If hands=3
;Debug hands
hands=0
If knupf1
FreeJoint(knupf1)
knupf1=0
EndIf
If knupf2
FreeJoint(knupf2)
knupf2=0
EndIf
If knupf3
FreeJoint(knupf3)
knupf3=0
EndIf
EndIf
If dance=1
;dance=2
ForEach ragdolls()
If EntityY(ragdolls()\Head)<259.5
ApplyEntityImpulse(ragdolls()\Head ,0, 9,0,0,1,0)
ApplyEntityImpulse(ragdolls()\legru ,0, -5,0,0,-1,0)
ApplyEntityImpulse(ragdolls()\leglu ,0, -5,0,0,-1,0)
If EntityY(ragdolls()\leglu)<256.8
ApplyEntityImpulse(ragdolls()\leglu,Random(2)-1,Random(8),Random(2)-1)
EndIf
If EntityY(ragdolls()\legru)<256.8
ApplyEntityImpulse(ragdolls()\legru,Random(2)-1,Random(8),Random(2)-1)
EndIf
ApplyEntityImpulse(ragdolls()\armlu,Random(2)-1,Random(2)-1,Random(2)-1)
ApplyEntityImpulse(ragdolls()\armru,Random(2)-1,Random(2)-1,Random(2)-1)
EndIf
Next
EndIf
KeyboardMode(#PB_Keyboard_International)
If ExamineKeyboard()
If KeyboardReleased(#PB_Key_R) Or KeyboardReleased(#PB_Key_E)
px.f=0
py.f=0
pz.f=0
ForEach ragdolls()
px+EntityX(ragdolls()\Body)
py+EntityY(ragdolls()\Body)
pz+EntityZ(ragdolls()\Body)
Next
px=px/ListSize(ragdolls())
py=py/ListSize(ragdolls())
pz=pz/ListSize(ragdolls())
MoveCamera(camera,0, 260 ,15, #PB_Absolute)
CameraLookAt(camera,px,py,pz)
EndIf
If KeyboardPushed(#PB_Key_P)
px.f=0
py.f=0
pz.f=0
ForEach ragdolls()
px+EntityX(ragdolls()\Body)
py+EntityY(ragdolls()\Body)
pz+EntityZ(ragdolls()\Body)
Next
px=px/ListSize(ragdolls())
py=py/ListSize(ragdolls())
pz=pz/ListSize(ragdolls())
CameraLookAt(camera,px,py,pz)
EndIf
If KeyboardPushed(#PB_Key_N)
bloodygameheight+1
EndIf
If KeyboardPushed(#PB_Key_M)
bloodygameheight-1
If bloodygameheight<290
bloodygameheight=290
EndIf
EndIf
If KeyboardReleased(#PB_Key_O)
killjoints()
hands=0
makejoints()
ForEach ragdolls()
SetEntityMaterial(ragdolls()\eyel, MaterialID(MatEye))
SetEntityMaterial(ragdolls()\eyer, MaterialID(MatEye))
Next
EndIf
If KeyboardReleased(#PB_Key_L)
killjoints()
hands=0
ForEach ragdolls()
SetEntityMaterial(ragdolls()\eyel, MaterialID(MatDeadEye))
SetEntityMaterial(ragdolls()\eyer, MaterialID(MatDeadEye))
Next
EndIf
If KeyboardReleased(#PB_Key_B)
px.f=0
py.f=0
pz.f=0
ForEach ragdolls()
px+EntityX(ragdolls()\Body)
py+EntityY(ragdolls()\Body)
pz+EntityZ(ragdolls()\Body)
Next
px=px/ListSize(ragdolls())
py=py/ListSize(ragdolls())
pz=pz/ListSize(ragdolls())
ForEach(ragdolls())
ApplyEntityImpulse(ragdolls()\Body,Random(20)-10,0,Random(20)-10)
ApplyEntityImpulse(ragdolls()\Head,Random(20)-10,0,Random(20)-10)
Next
MoveCamera(camera,px,py+10,pz,#PB_Absolute)
CameraLookAt(camera,0,260,0)
EndIf
If KeyboardPushed(#PB_Key_S) And shoot=0
ForEach ragdolls()
ApplyEntityImpulse(ragdolls()\Body,0,0,-100,Random(8)-4,Random(8)-4,Random(8)-4)
shoot=1
Next
EndIf
If KeyboardReleased(#PB_Key_S)
shoot=0
EndIf
If KeyboardPushed(#PB_Key_R)
ForEach ragdolls()
MoveEntity(ragdolls()\Head,ragdolls()\posx,ragdolls()\posy,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\Body,ragdolls()\posx,ragdolls()\posy-1,ragdolls()\posz,#PB_Absolute)
RotateEntity(ragdolls()\Body,0,0,0,#PB_Absolute)
MoveEntity(ragdolls()\legr,ragdolls()\posx+0.3,ragdolls()\posy-2,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\legl,ragdolls()\posx-0.3,ragdolls()\posy-2,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\legru,ragdolls()\posx+0.3,ragdolls()\posy-2.9,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\leglu,ragdolls()\posx-0.3,ragdolls()\posy-2.9,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\armr,ragdolls()\posx+0.6,ragdolls()\posy-1,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\arml,ragdolls()\posx-0.6,ragdolls()\posy-1,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\armru,ragdolls()\posx+0.6,ragdolls()\posy-2,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\armlu,ragdolls()\posx-0.6,ragdolls()\posy-2,ragdolls()\posz,#PB_Absolute)
Next
EndIf
If KeyboardPushed(#PB_Key_B)
ForEach ragdolls()
MoveEntity(ragdolls()\Head,ragdolls()\posx,bloodygameheight,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\Body,ragdolls()\posx,bloodygameheight-1,ragdolls()\posz,#PB_Absolute)
RotateEntity(ragdolls()\Body,0,0,0,#PB_Absolute)
MoveEntity(ragdolls()\legr,ragdolls()\posx+0.3,bloodygameheight-2,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\legl,ragdolls()\posx-0.3,bloodygameheight-2,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\legru,ragdolls()\posx+0.3,bloodygameheight-2.9,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\leglu,ragdolls()\posx-0.3,bloodygameheight-2.9,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\armr,ragdolls()\posx+0.6,bloodygameheight-1,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\arml,ragdolls()\posx-0.6,bloodygameheight-1,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\armru,ragdolls()\posx+0.6,bloodygameheight-2,ragdolls()\posz,#PB_Absolute)
MoveEntity(ragdolls()\armlu,ragdolls()\posx-0.6,bloodygameheight-2,ragdolls()\posz,#PB_Absolute)
Next
EndIf
If KeyboardReleased(#PB_Key_V)
Select hands
Case 0
hands=1
Case 2
hands=3
EndSelect
EndIf
If KeyboardPushed(#PB_Key_T)
ForEach ragdolls()
ApplyEntityImpulse(ragdolls()\armlu ,0,-1,0,0,-1,0)
ApplyEntityImpulse(ragdolls()\armru ,0,-1,0,0,-1,0)
ApplyEntityImpulse(ragdolls()\leglu,0,-3,0,0,-1,0)
ApplyEntityImpulse(ragdolls()\legru,0,-3,0,0,-1,0)
ApplyEntityImpulse(ragdolls()\Head ,0, 10,0,0,1,0)
;ApplyEntityForce(ragdolls()\HEAD,(Random(10)+5)*-1,0,(Random(10)+5)*-1) ;nearly ParachuteEffect
Next
EndIf
If KeyboardPushed(#PB_Key_J)
ForEach ragdolls()
ApplyEntityImpulse(ragdolls()\Head,0,10,0)
Next
EndIf
If KeyboardPushed(#PB_Key_K)
SelectElement(ragdolls(),1)
ApplyEntityImpulse(ragdolls()\Head,0,Random(10)+9,0)
EndIf
If KeyboardPushed(#PB_Key_I)
I_f+1
SelectElement(ragdolls(),0)
ApplyEntityImpulse(ragdolls()\armlu,0,Random(10)+10+I_f,0)
EndIf
If KeyboardReleased(#PB_Key_I)
i_f=0
EndIf
If KeyboardReleased(#PB_Key_U)
Select dance
Case 1
dance=0
Case 0
dance=1
EndSelect
EndIf
If KeyboardPushed(#PB_Key_F)
ForEach ragdolls()
If EntityY(ragdolls()\Body)<259
ApplyEntityImpulse(ragdolls()\Body,0, 3,0,0,-10,0)
ApplyEntityImpulse(ragdolls()\armlu ,0, 3,0,0,-10,0)
ApplyEntityImpulse(ragdolls()\armru ,0, 3,0,0,-10,0)
ApplyEntityImpulse(ragdolls()\leglu ,0, 3,0,0,-10,0)
ApplyEntityImpulse(ragdolls()\legru ,0, 3,0,0,-10,0)
ApplyEntityImpulse(ragdolls()\Head ,0,6,0,0,0 ,0)
EndIf
Next
EndIf
If KeyboardPushed(#PB_Key_H)
ForEach ragdolls()
ApplyEntityImpulse(ragdolls()\armlu,0,1,0,0,-2,0)
ApplyEntityImpulse(ragdolls()\armru,0,1,0,0,-2,0)
ApplyEntityImpulse(ragdolls()\legl,0,-4,0,0,-20,0)
ApplyEntityImpulse(ragdolls()\legr,0,-4,0,0,-20,0)
ApplyEntityImpulse(ragdolls()\Head,0,5,0,0,0,0)
ApplyEntityImpulse(ragdolls()\Body,0,4,0,0,10,0)
Next
EndIf
;Earthquake
If KeyboardReleased(#PB_Key_Q)
If earthquake
;Debug "Earthquake off"
earthquake=0
Else
; Debug "Earthquake on"
earthquake=1
EndIf
EndIf
;KeyboardPushed Q
; plate rumbles (mimimal impulses in different dierctions)
;
If KeyboardPushed(#PB_Key_Add)
wg+1
WorldGravity(wg)
EndIf
If KeyboardPushed(#PB_Key_Subtract)
wg-1
WorldGravity(wg)
EndIf
If KeyboardPushed(#PB_Key_G)
ForEach ragdolls()
ApplyEntityImpulse(ragdolls()\Head ,0, 2,0)
ApplyEntityImpulse(ragdolls()\legl , 0, Random(4),0,0,-6,0)
ApplyEntityImpulse(ragdolls()\legr , 0, Random(4),0,0,-6,0)
ApplyEntityImpulse(ragdolls()\armlu , 0, Random(1),0,0,6,0)
ApplyEntityImpulse(ragdolls()\armru , 0, Random(1),0,0,6,0)
ApplyEntityImpulse(ragdolls()\Body,0,-6,0,0,0,0)
Next
EndIf
If KeyboardPushed(#PB_Key_Pad6)
ForEach ragdolls()
RotateEntity(ragdolls()\Head,0,10,0,#PB_Relative)
Next
EndIf
If KeyboardPushed(#PB_Key_Pad4)
ForEach ragdolls()
RotateEntity(ragdolls()\Head,0,-10,0,#PB_Relative)
Next
EndIf
If KeyboardPushed(#PB_Key_Pad1)
ForEach ragdolls()
RotateEntity(ragdolls()\Head,0,0,-5,#PB_Relative)
Next
EndIf
If KeyboardPushed(#PB_Key_Pad3)
ForEach ragdolls()
RotateEntity(ragdolls()\Head,0,0,5,#PB_Relative)
Next
EndIf
If KeyboardPushed(#PB_Key_Pad8)
ForEach ragdolls()
RotateEntity(ragdolls()\Head,-10,0,0,#PB_Relative)
Next
EndIf
If KeyboardPushed(#PB_Key_Pad2)
ForEach ragdolls()
RotateEntity(ragdolls()\Head,10,0,0,#PB_Relative)
Next
EndIf
If KeyboardPushed(#PB_Key_Left)
KeyX = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Right)
KeyX = #CameraSpeed
Else
KeyX = 0
EndIf
If KeyboardPushed(#PB_Key_Up)
KeyY = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Down)
KeyY = #CameraSpeed
Else
KeyY = 0
EndIf
EndIf
If earthquake
;Debug EntityY(platte)
rx.f=(Random(200)-99)/1000
ry.f=(Random(200)-99)/1000
rz.f=(Random(200)-99)/1000
MoveEntity(platte, rx,ry+256,rz, #PB_Absolute)
ApplyEntityForce(platte,0,0,50)
;Debug ApplyEntityImpulse(platte ,0,0,0,0,100,0,#PB_World)
Else
;MoveEntity(platte,0,256,0,#PB_Absolute)
EndIf
RotateCamera(camera, MouseY, MouseX, 0, #PB_Relative)
MoveCamera (camera, KeyX, 0, KeyY)
;Make it Bloody
ExamineWorldCollisions(#True)
While NextWorldCollision()
If platte=FirstWorldCollisionEntity() Or platte=SecondWorldCollisionEntity()
wcap=WorldCollisionAppliedImpulse()
;Debug GetY()
impy=wcap;GetY()
If impy>666
killjoints()
hands=0
EndIf
If impy>100
dead=1
ForEach ragdolls()
SetEntityMaterial(ragdolls()\eyel, MaterialID(MatDeadEye))
SetEntityMaterial(ragdolls()\eyer, MaterialID(MatDeadEye))
Next
EndIf
If impy>20 ; blood with heavier impulses
If impy>100
impy=100
EndIf
WorldCollisionContact()
AddElement(blood())
blood()\id=CopyEntity(kontakt,#PB_Any)
ScaleEntity(blood()\id,impy/5,1,impy/5,#PB_Relative)
blood()\time=ElapsedMilliseconds()+(impy*impy/2)
MoveEntity(blood()\id,GetX(),GetY(),GetZ(),#PB_Absolute)
EndIf
EndIf
Wend
ForEach blood()
If ElapsedMilliseconds()>blood()\time+5000
FreeEntity(blood()\id)
DeleteElement(blood())
If dead
ForEach ragdolls()
SetEntityMaterial(ragdolls()\eyel, MaterialID(MatEye))
SetEntityMaterial(ragdolls()\eyer, MaterialID(MatEye))
Next
dead=0
EndIf
EndIf
Next
lre=RenderWorld()
;Debug "RenderWorld " +lre
;Debug Engine3DFrameRate(#PB_Engine3D_Current)
;Debug "Framerate "+Engine3DStatus(#PB_Engine3D_AverageFPS)
;Debug "*******"
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
EndIf
Else
MessageRequester("Error", "The 3D Engine can't be initialized", 0)
EndIf
End