Beispiel #1
0
        // 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);
			}
		}
Beispiel #7
0
// 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);
    }