Exemplo n.º 1
0
 private void CGF_OnApplyCGFEvent(CGF2D cgf, Rigidbody2D rigid, Collider2D coll)
 {
     if (this.cgf == cgf)
     {
         ApplyAlignment(cgf, rigid, coll);
     }
 }
Exemplo n.º 2
0
        private static void CreateHoverTrigger2D(GameObject cgf = null, CGF2D circularGravity = null)
        {
            GameObject triggerEnableObj = new GameObject();

            triggerEnableObj.name = "Trigger Hover";
            if (circularGravity != null)
            {
                triggerEnableObj.AddComponent <CGF_HoverTrigger2D>().Cgf = circularGravity;
            }
            else
            {
                triggerEnableObj.AddComponent <CGF_HoverTrigger2D>();
            }
            if (cgf != null)
            {
                triggerEnableObj.transform.SetParent(cgf.transform, false);
            }
            triggerEnableObj.transform.position = triggerEnableObj.transform.position + new Vector3(0, -6f);
            triggerEnableObj.transform.rotation = Quaternion.Euler(0, 0, 180f);

            if (cgf == null)
            {
                FocusGameObject(triggerEnableObj, true);
            }
        }
Exemplo n.º 3
0
        private static GameObject CreateSimpleCGF2D()
        {
            var cgf = CGF2D.CreateCGF();

            FocusGameObject(cgf, true);

            return(cgf);
        }
Exemplo n.º 4
0
        private void UpdateCGF2DGUI()
        {
            if (buttonCreate2D)
            {
                //Creates empty gameobject.
                GameObject cgf = new GameObject();

                //Creates Circular Gravity Force component
                CGF2D circularGravity = cgf.AddComponent <CGF2D>();

                //Adds Controls
                if (modAxisControls2D)
                {
                    cgf.AddComponent <CGF_AxisControls2D>();
                }

                if (modKeyControls2D)
                {
                    cgf.AddComponent <CGF_KeyControls2D>();
                }

                //Adds Mods
                if (modPulse2D)
                {
                    cgf.AddComponent <CGF_Pulse2D>();
                }
                if (modSize2D)
                {
                    cgf.AddComponent <CGF_SizeByRaycast2D>();
                }

                //Sets up properties
                circularGravity._shape2D     = cgfShape2D;
                circularGravity._forceType2D = cgfForceType2D;
                circularGravity.ForcePower   = cgfForcePower2D;
                circularGravity._forceMode2D = cgfForceMode2D;
                circularGravity.Size         = cgfSize2D;
                circularGravity.BoxSize      = cgfBoxSize2D;

                //Sets gameojbect Name
                cgf.name = "CGF 2D";

                FocusGameObject(cgf, true);

                if (triggerEnable2D)
                {
                    CreateEnableTrigger2D(cgf, circularGravity);
                }
                if (triggerHover2D)
                {
                    CreateHoverTrigger2D(cgf, circularGravity);
                }

                //Disables the buttonCreateNewCGF
                buttonCreate2D = false;
            }
        }
Exemplo n.º 5
0
        void Start()
        {
            cgf = this.GetComponent <CGF2D>();

            if (_pulseProperties.Pulse)
            {
                cgf.Size           = _pulseProperties.MinSize;
                pulse_Positive     = true;
                pulse_PositiveBoxX = true;
                pulse_PositiveBoxY = true;
            }
        }
Exemplo n.º 6
0
        private void CGF_OnApplyCGFEvent(CGF2D cgf, Rigidbody2D rigid, Collider2D coll)
        {
            if (_filterProperties == null)
            {
                return;
            }

            if (Enable)
            {
                if (this.cgf == cgf)
                {
                    if (_filterProperties != null)
                    {
                        if (_filterProperties.ValidateFilters(rigid, coll))
                        {
                            _cgfCollection.Add(rigid, Time.time, TimeEffected);
                        }
                    }
                }
            }
        }
Exemplo n.º 7
0
        public static void AddSizeByRaycast2D(MenuCommand command)
        {
            CGF2D cgf = (CGF2D)command.context;

            cgf.gameObject.AddComponent <CGF_SizeByRaycast2D>();
        }
