Browse Source

Veggies!;

bjorn 9 years ago
parent
commit
e2e5149c90
4 changed files with 150 additions and 5 deletions
  1. 19 3
      app/artichoke.lua
  2. 9 2
      app/veggie.lua
  3. 122 0
      art/duck.dae
  4. BIN
      art/duck.tga

+ 19 - 3
app/artichoke.lua

@@ -8,12 +8,24 @@ function artichoke:init()
   self.environment = lovr.graphics.newModel('art/roomTest.obj')
   rattle:init()
   self.veggies = {}
-  self:spawnVeggie()
+  self.veggieTimer = 1
 end
 
 function artichoke:update(dt)
   rattle:update(dt)
   _.each(self.veggies, 'update', dt)
+
+  self.veggieTimer = self.veggieTimer - dt
+  if self.veggieTimer <= 0 then
+    self:spawnVeggie()
+    self.veggieTimer = _.random(1, 2)
+  end
+
+  _.each(self.veggies, function(veggie)
+    if veggie.position.y < -.5 then
+      self:removeVeggie(veggie)
+    end
+  end)
 end
 
 function artichoke:draw()
@@ -29,9 +41,13 @@ function artichoke:drawEnvironment()
 end
 
 function artichoke:spawnVeggie()
-  local veggiePosition = vec3(0, 3, -5)
+  local veggiePosition = vec3(_.random(-1, 1), _.random(.5, 2), _.random(-5, -4))
   local veggie = veggie.grow(veggiePosition)
-  table.insert(self.veggies, veggie)
+  self.veggies[veggie] = veggie
+end
+
+function artichoke:removeVeggie(veggie)
+  self.veggies[veggie] = nil
 end
 
 return artichoke

+ 9 - 2
app/veggie.lua

@@ -1,24 +1,31 @@
 local veggie = {}
 veggie.__index = veggie
+veggie.model = lovr.graphics.newModel('art/duck.dae')
+veggie.model:setTexture(lovr.graphics.newTexture('art/duck.tga'))
 
 local vec3 = require('lib/cpml').vec3
+local quat = require('lib/cpml').quat
 
 function veggie.grow(position)
   local self = {}
 
   self.position = position
   self.direction = vec3(0, 0, 0) - position -- player position - my postiion
+  self.speed = _.random(.15, .2)
+  local quat = quat.from_direction(self.direction, vec3(0, 1, 0))
+  self.angle, self.axis = quat.to_angle_axis(quat)
 
   return setmetatable(self, veggie)
 end
 
 function veggie:update(dt)
-  self.position = self.position + self.direction * dt
+  self.position = self.position + self.direction * dt * self.speed
 end
 
 function veggie:draw()
   local x, y, z = vec3.unpack(self.position)
-  lovr.graphics.cube('fill', x, y, z, .2)
+  local ax, ay, az = vec3.unpack(self.axis)
+  self.model:draw(x, y, z, .1, self.angle, ax, ay, az)
 end
 
 return veggie

File diff suppressed because it is too large
+ 122 - 0
art/duck.dae


BIN
art/duck.tga


Some files were not shown because too many files changed in this diff