// Add fields here that your job needs to do its work. // For example, // public float deltaTime; public void Execute(ref MoveTarget target, [ReadOnly] ref AIConstrain constrain, [ReadOnly] ref Translation translation) { UnityEngine.Bounds boundstest = new UnityEngine.Bounds(new float3(0), new float3(20)); if (!boundstest.Contains(translation.Value)) { target.Value += ((float3)boundstest.ClosestPoint(translation.Value) - translation.Value) * 10; } }
public void ApplyForce(Transform transObj, float maxForce = 1, float radius = 0) { //radius = 0; //Debug.Log("Cube hit!"); var b = new Bounds(FinalPosition, transform.localScale); b.Expand(radius * 2); // Why does radius need to be multiplied by 2? //var falloffBounds =new Bounds( new Bounds(FinalPosition, transform.localScale + (Vector3.one * Falloff) + (Vector3.one * radius * 2)); var falloffBounds = new Bounds(FinalPosition, transform.localScale); falloffBounds.Expand(radius * 2 + Falloff * 2); if (falloffBounds.Contains(transObj.position)) { //Debug.Log("Object in falloff"); // inside the obstacle! if (b.Contains(transObj.position)) { //Debug.Log("Object has enter bounds!"); transObj.position = GetClosestBorderFromInsidePoint(b, transObj.position, 0.01f); } // in the fallout area else { var falloutClosePoint = falloffBounds.ClosestPoint(transObj.position); Helpers.DrawDebugPoint(falloutClosePoint, 1, Color.cyan); var objClosePoint = b.ClosestPoint(transObj.position); Helpers.DrawDebugPoint(objClosePoint, 1, Color.magenta); Debug.DrawLine(falloutClosePoint, objClosePoint, Color.yellow); var mag = (falloutClosePoint - objClosePoint).magnitude; var frac = Mathf.Max(1 - mag / Falloff, 0); //Debug.Log("mag = " + mag + " (" + frac + ")"); var forceVector = (falloutClosePoint - objClosePoint).normalized * frac * maxForce; transObj.position += forceVector * Time.deltaTime; } } }
void LateUpdate() { var boundedArea = new Bounds(bounds.center, bounds.size); foreach (Transform child in transform) child.localPosition = boundedArea.ClosestPoint(child.localPosition); }
private void DoOriginEditing() { ReflectionProbe target = (ReflectionProbe) this.target; Vector3 position = target.transform.position; Vector3 size = target.size; Vector3 center = target.center + position; EditorGUI.BeginChangeCheck(); Vector3 point = Handles.PositionHandle(position, Quaternion.identity); bool flag = EditorGUI.EndChangeCheck(); if (!flag) { point = position; flag = (double) (this.m_OldTransformPosition - point).magnitude > 9.99999974737875E-06; if (flag) center = target.center + this.m_OldTransformPosition; } if (!flag) return; Undo.RecordObject((UnityEngine.Object) target, "Modified Reflection Probe Origin"); Bounds bounds = new Bounds(center, size); Vector3 vector3_1 = bounds.ClosestPoint(point); Vector3 vector3_2 = vector3_1; target.transform.position = vector3_2; this.m_OldTransformPosition = vector3_2; target.center = bounds.center - vector3_1; EditorUtility.SetDirty(this.target); }
private void DoOriginEditing() { ReflectionProbe target = (ReflectionProbe) this.target; Vector3 position = target.transform.position; Vector3 size = target.size; Vector3 center = target.center + position; EditorGUI.BeginChangeCheck(); Vector3 point = Handles.PositionHandle(position, Quaternion.identity); bool flag = EditorGUI.EndChangeCheck(); if (!flag) { point = position; Vector3 vector5 = this.m_OldTransformPosition - point; flag = vector5.magnitude > 1E-05f; if (flag) { center = target.center + this.m_OldTransformPosition; } } if (flag) { Undo.RecordObject(target, "Modified Reflection Probe Origin"); Bounds bounds = new Bounds(center, size); point = bounds.ClosestPoint(point); Vector3 vector6 = point; target.transform.position = vector6; this.m_OldTransformPosition = vector6; target.center = bounds.center - point; EditorUtility.SetDirty(this.target); } }
private void DoOriginEditing() { ReflectionProbe reflectionProbe = (ReflectionProbe)this.target; Vector3 position = reflectionProbe.transform.position; Vector3 size = reflectionProbe.size; Vector3 center = reflectionProbe.center + position; EditorGUI.BeginChangeCheck(); Vector3 vector = Handles.PositionHandle(position, Quaternion.identity); bool flag = EditorGUI.EndChangeCheck(); if (!flag) { vector = position; flag = ((this.m_OldTransformPosition - vector).magnitude > 1E-05f); if (flag) { center = reflectionProbe.center + this.m_OldTransformPosition; } } if (flag) { Undo.RecordObject(reflectionProbe, "Modified Reflection Probe Origin"); Bounds bounds = new Bounds(center, size); vector = bounds.ClosestPoint(vector); Vector3 vector2 = vector; reflectionProbe.transform.position = vector2; this.m_OldTransformPosition = vector2; reflectionProbe.center = bounds.center - vector; EditorUtility.SetDirty(this.target); } }
// methods static bool Bounds_ClosestPoint__Vector3(JSVCall vc, int argc) { int len = argc; if (len == 1) { UnityEngine.Vector3 arg0 = (UnityEngine.Vector3)JSApi.getVector3S((int)JSApi.GetType.Arg); UnityEngine.Bounds argThis = (UnityEngine.Bounds)vc.csObj; JSApi.setVector3S((int)JSApi.SetType.Rval, argThis.ClosestPoint(arg0)); JSMgr.changeJSObj(vc.jsObjID, argThis); } return(true); }