private void pathLogic() { _currPos.make(x, y); if (moving) { makePathTimer += FlxG.elapsed; } if (makePathTimer >= 0.3) { if (FlxU.getDistance(_currPos, _lastPos) >= 5) { //FlxG.log(FlxU.getDistance(_currPos, _lastPos)); _lastPos.make(x, y); _nodes.Add(_lastPos); if (!_indoors) { footsteps.emitParticle(); } //FlxG.log("+node at ("+_currPos.x+", "+_currPos.y+")"); } makePathTimer = 0; } }
protected void resetHelpers() { origin.make(frameWidth * 0.5f, frameHeight * 0.5f); _curIndex = 0; }
// update camera scroll in here // make sure it stays within bounds public override void update() { //zooming = FlxG.zoom; //rotating = FlxG.rotation; //follow closely or check deadzones if (target != null) { if (deadzone == null) { focusOn(target.getMidpoint()); //add getMidpoint() for FlxObjects } else { //FlxG.log("deadzone is not null"); float edge; float targetX = FlxU.ceil(target.x + ((target.x > 0) ? 0.0000001f : -0.0000001f)); float targetY = FlxU.ceil(target.y + ((target.y > 0) ? 0.0000001f : -0.0000001f)); edge = targetX - deadzone.x; if (scroll.x > edge) { scroll.x = edge; } edge = targetX + target.width - deadzone.x - deadzone.width; if (scroll.x < edge) { scroll.x = edge; } edge = targetY - deadzone.y; if (scroll.y > edge) { scroll.y = edge; } edge = targetY + target.height - deadzone.y - deadzone.height; if (scroll.y < edge) { scroll.y = edge; } //SHAKE } } //make sure we didnt go outside camera's bounds if (bounds != null) { //FlxG.log("bounds is not null"); if (scroll.x < bounds.left) { scroll.x = bounds.left; } if (scroll.x > bounds.right - width) { scroll.x = bounds.right - width; } if (scroll.y < bounds.top) { scroll.y = bounds.top; } if (scroll.y > bounds.bottom - height) { scroll.y = bounds.bottom - height; } } //update effects //shake if (_fxShakeDuration > 0) { _fxShakeDuration -= FlxG.elapsed; if (_fxShakeDuration <= 0) { _fxShakeOffset.make(); if (_fxShakeComplete != null) { _fxShakeComplete(); } } else { if ((_fxShakeDirection == SHAKE_BOTH_AXES) || (_fxShakeDirection == SHAKE_HORIZONTAL_ONLY)) { _fxShakeOffset.x = (FlxG.random() * _fxShakeIntensity * width * 2 - _fxShakeIntensity * width) * _zoom; } if ((_fxShakeDirection == SHAKE_BOTH_AXES) || (_fxShakeDirection == SHAKE_VERTICAL_ONLY)) { _fxShakeOffset.y = (FlxG.random() * _fxShakeIntensity * height * 2 - _fxShakeIntensity * height) * _zoom; } } } scroll.x -= _fxShakeOffset.x; scroll.y -= _fxShakeOffset.y; if (zooming < 1) { zooming = 1; } }