mirror of
https://github.com/cyberarm/i-mic-fps.git
synced 2025-12-15 23:52:35 +00:00
Exported door model, added CollisionManager#on_ground?(entity), made gravity work in PhyisicsManager if Entity has physics enabled, updated test map
This commit is contained in:
@@ -91,7 +91,6 @@ class IMICFPS
|
||||
|
||||
if @entity
|
||||
@entity.orientation.y += delta
|
||||
@entity.orientation.y %= 360
|
||||
position_camera
|
||||
else
|
||||
free_move
|
||||
|
||||
@@ -9,6 +9,7 @@ class IMICFPS
|
||||
def setup
|
||||
bind_model("base", "biped")
|
||||
@collision = :dynamic
|
||||
@physics = true
|
||||
|
||||
@speed = 2.5 # meter's per second
|
||||
@running_speed = 5.0 # meter's per second
|
||||
@@ -93,11 +94,6 @@ class IMICFPS
|
||||
# Do not handle movement if mouse is not captured
|
||||
return if @camera && !@camera.mouse_captured
|
||||
|
||||
if @_time_in_air
|
||||
air_time = (Gosu.milliseconds - @_time_in_air) / 1000.0
|
||||
@velocity.y -= IMICFPS::GRAVITY * air_time * delta_time
|
||||
end
|
||||
|
||||
super
|
||||
end
|
||||
|
||||
@@ -138,25 +134,8 @@ class IMICFPS
|
||||
end
|
||||
|
||||
def jump
|
||||
if InputMapper.down?(:jump) && !@jumping
|
||||
@jumping = true
|
||||
@_time_in_air = Gosu.milliseconds
|
||||
|
||||
elsif !@jumping
|
||||
@falling = true
|
||||
@_time_in_air ||= Gosu.milliseconds # FIXME
|
||||
else
|
||||
if @jumping && @velocity.y <= 0
|
||||
@falling = false
|
||||
@jumping = false
|
||||
end
|
||||
end
|
||||
|
||||
if @jumping && !@falling
|
||||
if InputMapper.down?(:jump)
|
||||
@velocity.y = 1.5
|
||||
@falling = true
|
||||
end
|
||||
if InputMapper.down?(:jump) && window.current_state.collision_manager.on_ground?(self)
|
||||
@velocity.y = 1.5
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -9,13 +9,14 @@ class IMICFPS
|
||||
attr_accessor :position, :orientation, :velocity
|
||||
attr_reader :name, :debug_color, :bounding_box, :collision, :physics, :mass, :drag, :camera
|
||||
|
||||
def initialize(manifest:, map_entity: nil, spawnpoint: nil, backface_culling: true, auto_manage: true)
|
||||
def initialize(manifest:, map_entity: nil, spawnpoint: nil, backface_culling: false, auto_manage: true)
|
||||
@manifest = manifest
|
||||
@position = map_entity ? map_entity.position : spawnpoint.position
|
||||
@orientation = map_entity ? map_entity.orientation : spawnpoint.orientation
|
||||
@position = map_entity ? map_entity.position.clone : spawnpoint.position.clone
|
||||
@orientation = map_entity ? map_entity.orientation.clone : spawnpoint.orientation.clone
|
||||
@scale = map_entity ? map_entity.scale : 1.0
|
||||
|
||||
@backface_culling = backface_culling
|
||||
@name = @manifest.name
|
||||
@bound_model = map_entity ? bind_model(map_entity.package, map_entity.model) : nil
|
||||
|
||||
@visible = true
|
||||
@@ -41,7 +42,6 @@ class IMICFPS
|
||||
|
||||
if @bound_model
|
||||
@bound_model.model.entity = self
|
||||
@bound_model.model.objects.each { |o| o.scale = self.scale }
|
||||
@normalized_bounding_box = normalize_bounding_box_with_offset
|
||||
|
||||
normalize_bounding_box
|
||||
@@ -62,7 +62,6 @@ class IMICFPS
|
||||
raise "model isn't a model!" unless model.is_a?(ModelLoader)
|
||||
@bound_model = model
|
||||
@bound_model.model.entity = self
|
||||
@bound_model.model.objects.each { |o| o.scale = self.scale }
|
||||
@bounding_box = normalize_bounding_box_with_offset
|
||||
|
||||
return model
|
||||
|
||||
Reference in New Issue
Block a user