
;;; drone
[MODEL_REPLACEMENT_0]
FILE =porsche_991_carrera_s.kn5
INSERT = MFG_DRONE.kn5
INSERT_AFTER = DRONE_COORD

[WOBBLY_BIT_0]
NAME=mfgd_jjj ; name of the node to move
CONNECTED_TO=0,-30,12 ; point to which node is attached to, and around which it will rotate
MAX_RANGE=35 ; max range node can move from its original position
DAMPENING_LAG=0.997  ; think of it as usual AC lag value, trying to zero node's speed
G_GAIN= 3.6 ; how much G-forces affect node's speed
GRAVITY_GAIN=1.6; how much gravity affects node's speed
OFFSET_GAIN= 5.1 ; how strong is returning force
STIFF_AXIS=0,0.3,0.4 ; optional higher stiffness axis to reduce movement along it
STIFF_AXIS_STIFFNESS=0.7 ; now stiff is optional stiffness axis
G_FILTER=0.29 ; temporal filter for G-forces
DEFAULT_GRAVITY_INCLUDED_ALREADY=1 ; either 0 or 1; set it to 1 if you don't want gravity to skew your stuff when car is in neutral position

[ANIMATION_...]
FILE=spin.ksanim
TIME=0.04
LOOP_WHILE_ACTIVE=1

[ANIMATION_...]
FILE=forward.ksanim
TIME=2.0
INPUT=EXTRA_A
LOOP_WHILE_ACTIVE=0

[ANIMATION_...]
FILE=forward.ksanim
TIME=2.0
INPUT=EXTRA_B
LOOP_WHILE_ACTIVE=0

[EMISSIVE_EXTRA_A_0]
NAME = indicator
COLOR = 0,0,120, 160
LAG = 0
SIMULATE_HEATING = 1.0
BLINKING_PATTERN = (|0 = 0|0.5=1|1.5=0|2=0)
BLINKING_DURATION =0.85
LOCATION = REAR

[EMISSIVE_EXTRA_B_0]
NAME = indicator2
COLOR = 60,60,0, 80
LAG = 0
SIMULATE_HEATING = 1.0
BLINKING_PATTERN = (|0 = 0|0.5=1|1.5=0|2=0)
BLINKING_DURATION =0.85
LOCATION = REAR


[SCRIPT_...]
SCRIPT="
local drone = ui.MediaPlayer()
drone:setSource('./drone.wav')
drone:setLooping(true)
drone:setVolume(0)
drone:play()
local multiplier = 1
local distance = 0

function update(dt)
  if ac.getCar().isCameraOnBoard then
    multiplier = 0.1
  else
    multiplier = 1
  end

  distance = ac.getCar().distanceToCamera

  if distance < 10 then
    drone:setVolume(multiplier)
  elseif distance < 20 then
    drone:setVolume((1 - (distance - 10) / 10) * multiplier)
  else
    drone:setVolume(0)
  end

end"