Esempio n. 1
0
        /// <summary>
        /// Docks this object in a given <see cref="DockPosition"/>.
        /// </summary>
        /// <param name="position">The <see cref="DockPosition"/> where we'd like to dock this object.</param>
        public void Dock(DockPosition position)
        {
            if (!CanDock)
            {
                Debug.LogError($"Trying to dock an object that was not undocked. State = {dockingState}");
                return;
            }

            Debug.Log($"Docking object {gameObject.name} on position {position.gameObject.name}");

            dockedPosition = position;
            dockedPosition.DockedObject = this;
            float scaleToFit = gameObject.GetComponent <Collider>().bounds.GetScaleToFitInside(dockedPosition.GetComponent <Collider>().bounds);

            dockedPositionScale = transform.localScale * scaleToFit;

            if (dockingState == DockingState.Undocked)
            {
                // Only register the original scale when first docking
                originalScale = transform.localScale;
            }

            dockingState = DockingState.Docking;
        }