Esempio n. 1
0
 private void CGF_OnApplyCGFEvent(CGF cgf, Rigidbody rigid, Collider coll)
 {
     if (this.cgf == cgf)
     {
         ApplyAlignment(cgf, rigid, coll);
     }
 }
Esempio n. 2
0
        private static void CreateHoverTrigger(GameObject cgf = null, CGF circularGravity = null)
        {
            GameObject triggerEnableObj = new GameObject();

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

            if (cgf == null)
            {
                FocusGameObject(triggerEnableObj);
            }
        }
Esempio n. 3
0
        private static GameObject CreateSimpleCGF()
        {
            var cgf = CGF.CreateCGF();

            FocusGameObject(cgf);

            return(cgf);
        }
        private void CGF_OnApplyCGFEvent(CGF cgf, Rigidbody rigid, Collider coll, Vector3 force)
        {
            this.Gravity      = force;
            this.SinceGravity = 0;

            if (this.Ground == GroundState.None)
            {
                this.Ground = GroundState.Falling;
            }
        }
Esempio n. 5
0
    private void CGF_OnApplyCGFEvent(CGF cgf, Rigidbody characterRB, Collider characterCollider)
    {
        if (this.rigid != characterRB)
        {
            return;
        }

        //Debug.LogError("CGF_OnApplyCGFEvent");

        this.currentCGF = cgf;
    }
Esempio n. 6
0
        void Start()
        {
            cgf = this.GetComponent <CGF>();

            //Sets up pulse
            if (_pulseProperties.Pulse)
            {
                cgf.Size           = _pulseProperties.MinSize;
                pulse_Positive     = true;
                pulse_PositiveBoxX = true;
                pulse_PositiveBoxY = true;
                pulse_PositiveBoxZ = true;
            }
        }
Esempio n. 7
0
        private void CGF_OnApplyCGFEvent(CGF cgf, Rigidbody rigid, Collider 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);
                        }
                    }
                }
            }
        }
Esempio n. 8
0
        static void CONTEXT_CircularGravity_Create_Hover(MenuCommand command)
        {
            CGF cgf = (CGF)command.context;

            CreateHoverTrigger(cgf.gameObject, cgf);
        }
Esempio n. 9
0
        private void UpdateCGFGUI()
        {
            if (buttonCreate3D)
            {
                //Creates empty gameobject.
                GameObject cgf = new GameObject();

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

                //Adds Controls
                if (modAxisControls)
                {
                    cgf.AddComponent <CGF_AxisControls>();
                }

                if (modKeyControls)
                {
                    cgf.AddComponent <CGF_KeyControls>();
                }

                //Adds Mods
                if (modPulse)
                {
                    cgf.AddComponent <CGF_Pulse>();
                }
                if (modSize)
                {
                    cgf.AddComponent <CGF_SizeByRaycast>();
                }

                //Sets up properties
                circularGravity._shape     = cgfShape;
                circularGravity._forceType = cgfForceType;
                circularGravity.ForcePower = cgfForcePower;
                circularGravity._forceMode = cgfForceMode;
                circularGravity._forceTypeProperties.ExplosionForceUpwardsModifier = cfgExplosionForceUpwardsModifier;
                circularGravity._forceTypeProperties.TorqueMaxAngularVelocity      = cfgTorqueMaxAngularVelocity;
                circularGravity.Size          = cgfSize;
                circularGravity.BoxSize       = cgfBoxSize;
                circularGravity.CapsuleRadius = cgfCapsuleRadius;
                circularGravity._drawGravityProperties.GravityLineMaterial = new Material(Shader.Find("GUI/Text Shader"));

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

                FocusGameObject(cgf);

                if (triggerEnable)
                {
                    CreateEnableTrigger(cgf, circularGravity);
                }
                if (triggerHover)
                {
                    CreateHoverTrigger(cgf, circularGravity);
                }

                //Disables the buttonCreateNewCGF
                buttonCreate3D = false;
            }
        }
Esempio n. 10
0
        // Use this for initialization
        void Start()
        {
            cgf = this.GetComponent <CGF>();

            cgf.Size = maxCgfSize;
        }
Esempio n. 11
0
        void Awake()
        {
            cgf = this.GetComponent <CGF>();

            SetIdleValues();
        }
Esempio n. 12
0
        public static void AddPulse(MenuCommand command)
        {
            CGF cgf = (CGF)command.context;

            cgf.gameObject.AddComponent <CGF_Pulse>();
        }
