#include "missile.h" #include "game.h" #include "assets.h" // I luv deadly weapons (: void initMissile(Entity * entity, Game * game) { entity->model = &game->assets.models[MISSILE_ASSET]; entity->collisionModel = entityCreateCollisionModel(*entity->model); entity->transformedCollisionModel = entityCreateCollisionModel(*entity->model); setEntityRadius(entity); } void closeMissile(Entity * entity) { entityFreeCollisionModel(entity->collisionModel); entityFreeCollisionModel(entity->transformedCollisionModel); } void updateMissile(Game * game, Entity * entity) { entityUpdateLastValues(entity); entityUpdatePosition(entity); entityCheckTransformedCollisionModel(entity); } void drawMissile(Game * game, Entity * entity) { entityDraw(entity); } void aimMissileAtTarget(Entity * entity, Vector3 target) { setMissileDirection(entity, Vector3Normalize(Vector3Subtract(entity->position, target))); } void setMissileDirection(Entity * entity, Vector3 direction) { // Get look at matrix and rotation. Matrix matrix = MatrixLookAt(Vector3Zero(), direction, (Vector3){0.0, 1.0, 0.0}); entity->rotation = QuaternionInvert(QuaternionFromMatrix(matrix)); // Set velocity. entity->velocity.velocity = (Vector3){ matrix.m2 * MISSILE_SPEED, matrix.m6 * MISSILE_SPEED, matrix.m10 * MISSILE_SPEED }; }