#pragma once#include "Weapons.h"void InitWeapon(VWeapon * w, int type) {  w->Type = type;  w->InitialPos.x = 0.0;  w->InitialPos.y = 0.0;  w->InitialPos.z = 0.0;  w->Position = w->Target = w->InitialPos;  w->taggedForRemoval = 0;  w->next = NULL;  InitObject(&w->Object);}void CleanUpWeapon(VWeapon * w) {  CleanUpObject(&w->Object);}void StartWeapon(VWeapon * w, Vector * startPos, Vector * target) {  w->InitialPos = *startPos;  w->Position = *startPos;  w->Target = *target;  if (w->Type == WEAPONTYPEBULLET) {    SubtractVector(&w->Target, &w->Position, &w->Target);    NormalizeVector(&w->Target);  }}void RunWeapon(VWeapon * w, float interval) {  switch (w->Type) {    case WEAPONTYPEBULLET:      w->Position.x += ((w->Target.x / interval) / 100.0);      w->Position.y += ((w->Target.y / interval) / 100.0);      w->Position.z += ((w->Target.z / interval) / 100.0);      if (sqrt(((w->Position.x - w->InitialPos.x) * (w->Position.x - w->InitialPos.x)) + ((w->Position.y - w->InitialPos.y) * (w->Position.y - w->InitialPos.y)) + ((w->Position.z - w->InitialPos.z) * (w->Position.z - w->InitialPos.z))) > MAXBULLETDISTANCE) {        w->taggedForRemoval = 1;      }      break;  }}void DrawWeapon(VWeapon * w) {  MoveObjectToPoint(&w->Object, &w->Position);  DrawObject(&w->Object);}