HC/index.html
2011-02-02 22:20:27 +01:00

164 lines
6.0 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>HardonCollider - A collision detection library</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<link rel="stylesheet" type="text/css" href="highlight.css" />
<script type="text/javascript" src="highlight.pack.js"></script>
<script type="text/javascript">
window.onload = function() {
var examples = document.getElementsByTagName("code");
for (i = 0; i < examples.length; ++i) {
if (examples[i].className == "lua")
hljs.highlightBlock(examples[i], " ");
}
};
</script>
</head>
<body><a name="top"></a>
<!--<a href="http://github.com/vrld/HardonCollider"><img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" /></a>-->
<div id="header">
<h1>Hardon Collider <span class="small">Collision detection for <a href="http://www.love2d.org/">L&Ouml;VE</a></span></h1>
<ul id="main-nav">
<li><a href="index.html">Home</a></li>
<li><a href="tutorial.html">Tutorial</a></li>
<li><a href="reference.html">Reference</a></li>
</ul>
<h2>Home</h2>
</div>
<a name="hardoncollider"></a>
<div id="hardoncollider" class="module">
<div class="name">HardonCollider<a class="top" href="#top">^ top</a></div>
<div class="preamble">
<p>HardonCollider is a Lua module to simplify one important aspect in
computer games: Collision detection.</p>
<p>It can detect collisions between arbitrary positioned and rotated shapes.
Those shapes can either be circles or polygons. Any non-intersecting polygons
are supported, even concave ones.</p>
<p>The main interface is simple:
<ul>
<li>Define collision callbacks,</li>
<li>Add shapes to the scene and</li>
<li>Update HardonCollider every frame.</li>
</ul>
</p>
</div>
<div class="overview">
<h3>Download</h3>
<p>You can download the latest packaged version of hump as <a href="http://github.com/vrld/HardonCollider/zipball/master">zip</a>-
or <a href="http://github.com/vrld/HardonCollider/tarball/master">tar</a>-archive directly from
<a href="http://github.com/">github</a>. You can also view the sourcecode
<a href="http://github.com/vrld/HardonCollider">here</a>.</p>
<p>If you use the <a href="http://git-scm.com">Git</a> command line client, you can clone
the repository by running:</p>
<pre>git clone git://github.com/vrld/HardonCollider.git</pre>
<p>Once done, you can check for updates by running:</p>
<pre>git pull</pre>
<p>from inside the directory.</p>
</div>
<div class="overview">
<h3>First steps</h3>
<p>This is an example on how to use HardonCollider.
One shape will stick to the mouse position, while the other will stay in the same place:</p>
<pre><code class="lua">HC = require 'hardoncollider'
-- array to hold collision messages
local text = {}
-- this is called when two shapes begin colliding
function collision_start(dt, shape_a, shape_b, mtv_x, mtv_y)
text[#text+1] = string.format("Started colliding. mtv = (%s,%s)",
mtv_x, mtv_y)
end
-- this is called when two shapes continue colliding
function collision_persist(dt, shape_a, shape_b, mtv_x, mtv_y)
text[#text+1] = string.format("Still colliding. mtv = (%s,%s)",
mtv_x, mtv_y)
end
-- this is called when two shapes stop colliding
function collision_stop(dt, shape_a, shape_b)
text[#text+1] = "Stopped colliding"
end
function love.load()
-- initialize library
HC.init(100, collision_start, collision_persist, collision_stop)
-- add a rectangle to the scene
rect = HC.addRectangle(200,400,400,20)
-- add a circle to the scene
mouse = HC.addCircle(400,300,20)
mouse:moveTo(love.mouse.getPosition())
end
function love.update(dt)
-- move circle to mouse position
mouse:moveTo(love.mouse.getPosition())
-- rotate rectangle
rect:rotate(dt)
-- check for collisions
HC.update(dt)
while #text &gt; 40 do
table.remove(text, 1)
end
end
function love.draw()
-- print messages
for i = 1,#text do
love.graphics.setColor(255,255,255, 255 - (i-1) * 6)
love.graphics.print(text[#text - (i-1)], 10, i * 15)
end
-- shapes can be drawn to the screen
love.graphics.setColor(255,255,255)
rect:draw('fill')
mouse:draw('fill')
end</code></pre>
</div>
<div class="overview">
<h3>License</h3>
<blockquote id="license">
<p>Copyright (c) 2010-2011 Matthias Richter</p>
<p>Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:</p>
<p>The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.</p>
<p>Except as contained in this notice, the name(s) of the above copyright holders
shall not be used in advertising or otherwise to promote the sale, use or
other dealings in this Software without prior written authorization.</p>
<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.</p>
</blockquote>
</div>
</div>
</html>