/**
     * <summary>
     * Instantiate and eventually place the building
     * </summary>
     *
     * <param name="position"/>
     *
     * <returns>
     * void
     * </returns>
     */
    public virtual void Place(Vector3 position)
    {
        foreach (GameObject selectedUnit in UnitsManagerBehaviour.SelectedUnits)
        {
            if (selectedUnit.GetComponent <BuilderBehaviour>())
            {
                GameObject building = MonoBehaviour.Instantiate(
                    Resources.Load(this.structurePath) as GameObject
                    );

                // Substract / reduce resources
                foreach (ResourceRequirement resourceRequirement in this.resourceRequirements)
                {
                    ResourceType resourceRequirementType = resourceRequirement.GetType();
                    float        value = ResourcesManagerBehaviour.Wood.GetValue() - resourceRequirement.GetAmount();

                    ResourcesManagerBehaviour.SetResource(resourceRequirementType, value);
                }

                building.transform.position = position;

                BuilderBehaviour builderBehaviour = selectedUnit.GetComponent <BuilderBehaviour>();
                builderBehaviour.StartConstruction(building);
            }
        }

        // Hide the requirement UI
        this.HideRequirementsUI();

        // Rebuild navmesh navigations
        NavMeshSurfacesManager.BuildNavMesh();
    }
        private void OnEnable()
        {
            Target = (BuilderBehaviour)target;

            MainEditor.LoadAddons(Target, AddOnTarget.BuilderBehaviour);
        }