MCPcopy Create free account
hub / github.com/ByteArena/box2d / NewB2Body

Function NewB2Body

DynamicsB2Body.go:481–561  ·  view source on GitHub ↗

B2Body.cpp

(bd *B2BodyDef, world *B2World)

Source from the content-addressed store, hash-verified

479///////////////////////////////////////////////////////////////////////////////
480
481func NewB2Body(bd *B2BodyDef, world *B2World) *B2Body {
482 B2Assert(bd.Position.IsValid())
483 B2Assert(bd.LinearVelocity.IsValid())
484 B2Assert(B2IsValid(bd.Angle))
485 B2Assert(B2IsValid(bd.AngularVelocity))
486 B2Assert(B2IsValid(bd.AngularDamping) && bd.AngularDamping >= 0.0)
487 B2Assert(B2IsValid(bd.LinearDamping) && bd.LinearDamping >= 0.0)
488
489 body := &B2Body{}
490
491 body.M_flags = 0
492
493 if bd.Bullet {
494 body.M_flags |= B2Body_Flags.E_bulletFlag
495 }
496
497 if bd.FixedRotation {
498 body.M_flags |= B2Body_Flags.E_fixedRotationFlag
499 }
500
501 if bd.AllowSleep {
502 body.M_flags |= B2Body_Flags.E_autoSleepFlag
503 }
504
505 if bd.Awake {
506 body.M_flags |= B2Body_Flags.E_awakeFlag
507 }
508
509 if bd.Active {
510 body.M_flags |= B2Body_Flags.E_activeFlag
511 }
512
513 body.M_world = world
514
515 body.M_xf.P = bd.Position
516 body.M_xf.Q.Set(bd.Angle)
517
518 body.M_sweep.LocalCenter.SetZero()
519 body.M_sweep.C0 = body.M_xf.P
520 body.M_sweep.C = body.M_xf.P
521 body.M_sweep.A0 = bd.Angle
522 body.M_sweep.A = bd.Angle
523 body.M_sweep.Alpha0 = 0.0
524
525 body.M_jointList = nil
526 body.M_contactList = nil
527 body.M_prev = nil
528 body.M_next = nil
529
530 body.M_linearVelocity = bd.LinearVelocity
531 body.M_angularVelocity = bd.AngularVelocity
532
533 body.M_linearDamping = bd.LinearDamping
534 body.M_angularDamping = bd.AngularDamping
535 body.M_gravityScale = bd.GravityScale
536
537 body.M_force.SetZero()
538 body.M_torque = 0.0

Callers 1

CreateBodyMethod · 0.85

Calls 5

B2AssertFunction · 0.85
B2IsValidFunction · 0.85
IsValidMethod · 0.45
SetMethod · 0.45
SetZeroMethod · 0.45

Tested by

no test coverage detected