private void CGF_OnApplyCGFEvent(CGF2D cgf, Rigidbody2D rigid, Collider2D coll) { if (this.cgf == cgf) { ApplyAlignment(cgf, rigid, coll); } }
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); } }
private static GameObject CreateSimpleCGF2D() { var cgf = CGF2D.CreateCGF(); FocusGameObject(cgf, true); return(cgf); }
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; } }
void Start() { cgf = this.GetComponent <CGF2D>(); if (_pulseProperties.Pulse) { cgf.Size = _pulseProperties.MinSize; pulse_Positive = true; pulse_PositiveBoxX = true; pulse_PositiveBoxY = true; } }
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); } } } } }
public static void AddSizeByRaycast2D(MenuCommand command) { CGF2D cgf = (CGF2D)command.context; cgf.gameObject.AddComponent <CGF_SizeByRaycast2D>(); }
public static void AddPulse2D(MenuCommand command) { CGF2D cgf = (CGF2D)command.context; cgf.gameObject.AddComponent <CGF_Pulse2D>(); }
static void CONTEXT_CircularGravity2D_Create_Hover(MenuCommand command) { CGF2D cgf = (CGF2D)command.context; CreateHoverTrigger2D(cgf.gameObject, cgf); }
public static void AddKeyControls2D(MenuCommand command) { CGF2D cgf = (CGF2D)command.context; cgf.gameObject.AddComponent <CGF_KeyControls2D>(); }
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); } }
void Awake() { CGF2D.OnApplyCGFEvent += CGF_OnApplyCGFEvent; cgf = this.GetComponent <CGF2D>(); }
// Use this for initialization void Start() { cgf = this.GetComponent <CGF2D>(); cgf.Size = maxCgfSize; }
void Awake() { cgf = this.GetComponent <CGF2D>(); SetIdleValues(); }
//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); } } } }