Module: Jolt

Defined in:
lib/jolt.rb,
lib/jolt/hit.rb,
lib/jolt/body.rb,
lib/jolt/shape.rb,
lib/jolt/errors.rb,
lib/jolt/layers.rb,
lib/jolt/native.rb,
lib/jolt/system.rb,
lib/jolt/version.rb,
lib/jolt/transform.rb,
lib/jolt/constraint.rb,
lib/jolt/conversions.rb,
lib/jolt/native/types.rb,
lib/jolt/body_dynamics.rb,
lib/jolt/fixed_stepper.rb,
lib/jolt/contact_events.rb,
lib/jolt/shape_builders.rb,
lib/jolt/system_queries.rb,
lib/jolt/body_collection.rb,
lib/jolt/native/platform.rb,
lib/jolt/system_contacts.rb,
lib/jolt/native/generated.rb,
lib/jolt/character_virtual.rb,
lib/jolt/system_characters.rb,
lib/jolt/system_constraints.rb,
lib/jolt/constraint_collection.rb,
lib/jolt/native/core_functions.rb,
lib/jolt/native/query_functions.rb,
lib/jolt/native/character_functions.rb,
lib/jolt/native/constraint_functions.rb

Defined Under Namespace

Modules: BodyDynamics, Conversions, Native, ShapeBuilders, SystemCharacters, SystemConstraints, SystemContacts, SystemQueries Classes: Body, BodyCollection, CharacterVirtual, ConcurrentAccessError, Constraint, ConstraintCollection, Contact, ContactEvents, Error, FixedStepper, Hit, InitializationError, InvalidArgumentError, Layers, NativeLoadError, PhysicsUpdateError, Shape, ShapeError, System, Transform, UseAfterDestroyError

Constant Summary collapse

VERSION =
"1.0.0"

Class Method Summary collapse

Class Method Details

.__register_system(system) ⇒ Object



71
72
73
74
75
76
77
# File 'lib/jolt.rb', line 71

def __register_system(system)
  @lifecycle_mutex.synchronize do
    raise InitializationError, "Jolt Physics is not initialized" unless @initialized

    @systems << system
  end
end

.__unregister_system(system) ⇒ Object



79
80
81
# File 'lib/jolt.rb', line 79

def __unregister_system(system)
  @lifecycle_mutex.synchronize { @systems.delete(system) }
end

.initObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/jolt.rb', line 33

def init
  @lifecycle_mutex.synchronize do
    return self if @initialized

    Native.load!
    raise InitializationError, "Jolt Physics initialization failed" unless Native.JPH_Init

    @initialized = true
    unless @at_exit_registered
      at_exit { shutdown }
      @at_exit_registered = true
    end
  end

  self
end

.initialized?Boolean

Returns:

  • (Boolean)


50
51
52
# File 'lib/jolt.rb', line 50

def initialized?
  @lifecycle_mutex.synchronize { @initialized }
end

.shutdownObject



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/jolt.rb', line 54

def shutdown
  systems = @lifecycle_mutex.synchronize do
    return unless @initialized

    @systems.dup
  end
  systems.each(&:destroy)

  @lifecycle_mutex.synchronize do
    return unless @initialized

    @systems.clear
    Native.JPH_Shutdown
    @initialized = false
  end
end