Sha256: 32855f1a234c79d4d91c79188f1ec7746e173f8a6f457a7b933fbdcc0882eac0

Contents?: true

Size: 1.1 KB

Versions: 8

Compression:

Stored size: 1.1 KB

Contents

# -*- coding: utf-8 -*-


require 'xot/setter'
require 'xot/universal_accessor'
require 'xot/block_util'
require 'reflex/ext'
require 'reflex/helper'


module Reflex


  class Shape

    include Xot::Setter
    include Hookable
    include HasFrame
    include HasTags

    alias sensor? sensor

    universal_accessor :name, :selector,
      :density, :friction, :restitution, :sensor,
      :category_bits, :collision_mask

    def initialize (options = nil, &block)
      super()
      set options if options
      Xot::BlockUtil.instance_eval_or_block_call self, &block if block
    end

    def on_contact (e)
    end

    def on_contact_begin (e)
    end

    def on_contact_end (e)
    end

    private

      def on_contact! (*args)
        call_contact! *args
        owner&.delay {on_contact *args}# delay to avoid physics world lock
      end

      def on_contact_begin! (*args)
        call_contact_begin! *args
        owner&.delay {on_contact_begin *args}
      end

      def on_contact_end! (*args)
        call_contact_end! *args
        owner&.delay {on_contact_end *args}
      end

  end# Shape


end# Reflex

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
reflexion-0.1.21 lib/reflex/shape.rb
reflexion-0.1.20 lib/reflex/shape.rb
reflexion-0.1.19 lib/reflex/shape.rb
reflexion-0.1.17 lib/reflex/shape.rb
reflexion-0.1.16 lib/reflex/shape.rb
reflexion-0.1.15 lib/reflex/shape.rb
reflexion-0.1.14 lib/reflex/shape.rb
reflexion-0.1.13 lib/reflex/shape.rb