Esempio n. 13
0
        //Applys the alignment
        private void ApplyAlignment(CGF cgf, Rigidbody rigid, Collider 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(rigid.position, cgf._forcePositionProperties.ClosestColliders);

                                    transPos = cgf.GetVectorHeightOffset(point, rigid.position, heightOffset);
                                }
                                else
                                {
                                    Vector3 pointA = cgf.FindClosestPoints(coll.transform.position, cgf._forcePositionProperties.ClosestColliders);
                                    Vector3 pointB = cgf.FindClosestPoints(pointA, coll);

                                    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;

                    case AlignDirection.Forward:
                        newLocal = -rigid.transform.forward;
                        break;

                    case AlignDirection.Backward:
                        newLocal = rigid.transform.forward;
                        break;
                    }

                    Quaternion targetRotation = Quaternion.FromToRotation(newLocal, rigid.position - transPos) * rigid.rotation;

                    Quaternion deltaRotation    = Quaternion.Inverse(rigid.rotation) * targetRotation;
                    Vector3    deltaAngles      = GetRelativeAngles(deltaRotation.eulerAngles);
                    Vector3    worldDeltaAngles = rigid.transform.TransformDirection(deltaAngles);

                    rigid.maxAngularVelocity = MaxAngularVelocity;
                    rigid.AddTorque((RotateSpeed * worldDeltaAngles) - ((AngularVelocityDamping * rigid.angularVelocity)));

                    if (OnApplyAlignToForceEvent != null)
                    {
                        OnApplyAlignToForceEvent.Invoke(cgf, rigid, coll, transPos);
                    }
                }
            }
        }
Esempio n. 14
0
        void SyncGunSelection()
        {
            CGF cgf = cgfGameObject.GetComponent <CGF> ();

            switch (_gunType)
            {
            case GunType.GravityGunForce:
                cgf._forceType        = CGF.ForceType.Force;
                cgf._forceMode        = ForceMode.Force;
                cgf._shape            = CGF.Shape.Raycast;
                sizeByRaycast.enabled = true;

                if (Input.GetButton("Fire1"))
                {
                    cgf.ForcePower = cgfForcePower;
                }
                else if (Input.GetButton("Fire2"))
                {
                    cgf.ForcePower = -cgfForcePower;
                }
                else
                {
                    cgf.ForcePower = 0f;
                }
                animator.SetBool("isShooting", cgf.ForcePower != 0f);
                break;

            case GunType.LauncherForce:

                cgf._forceType         = CGF.ForceType.Force;
                cgf._forceMode         = ForceMode.Impulse;
                cgf._shape             = CGF.Shape.Raycast;
                sizeByRaycast.enabled  = false;
                sizeByRaycast.HitPoint = Vector3.zero;
                cgf.Size       = 1f;
                cgf.ForcePower = 25f;

                if (Input.GetButtonDown("Fire1"))
                {
                    spawnPosBullet.Spawning();
                    spawnPosBullet.LastSpawned.GetComponent <CGF>().ForcePower = cgfForcePower;
                    if (SceneSettings.Instance != null)
                    {
                        spawnPosBullet.LastSpawned.GetComponent <CGF>()._drawGravityProperties.DrawGravityForce = SceneSettings.Instance.ToggleCGF;
                    }
                    animator.SetBool("isShooting", true);
                }
                else if (Input.GetButtonDown("Fire2"))
                {
                    spawnNegBullet.Spawning();
                    spawnNegBullet.LastSpawned.GetComponent <CGF>().ForcePower = -cgfForcePower;
                    if (SceneSettings.Instance != null)
                    {
                        spawnNegBullet.LastSpawned.GetComponent <CGF>()._drawGravityProperties.DrawGravityForce = SceneSettings.Instance.ToggleCGF;
                    }
                    animator.SetBool("isShooting", true);
                }
                else
                {
                    animator.SetBool("isShooting", false);
                }
                break;

            case GunType.GravityGunTorque:
                cgf._forceType        = CGF.ForceType.Torque;
                cgf._forceMode        = ForceMode.Force;
                cgf._shape            = CGF.Shape.Raycast;
                sizeByRaycast.enabled = true;

                if (Input.GetButton("Fire1"))
                {
                    cgf.ForcePower = cgfForcePower;
                }
                else if (Input.GetButton("Fire2"))
                {
                    cgf.ForcePower = -cgfForcePower;
                }
                else
                {
                    cgf.ForcePower = 0f;
                }
                animator.SetBool("isShooting", cgf.ForcePower != 0f);
                break;

            case GunType.LauncherTorque:
                cgf._forceType         = CGF.ForceType.Force;
                cgf._forceMode         = ForceMode.Impulse;
                sizeByRaycast.enabled  = false;
                sizeByRaycast.HitPoint = Vector3.zero;
                cgf.Size       = 1f;
                cgf.ForcePower = 30f;

                if (Input.GetButtonDown("Fire1"))
                {
                    spawnPosBulletTor.Spawning();
                    spawnPosBulletTor.LastSpawned.GetComponent <CGF>().ForcePower = cgfForcePower;
                    if (SceneSettings.Instance != null)
                    {
                        spawnPosBulletTor.LastSpawned.GetComponent <CGF>()._drawGravityProperties.DrawGravityForce = SceneSettings.Instance.ToggleCGF;
                    }
                    animator.SetBool("isShooting", true);
                }
                else if (Input.GetButtonDown("Fire2"))
                {
                    spawnNegBulletTor.Spawning();
                    spawnNegBulletTor.LastSpawned.GetComponent <CGF>().ForcePower = -cgfForcePower;
                    if (SceneSettings.Instance != null)
                    {
                        spawnNegBulletTor.LastSpawned.GetComponent <CGF>()._drawGravityProperties.DrawGravityForce = SceneSettings.Instance.ToggleCGF;
                    }
                    animator.SetBool("isShooting", true);
                }
                else
                {
                    animator.SetBool("isShooting", false);
                }

                break;
            }
        }