Exemplo n.º 8
0
        public static void AddPulse2D(MenuCommand command)
        {
            CGF2D cgf = (CGF2D)command.context;

            cgf.gameObject.AddComponent <CGF_Pulse2D>();
        }
Exemplo n.º 9
0
        static void CONTEXT_CircularGravity2D_Create_Hover(MenuCommand command)
        {
            CGF2D cgf = (CGF2D)command.context;

            CreateHoverTrigger2D(cgf.gameObject, cgf);
        }
Exemplo n.º 10
0
        public static void AddKeyControls2D(MenuCommand command)
        {
            CGF2D cgf = (CGF2D)command.context;

            cgf.gameObject.AddComponent <CGF_KeyControls2D>();
        }
Exemplo n.º 11
0
        void OnSceneGUI()
        {
            cgf = (CGF2D)target;

            Color mainColor;
            Color tranMainColor;

            if (cgf.Enable)
            {
                if (cgf.ForcePower == 0)
                {
                    mainColor     = Color.white;
                    tranMainColor = Color.white;
                }
                else if (cgf.ForcePower > 0)
                {
                    mainColor     = Color.green;
                    tranMainColor = Color.green;
                }
                else
                {
                    mainColor     = Color.red;
                    tranMainColor = Color.red;
                }
            }
            else
            {
                mainColor     = Color.white;
                tranMainColor = Color.white;
            }

            tranMainColor.a = .1f;

            Handles.color = mainColor;

            float gizmoSize   = 0f;
            float gizmoOffset = 0f;

            if (mainColor == Color.green)
            {
                gizmoSize = (cgf.Size / 8f);
                if (gizmoSize > .5f)
                {
                    gizmoSize = .5f;
                }
                else if (gizmoSize < -.5f)
                {
                    gizmoSize = -.5f;
                }
                gizmoOffset = -gizmoSize / 1.5f;
            }
            else if (mainColor == Color.red)
            {
                gizmoSize = -(cgf.Size / 8f);
                if (gizmoSize > .5f)
                {
                    gizmoSize = .5f;
                }
                else if (gizmoSize < -.5f)
                {
                    gizmoSize = -.5f;
                }
                gizmoOffset = gizmoSize / 1.5f;
            }

            Quaternion qUp = cgf.transform.transform.rotation;

            qUp.SetLookRotation(cgf.transform.rotation * Vector3.up);
            Quaternion qDown = cgf.transform.transform.rotation;

            qDown.SetLookRotation(cgf.transform.rotation * Vector3.down);
            Quaternion qLeft = cgf.transform.transform.rotation;

            qLeft.SetLookRotation(cgf.transform.rotation * Vector3.forward);
            Quaternion qRight = cgf.transform.transform.rotation;

            qRight.SetLookRotation(cgf.transform.rotation * Vector3.back);
            Quaternion qForward = cgf.transform.transform.rotation;

            qForward.SetLookRotation(cgf.transform.rotation * Vector3.right);
            Quaternion qBack = cgf.transform.transform.rotation;

            qBack.SetLookRotation(cgf.transform.rotation * Vector3.left);

            float dotSpace      = 10f;
            float sizeValue     = cgf.Size;
            float sizeBoxValueX = cgf.BoxSize.x;
            float sizeBoxValueY = cgf.BoxSize.y;

            switch (cgf._shape2D)
            {
            case CGF2D.Shape2D.Sphere:

                Handles.color = tranMainColor;
                Handles.color = mainColor;

                if (cgf._forceType2D == CGF2D.ForceType2D.ForceAtPosition || cgf._forceType2D == CGF2D.ForceType2D.GravitationalAttraction)
                {
                    Handles.ConeCap(0, GetVector(Vector3.up, cgf.Size + gizmoOffset, 1f), qUp, gizmoSize);
                    Handles.ConeCap(0, GetVector(Vector3.down, cgf.Size + gizmoOffset, 1f), qDown, gizmoSize);
                    Handles.ConeCap(0, GetVector(Vector3.left, cgf.Size + gizmoOffset, 1f), qBack, gizmoSize);
                }
                else if (cgf._forceType2D == CGF2D.ForceType2D.Torque)
                {
                    Handles.ConeCap(0, GetVector(Vector3.up, cgf.Size + gizmoOffset, 1f), qForward, gizmoSize);
                    Handles.ConeCap(0, GetVector(Vector3.down, cgf.Size + gizmoOffset, 1f), qBack, gizmoSize);
                    Handles.ConeCap(0, GetVector(Vector3.right, cgf.Size + gizmoOffset, 1f), qDown, gizmoSize);
                    Handles.ConeCap(0, GetVector(Vector3.left, cgf.Size + gizmoOffset, 1f), qUp, gizmoSize);
                }
                else
                {
                    Handles.ConeCap(0, GetVector(Vector3.left, cgf.Size + gizmoOffset, 1f), qBack, -gizmoSize);
                }

                if (cgf._forceType2D != CGF2D.ForceType2D.Torque)
                {
                    Handles.ConeCap(0, GetVector(Vector3.right, cgf.Size + gizmoOffset, 1f), qForward, gizmoSize);
                }

                Handles.DrawDottedLine(GetVector(Vector3.up, cgf.Size, 1), cgf.transform.position, dotSpace);
                Handles.DrawDottedLine(GetVector(Vector3.down, cgf.Size, 1), cgf.transform.position, dotSpace);
                Handles.DrawDottedLine(GetVector(Vector3.left, cgf.Size, 1), cgf.transform.position, dotSpace);
                Handles.DrawDottedLine(GetVector(Vector3.right, cgf.Size, 1), cgf.transform.position, dotSpace);

                Handles.CircleCap(0, cgf.transform.position, qLeft, cgf.Size);

                Handles.color = mainColor;
                sizeValue     = cgf.Size;
                sizeValue     = Handles.ScaleValueHandle(sizeValue, GetVector(Vector3.up, cgf.Size, 1f), cgf.transform.rotation, gizmoSize, Handles.DotCap, .25f);
                sizeValue     = Handles.ScaleValueHandle(sizeValue, GetVector(Vector3.down, cgf.Size, 1f), cgf.transform.rotation, gizmoSize, Handles.DotCap, .25f);
                sizeValue     = Handles.ScaleValueHandle(sizeValue, GetVector(Vector3.left, cgf.Size, 1f), cgf.transform.rotation, gizmoSize, Handles.DotCap, .25f);
                sizeValue     = Handles.ScaleValueHandle(sizeValue, GetVector(Vector3.right, cgf.Size, 1f), cgf.transform.rotation, gizmoSize, Handles.DotCap, .25f);
                if (sizeValue < 0)
                {
                    cgf.Size = 0;
                }
                else
                {
                    cgf.Size = sizeValue;
                }

                break;

            case CGF2D.Shape2D.Raycast:

                Handles.DrawDottedLine(cgf.transform.position + ((cgf.transform.rotation * Vector3.right) * cgf.Size), cgf.transform.position, dotSpace);

                if (cgf._forceType2D != CGF2D.ForceType2D.Torque)
                {
                    Handles.ConeCap(0, GetVector(Vector3.right, cgf.Size + gizmoOffset, 1f), qForward, gizmoSize);
                }
                else
                {
                    Handles.ConeCap(0, GetVector(Vector3.right, cgf.Size + gizmoOffset, 1f), qDown, gizmoSize);
                }

                Handles.color = mainColor;
                sizeValue     = cgf.Size;
                sizeValue     = Handles.ScaleValueHandle(sizeValue, GetVector(Vector3.right, cgf.Size, 1f), cgf.transform.rotation, gizmoSize, Handles.DotCap, .25f);
                if (sizeValue < 0)
                {
                    cgf.Size = 0;
                }
                else
                {
                    cgf.Size = sizeValue;
                }

                break;

            case CGF2D.Shape2D.Box:

                if (cgf._forceType2D == CGF2D.ForceType2D.ForceAtPosition || cgf._forceType2D == CGF2D.ForceType2D.GravitationalAttraction)
                {
                    Handles.ConeCap(0, GetVector(Vector3.up, CGF_Editor.GetArrowOffsetForBox(mainColor, cgf.BoxSize.y, gizmoSize), 1f), qUp, CGF_Editor.GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.y));
                    Handles.ConeCap(0, GetVector(Vector3.down, CGF_Editor.GetArrowOffsetForBox(mainColor, cgf.BoxSize.y, gizmoSize), 1f), qDown, CGF_Editor.GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.y));
                    Handles.ConeCap(0, GetVector(Vector3.left, CGF_Editor.GetArrowOffsetForBox(mainColor, cgf.BoxSize.x, gizmoSize), 1f), qBack, CGF_Editor.GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.x));
                }
                else if (cgf._forceType2D == CGF2D.ForceType2D.Torque)
                {
                    Handles.ConeCap(0, GetVector(Vector3.up, CGF_Editor.GetArrowOffsetForBox(mainColor, cgf.BoxSize.y, gizmoSize), 1f), qForward, CGF_Editor.GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.y));
                    Handles.ConeCap(0, GetVector(Vector3.down, CGF_Editor.GetArrowOffsetForBox(mainColor, cgf.BoxSize.y, gizmoSize), 1f), qBack, CGF_Editor.GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.y));
                    Handles.ConeCap(0, GetVector(Vector3.right, CGF_Editor.GetArrowOffsetForBox(mainColor, cgf.BoxSize.x, gizmoSize), 1f), qDown, CGF_Editor.GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.x));
                    Handles.ConeCap(0, GetVector(Vector3.left, CGF_Editor.GetArrowOffsetForBox(mainColor, cgf.BoxSize.x, gizmoSize), 1f), qUp, CGF_Editor.GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.x));
                }
                else
                {
                    Handles.ConeCap(0, GetVector(Vector3.left, CGF_Editor.GetArrowOffsetForBox(mainColor, cgf.BoxSize.x, gizmoSize), 1f), qBack, -CGF_Editor.GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.x));
                }

                if (cgf._forceType2D != CGF2D.ForceType2D.Torque)
                {
                    Handles.ConeCap(0, GetVector(Vector3.right, CGF_Editor.GetArrowOffsetForBox(mainColor, cgf.BoxSize.x, gizmoSize), 1f), qForward, CGF_Editor.GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.x));
                }

                Handles.DrawDottedLine(GetVector(Vector3.up, cgf.BoxSize.y, 1), cgf.transform.position, dotSpace);
                Handles.DrawDottedLine(GetVector(Vector3.down, cgf.BoxSize.y, 1), cgf.transform.position, dotSpace);
                Handles.DrawDottedLine(GetVector(Vector3.left, cgf.BoxSize.x, 1), cgf.transform.position, dotSpace);
                Handles.DrawDottedLine(GetVector(Vector3.right, cgf.BoxSize.x, 1), cgf.transform.position, dotSpace);

                Handles.color = mainColor;
                sizeBoxValueX = cgf.BoxSize.x;
                sizeBoxValueY = cgf.BoxSize.y;
                sizeBoxValueY = Handles.ScaleValueHandle(sizeBoxValueY, GetVector(Vector3.up, cgf.BoxSize.y, 1f), cgf.transform.rotation, CGF_Editor.GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.y), Handles.DotCap, .25f);
                sizeBoxValueY = Handles.ScaleValueHandle(sizeBoxValueY, GetVector(Vector3.down, cgf.BoxSize.y, 1f), cgf.transform.rotation, CGF_Editor.GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.y), Handles.DotCap, .25f);
                sizeBoxValueX = Handles.ScaleValueHandle(sizeBoxValueX, GetVector(Vector3.left, cgf.BoxSize.x, 1f), cgf.transform.rotation, CGF_Editor.GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.x), Handles.DotCap, .25f);
                sizeBoxValueX = Handles.ScaleValueHandle(sizeBoxValueX, GetVector(Vector3.right, cgf.BoxSize.x, 1f), cgf.transform.rotation, CGF_Editor.GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.x), Handles.DotCap, .25f);
                if (sizeBoxValueX < 0)
                {
                    cgf.BoxSize = new Vector3(0f, cgf.BoxSize.y);
                }
                else
                {
                    cgf.BoxSize = new Vector3(sizeBoxValueX, cgf.BoxSize.y);
                }
                if (sizeBoxValueY < 0)
                {
                    cgf.BoxSize = new Vector3(cgf.BoxSize.x, 0f);
                }

                else
                {
                    cgf.BoxSize = new Vector3(cgf.BoxSize.x, sizeBoxValueY);
                }
                break;
            }

            Handles.SphereCap(0, cgf.transform.position, cgf.transform.rotation, gizmoSize / 2f);

            if (GUI.changed)
            {
                EditorUtility.SetDirty(target);
            }
        }
