class SK::PolygonCollider

Attributes

friction[RW]
restitution[RW]
shape[RW]
vertices[RW]

Public Class Methods

new(vertices) click to toggle source
# File lib/shirokuro/standard_components/physics/polygon_collider.rb, line 6
def initialize vertices
        @vertices = vertices
        @friction = 0.4
        @restitution = 0.1
end

Public Instance Methods

start() click to toggle source
# File lib/shirokuro/standard_components/physics/polygon_collider.rb, line 12
def start
        rigid_body = get_component(RigidBody)
        
        if rigid_body == nil
                raise "RigidBody required for BoxCollider"
        end

        unless CP::Shape::Poly.valid?(@vertices)
                raise "Vertices does not form a valid polygon"
        end

        centroid = CP::centroid_for_poly(@vertices)

        @shape = CP::Shape::Poly.new(rigid_body.body, vertices, centroid)
        @shape.u = @friction
        @shape.e = @restitution

        # recalculate inertia
        rigid_body.body.i = CP.moment_for_poly(rigid_body.body.m, @vertices, centroid)

        physics.space.add_shape(@shape)
end