Example #1
0
    public float GetChargePolarityMultiplier(PipeMazeMagnetic other)
    {
        if (this.charge == Charge.None)
        {
            return((other.charge == Charge.None) ? 0.0f : 0.5f);
        }
        else if (this.charge == Charge.Positive)
        {
            if (other.charge == Charge.None)
            {
                return(0.5f);
            }

            return((other.charge == Charge.Positive) ? -1.0f : 1.0f);
        }
        else if (this.charge == Charge.Negative)
        {
            if (other.charge == Charge.None)
            {
                return(0.5f);
            }

            return((other.charge == Charge.Negative) ? -1.0f : 1.0f);
        }

        return(0.0f);
    }
Example #2
0
    public void OnTriggerExit(Collider other)
    {
        PipeMazeMagnetic magnetic = other.gameObject.GetComponent <PipeMazeMagnetic>();

        if (magnetic != null)
        {
            if (nearbyMagnetics.Contains(magnetic))
            {
                nearbyMagnetics.Remove(magnetic);
            }
        }
    }
Example #3
0
    public Vector3 GetChargeForce(PipeMazeMagnetic other)
    {
        Vector3 forceDirection = (other.transform.position - this.transform.position).normalized;

        if (this.IsSurfaceMagnetic())
        {
            forceDirection = other.transform.TransformDirection(other.staticLocalMagneticDir);
        }

        //TODO: Make the force ramp up as the distance shortens

        float forceMultiplier = this.GetChargePolarityMultiplier(other) * this.chargeStrength;

        return(forceMultiplier * forceDirection);
    }