Exemplo n.º 12
0
        void Awake()
        {
            CGF2D.OnApplyCGFEvent += CGF_OnApplyCGFEvent;

            cgf = this.GetComponent <CGF2D>();
        }
Exemplo n.º 13
0
        // Use this for initialization
        void Start()
        {
            cgf = this.GetComponent <CGF2D>();

            cgf.Size = maxCgfSize;
        }
Exemplo n.º 14
0
        void Awake()
        {
            cgf = this.GetComponent <CGF2D>();

            SetIdleValues();
        }
Exemplo n.º 15
0
        //Applys the alignment
        private void ApplyAlignment(CGF2D cgf, Rigidbody2D rigid, Collider2D coll)
        {
            if (_filterProperties == null)
            {
                return;
            }

            if (Enable)
            {
                if (_filterProperties.ValidateFilters(rigid, coll))
                {
                    var transPos = this.transform.position;

                    switch (cgf._forcePositionProperties.ForcePosition)
                    {
                    case CGF.ForcePosition.ThisTransform:
                        break;

                    case CGF.ForcePosition.ClosestCollider:
                        if (cgf._forcePositionProperties.ClosestColliders != null)
                        {
                            if (cgf._forcePositionProperties.ClosestColliders.Count > 0)
                            {
                                float heightOffset = 0f;

                                if (UseClosestColliderHeightOffset)
                                {
                                    heightOffset = cgf._forcePositionProperties.HeightOffset;
                                }

                                if (!cgf._forcePositionProperties.UseEffectedClosestPoint)
                                {
                                    var point = cgf.FindClosestPoints(coll, cgf._forcePositionProperties.ClosestColliders, false);
                                    transPos = cgf.GetVectorHeightOffset(point, coll.transform.position, heightOffset);
                                }
                                else
                                {
                                    Vector3 pointA = cgf.FindClosestPoints(coll, cgf._forcePositionProperties.ClosestColliders, false);
                                    Vector3 pointB = cgf.FindClosestPoints(coll, cgf._forcePositionProperties.ClosestColliders, true);

                                    float distanceThisA = Vector3.Distance(coll.transform.position, pointA);
                                    float distanceAB    = Vector3.Distance(pointA, pointB);

                                    transPos = cgf.GetVectorHeightOffset(pointA, coll.transform.position, Mathf.Abs(distanceThisA - distanceAB) + heightOffset);
                                }
                            }
                        }
                        break;
                    }

                    Vector3 newLocal = Vector3.zero;

                    switch (_alignDirection)
                    {
                    case AlignDirection.Up:
                        newLocal = rigid.transform.up;
                        break;

                    case AlignDirection.Down:
                        newLocal = -rigid.transform.up;
                        break;

                    case AlignDirection.Left:
                        newLocal = -rigid.transform.right;
                        break;

                    case AlignDirection.Right:
                        newLocal = rigid.transform.right;
                        break;
                    }

                    float angle = LookAtAngle(rigid, newLocal, transPos);

                    rigid.AddTorque((RotateSpeed * angle) - ((rigid.angularVelocity * AngularVelocityDamping) * Time.deltaTime));

                    if (OnApplyAlignToForceEvent != null)
                    {
                        OnApplyAlignToForceEvent.Invoke(cgf, rigid, coll, transPos);
                    }
                }
            }
        }