Ejemplo n.º 1
0
 public static void ApplyModificationToCylinder(SerializedProperty cylinder, GravityOverrideCylinder datas)
 {
     cylinder.GetPropertie(nameof(datas.Trunk)).boolValue = datas.Trunk;
     cylinder.GetPropertie("_canApplyGravity").boolValue  = datas.CanApplyGravity;
     ApplyModificationToDisc(cylinder.GetPropertie(nameof(datas.Disc1)), datas.Disc1);
     ApplyModificationToDisc(cylinder.GetPropertie(nameof(datas.Disc2)), datas.Disc2);
 }
Ejemplo n.º 2
0
        public bool GetClosestPointIfWeCan(Vector3 k, GravityOverrideCylinder gravityOverride, out Vector3 closestPoint)
        {
            closestPoint = Vector3.zero;

            if (!gravityOverride.CanApplyGravity)
            {
                return(false);
            }

            float dist = Vector3.Dot(k - _p1, _delta);

            //k projection is outside the [_p1, _p2] interval, closest to _p1
            if (dist <= 0.0f)
            {
                return(_circle1.GetClosestPointOnDiscIfWeCan(k, gravityOverride.Disc1, out closestPoint));
            }
            //k projection is outside the [_p1, p2] interval, closest to _p2
            else if (dist >= _deltaSquared)
            {
                return(_circle2.GetClosestPointOnDiscIfWeCan(k, gravityOverride.Disc2, out closestPoint));
            }
            //k projection is inside the [_p1, p2] interval
            else
            {
                if (!gravityOverride.Trunk)
                {
                    return(false);
                }

                dist = dist / _deltaSquared;
                Vector3 pointOnLine = _p1 + dist * _delta;
                closestPoint = pointOnLine + ((k - pointOnLine).FastNormalized() * _realRadius);
                return(true);
            }
        }
Ejemplo n.º 3
0
        public static GravityOverrideCylinder DrawCylinder(ExtCylinder cylinder, ExtCircle circle1, ExtCircle circle2, GravityOverrideCylinder cylinderGravity, Color color, out bool hasChanged)
        {
            float sizeLine = cylinder.LocalScale.magnitude / 20;

            hasChanged = false;
            bool changed = hasChanged;

            cylinderGravity.Disc1 = ExtGravityOverrideEditor.DrawDisc(circle1, cylinderGravity.Disc1, color, false, out changed);
            hasChanged            = (changed) ? true : hasChanged;
            cylinderGravity.Disc2 = ExtGravityOverrideEditor.DrawDisc(circle2, cylinderGravity.Disc2, color, false, out changed);
            hasChanged            = (changed) ? true : hasChanged;
            cylinderGravity.Trunk = ExtGravityOverrideEditor.DrawLineTrunk(cylinderGravity.Trunk, cylinder.P1, cylinder.P2, new Color(color.r, color.g, color.b, color.a * 0.8f), sizeLine, out changed);
            hasChanged            = (changed) ? true : hasChanged;
            return(cylinderGravity);
        }