private void CGF_OnApplyCGFEvent(CGF cgf, Rigidbody rigid, Collider coll) { if (this.cgf == cgf) { ApplyAlignment(cgf, rigid, coll); } }
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); } }
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; } }
private void CGF_OnApplyCGFEvent(CGF cgf, Rigidbody characterRB, Collider characterCollider) { if (this.rigid != characterRB) { return; } //Debug.LogError("CGF_OnApplyCGFEvent"); this.currentCGF = cgf; }
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; } }
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); } } } } }
static void CONTEXT_CircularGravity_Create_Hover(MenuCommand command) { CGF cgf = (CGF)command.context; CreateHoverTrigger(cgf.gameObject, cgf); }
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; } }
// Use this for initialization void Start() { cgf = this.GetComponent <CGF>(); cgf.Size = maxCgfSize; }
void Awake() { cgf = this.GetComponent <CGF>(); SetIdleValues(); }
public static void AddPulse(MenuCommand command) { CGF cgf = (CGF)command.context; cgf.gameObject.AddComponent <CGF_Pulse>(); }
//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); } } } }
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; } }
public static void AddAlignToForce(MenuCommand command) { CGF cgf = (CGF)command.context; cgf.gameObject.AddComponent <CGF_AlignToForce>(); }
public static void AddNoGravity(MenuCommand command) { CGF cgf = (CGF)command.context; cgf.gameObject.AddComponent <CGF_NoGravity>(); }
void Awake() { CGF.OnApplyCGFEvent += CGF_OnApplyCGFEvent; cgf = this.GetComponent <CGF>(); }
public static void AddSizeByRaycast(MenuCommand command) { CGF cgf = (CGF)command.context; cgf.gameObject.AddComponent <CGF_SizeByRaycast>(); }
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); } }
// Use this for initialization void Start() { cgf = this.GetComponent <CGF>(); timer = this.GetComponent <Timer>(); }
public static void AddKeyControls(MenuCommand command) { CGF cgf = (CGF)command.context; cgf.gameObject.AddComponent <CGF_KeyControls>(); }