/// <summary>
        /// Shortcut for initializing a custom drone model. Only applies when work flow is followed the same as this mod's drones.
        /// </summary>
        /// <param name="droneModel">The custom drone model to initialize.</param>
        /// <param name="droneBody">The associated body of the model.</param>
        /// <param name="colliderMultiplier">
        /// Collider size multiplier to be applied to the collider in the CharacterBody object.
        /// The basis would be the collider found within the model. A small collider may result in clipping through the map.
        /// </param>
        public static void InitializeDroneModelComponents(this GameObject droneModel, CharacterBody droneBody, float colliderMultiplier)
        {
            CapsuleCollider hurtBoxCapsuleCollider = droneModel.GetComponentInChildren <CapsuleCollider>();

            if (!hurtBoxCapsuleCollider)
            {
                Log.Warning("Extensions.InitializeDroneModelComponents: CapsuleCollider not found! Cannot setup HurtBoxes without it.");
                return;
            }
            CharacterModel characterModel = droneModel.AddComponent <CharacterModel>();

            characterModel.body = droneBody;
            characterModel.BuildRendererInfos(droneModel);
            characterModel.autoPopulateLightInfos = true;
            characterModel.invisibilityCount      = 0;
            characterModel.temporaryOverlays      = new List <TemporaryOverlay>();
            HurtBoxGroup hurtBoxGroup = droneModel.AddComponent <HurtBoxGroup>();
            HurtBox      hurtBox      = hurtBoxCapsuleCollider.gameObject.AddComponent <HurtBox>();

            hurtBox.gameObject.layer   = LayerIndex.entityPrecise.intVal;
            hurtBox.healthComponent    = droneBody.GetComponent <HealthComponent>();
            hurtBox.isBullseye         = true;
            hurtBox.damageModifier     = HurtBox.DamageModifier.Normal;
            hurtBox.hurtBoxGroup       = hurtBoxGroup;
            hurtBox.indexInGroup       = 0;
            hurtBoxGroup.hurtBoxes     = new HurtBox[] { hurtBox };
            hurtBoxGroup.mainHurtBox   = hurtBox;
            hurtBoxGroup.bullseyeCount = 1;
            CapsuleCollider capsuleCollider = droneBody.GetComponent <CapsuleCollider>();

            if (capsuleCollider)
            {
                capsuleCollider.center    = hurtBoxCapsuleCollider.center;
                capsuleCollider.radius    = hurtBoxCapsuleCollider.radius * colliderMultiplier;
                capsuleCollider.height    = hurtBoxCapsuleCollider.height * colliderMultiplier;
                capsuleCollider.direction = hurtBoxCapsuleCollider.direction;
            }
        }
 /// <summary>
 /// Builds the renderer information data structure from scratch based on the given GameObject's MeshRenderer components.
 /// This overload uses a ShadowCastingMode of Off and IgnoreOverlays of value false.
 /// </summary>
 /// <param name="model">Model to apply the new RendererInfos</param>
 /// <param name="basisObject">The object basis of where the MeshRenderers will be used to build off with</param>
 /// <returns>A new set of RendererInfos</returns>
 public static RendererInfo[] BuildRendererInfos(this CharacterModel model, GameObject basisObject)
 {
     return(model.BuildRendererInfos(basisObject, ShadowCastingMode.On, false));
 }