Esempio n. 15
0
        public static void AddAlignToForce(MenuCommand command)
        {
            CGF cgf = (CGF)command.context;

            cgf.gameObject.AddComponent <CGF_AlignToForce>();
        }
Esempio n. 16
0
        public static void AddNoGravity(MenuCommand command)
        {
            CGF cgf = (CGF)command.context;

            cgf.gameObject.AddComponent <CGF_NoGravity>();
        }
Esempio n. 17
0
        void Awake()
        {
            CGF.OnApplyCGFEvent += CGF_OnApplyCGFEvent;

            cgf = this.GetComponent <CGF>();
        }
Esempio n. 18
0
        public static void AddSizeByRaycast(MenuCommand command)
        {
            CGF cgf = (CGF)command.context;

            cgf.gameObject.AddComponent <CGF_SizeByRaycast>();
        }
Esempio n. 19
0
        void OnSceneGUI()
        {
            cgf = (CGF)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.left);
            Quaternion qRight = cgf.transform.transform.rotation;

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

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

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

            float dotSpace           = 10f;
            float sizeValue          = cgf.Size;
            float capsuleRadiusValue = cgf.CapsuleRadius;

            switch (cgf._shape)
            {
            case CGF.Shape.Sphere:

                Handles.color = mainColor;

                if (cgf._forceType == CGF.ForceType.ExplosionForce || cgf._forceType == CGF.ForceType.ForceAtPosition || cgf._forceType == CGF.ForceType.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), qLeft, gizmoSize);
                    Handles.ConeCap(0, GetVector(Vector3.right, cgf.Size + gizmoOffset, 1f), qRight, gizmoSize);
                    Handles.ConeCap(0, GetVector(Vector3.back, cgf.Size + gizmoOffset, 1f), qBack, gizmoSize);
                }
                else if (cgf._forceType == CGF.ForceType.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.forward, cgf.Size + gizmoOffset, 1f), qDown, gizmoSize);
                    Handles.ConeCap(0, GetVector(Vector3.back, cgf.Size + gizmoOffset, 1f), qUp, gizmoSize);
                }
                else
                {
                    Handles.ConeCap(0, GetVector(Vector3.back, cgf.Size + gizmoOffset, 1f), qBack, -gizmoSize);
                }

                if (cgf._forceType != CGF.ForceType.Torque)
                {
                    Handles.ConeCap(0, GetVector(Vector3.forward, 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.DrawDottedLine(GetVector(Vector3.forward, cgf.Size, 1), cgf.transform.position, dotSpace);
                Handles.DrawDottedLine(GetVector(Vector3.back, cgf.Size, 1), cgf.transform.position, dotSpace);

                Handles.CircleCap(0, cgf.transform.position, qUp, cgf.Size);
                Handles.CircleCap(0, cgf.transform.position, qRight, cgf.Size);
                Handles.CircleCap(0, cgf.transform.position, qForward, 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);
                sizeValue     = Handles.ScaleValueHandle(sizeValue, GetVector(Vector3.forward, cgf.Size, 1f), cgf.transform.rotation, gizmoSize, Handles.DotCap, .25f);
                sizeValue     = Handles.ScaleValueHandle(sizeValue, GetVector(Vector3.back, cgf.Size, 1f), cgf.transform.rotation, gizmoSize, Handles.DotCap, .25f);
                if (sizeValue < 0)
                {
                    cgf.Size = 0;
                }
                else
                {
                    cgf.Size = sizeValue;
                }

                break;

            case CGF.Shape.Capsule:

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

                Handles.DrawDottedLine(cgf.transform.position, GetVector(Vector3.forward, cgf.Size, 1), dotSpace);

                Handles.DrawDottedLine(GetVector(Vector3.forward, cgf.Size, 1) + ((cgf.transform.rotation * Vector3.up) * cgf.CapsuleRadius), GetVector(Vector3.forward, cgf.Size, 1), dotSpace);
                Handles.DrawDottedLine(GetVector(Vector3.forward, cgf.Size, 1) + ((cgf.transform.rotation * Vector3.down) * cgf.CapsuleRadius), GetVector(Vector3.forward, cgf.Size, 1), dotSpace);
                Handles.DrawDottedLine(GetVector(Vector3.forward, cgf.Size, 1) + ((cgf.transform.rotation * Vector3.left) * cgf.CapsuleRadius), GetVector(Vector3.forward, cgf.Size, 1), dotSpace);
                Handles.DrawDottedLine(GetVector(Vector3.forward, cgf.Size, 1) + ((cgf.transform.rotation * Vector3.right) * cgf.CapsuleRadius), GetVector(Vector3.forward, cgf.Size, 1), dotSpace);

                if (cgf._forceType != CGF.ForceType.Torque)
                {
                    Handles.ConeCap(0, GetVector(Vector3.forward, cgf.Size + gizmoOffset, 1f), qForward, gizmoSize);
                }
                else
                {
                    Handles.ConeCap(0, GetVector(Vector3.forward, cgf.Size + gizmoOffset, 1f), qDown, gizmoSize);
                }

                Handles.CircleCap(0, cgf.transform.position, qForward, cgf.CapsuleRadius);
                Handles.CircleCap(0, GetVector(Vector3.forward, cgf.Size, 1), qForward, cgf.CapsuleRadius);

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

                break;

            case CGF.Shape.Raycast:

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

                if (cgf._forceType != CGF.ForceType.Torque)
                {
                    Handles.ConeCap(0, GetVector(Vector3.forward, cgf.Size + gizmoOffset, 1f), qForward, gizmoSize);
                }
                else
                {
                    Handles.ConeCap(0, GetVector(Vector3.forward, cgf.Size + gizmoOffset, 1f), qDown, gizmoSize);
                }

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

                break;

            case CGF.Shape.Box:

                if (cgf._forceType == CGF.ForceType.ExplosionForce || cgf._forceType == CGF.ForceType.ForceAtPosition || cgf._forceType == CGF.ForceType.GravitationalAttraction)
                {
                    Handles.ConeCap(0, GetVector(Vector3.up, GetArrowOffsetForBox(mainColor, cgf.BoxSize.y, gizmoSize), 1f), qUp, GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.y));
                    Handles.ConeCap(0, GetVector(Vector3.down, GetArrowOffsetForBox(mainColor, cgf.BoxSize.y, gizmoSize), 1f), qDown, GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.y));
                    Handles.ConeCap(0, GetVector(Vector3.left, GetArrowOffsetForBox(mainColor, cgf.BoxSize.x, gizmoSize), 1f), qLeft, GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.x));
                    Handles.ConeCap(0, GetVector(Vector3.right, GetArrowOffsetForBox(mainColor, cgf.BoxSize.x, gizmoSize), 1f), qRight, GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.x));
                    Handles.ConeCap(0, GetVector(Vector3.back, GetArrowOffsetForBox(mainColor, cgf.BoxSize.z, gizmoSize), 1f), qBack, GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.z));
                }
                else if (cgf._forceType == CGF.ForceType.Torque)
                {
                    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.ConeCap(0, GetVector(Vector3.up, GetArrowOffsetForBox(mainColor, cgf.BoxSize.y, gizmoSize), 1f), qForward, GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.y));
                    Handles.ConeCap(0, GetVector(Vector3.down, GetArrowOffsetForBox(mainColor, cgf.BoxSize.y, gizmoSize), 1f), qBack, GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.y));
                    Handles.ConeCap(0, GetVector(Vector3.forward, GetArrowOffsetForBox(mainColor, cgf.BoxSize.z, gizmoSize), 1f), qDown, GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.z));
                    Handles.ConeCap(0, GetVector(Vector3.back, GetArrowOffsetForBox(mainColor, cgf.BoxSize.z, gizmoSize), 1f), qUp, GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.z));
                }
                else
                {
                    Handles.ConeCap(0, GetVector(Vector3.back, GetArrowOffsetForBox(mainColor, cgf.BoxSize.z, gizmoSize), 1f), qBack, -GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.z));
                }

                Handles.DrawDottedLine(GetVector(Vector3.forward, cgf.BoxSize.z, 1), cgf.transform.position, dotSpace);
                Handles.DrawDottedLine(GetVector(Vector3.back, cgf.BoxSize.z, 1), cgf.transform.position, dotSpace);

                if (cgf._forceType != CGF.ForceType.Torque)
                {
                    Handles.ConeCap(0, GetVector(Vector3.forward, GetArrowOffsetForBox(mainColor, cgf.BoxSize.z, gizmoSize), 1f), qForward, GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.z));
                }

                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;
                float sizeXValue = cgf.BoxSize.x;
                float sizeYValue = cgf.BoxSize.y;
                float sizeZValue = cgf.BoxSize.z;
                sizeXValue = Handles.ScaleValueHandle(sizeXValue, GetVector(Vector3.left, cgf.BoxSize.x, 1f), cgf.transform.rotation, GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.x), Handles.DotCap, .25f);
                sizeXValue = Handles.ScaleValueHandle(sizeXValue, GetVector(Vector3.right, cgf.BoxSize.x, 1f), cgf.transform.rotation, GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.x), Handles.DotCap, .25f);
                sizeYValue = Handles.ScaleValueHandle(sizeYValue, GetVector(Vector3.up, cgf.BoxSize.y, 1f), cgf.transform.rotation, GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.y), Handles.DotCap, .25f);
                sizeYValue = Handles.ScaleValueHandle(sizeYValue, GetVector(Vector3.down, cgf.BoxSize.y, 1f), cgf.transform.rotation, GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.y), Handles.DotCap, .25f);
                sizeZValue = Handles.ScaleValueHandle(sizeZValue, GetVector(Vector3.forward, cgf.BoxSize.z, 1f), cgf.transform.rotation, GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.z), Handles.DotCap, .25f);
                sizeZValue = Handles.ScaleValueHandle(sizeZValue, GetVector(Vector3.back, cgf.BoxSize.z, 1f), cgf.transform.rotation, GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.z), Handles.DotCap, .25f);
                if (sizeXValue < 0)
                {
                    cgf.BoxSize = new Vector3(0f, cgf.BoxSize.y, cgf.BoxSize.z);
                }
                else
                {
                    cgf.BoxSize = new Vector3(sizeXValue, cgf.BoxSize.y, cgf.BoxSize.z);
                }
                if (sizeYValue < 0)
                {
                    cgf.BoxSize = new Vector3(cgf.BoxSize.x, 0f, cgf.BoxSize.z);
                }
                else
                {
                    cgf.BoxSize = new Vector3(cgf.BoxSize.x, sizeYValue, cgf.BoxSize.z);
                }
                if (sizeZValue < 0)
                {
                    cgf.BoxSize = new Vector3(cgf.BoxSize.x, cgf.BoxSize.y, 0f);
                }
                else
                {
                    cgf.BoxSize = new Vector3(cgf.BoxSize.x, cgf.BoxSize.y, sizeZValue);
                }
                break;
            }

            if (cgf._shape != CGF.Shape.Box)
            {
                Handles.SphereCap(0, cgf.transform.position, cgf.transform.rotation, gizmoSize / 2f);
            }
            else if (cgf._shape == CGF.Shape.Box)
            {
                Handles.SphereCap(0, cgf.transform.position, cgf.transform.rotation, GetGismoSizeForBox(mainColor, gizmoSize, cgf.BoxSize.magnitude) / 2f);
            }

            if (GUI.changed)
            {
                EditorUtility.SetDirty(target);
            }
        }
Esempio n. 20
0
 // Use this for initialization
 void Start()
 {
     cgf   = this.GetComponent <CGF>();
     timer = this.GetComponent <Timer>();
 }
Esempio n. 21
0
        public static void AddKeyControls(MenuCommand command)
        {
            CGF cgf = (CGF)command.context;

            cgf.gameObject.AddComponent <CGF_KeyControls>();
        }