예제 #1
0
    public void AddTestCollider(DebugUnityColliderProxy proxy, GameObject obj, PrimitiveType type)
    {
        switch (type)
        {
        case PrimitiveType.Cube: {
            var _col = new OBB();
            _col.c = (obj.transform.position).ToLVector3();
            _col.e = (transform.localScale * 0.5f).ToLVector3();
            _col.u = new LAxis3D(transform.right.ToLVector3(), transform.up.ToLVector3(),
                                 transform.forward.ToLVector3());
            proxy.AddCollider(_col, ColliderLocalInfo.identity);
            break;
        }

        case PrimitiveType.Sphere: {
            var _col = new Sphere(obj.transform.position.ToLVector3(), 0.5f.ToLFloat());
            proxy.AddCollider(_col, ColliderLocalInfo.identity);
            break;
        }

        case PrimitiveType.Capsule: {
            var hDir = (Vector3.up * 0.5f).ToLVector3();
            var c    = (obj.transform.position).ToLVector3();
            var r    = 0.5f.ToLFloat();
            var _col = new Capsule(c, hDir, r);
            proxy.AddCollider(_col, ColliderLocalInfo.identity);
            break;
        }
        }
    }
예제 #2
0
    IEnumerator PingPongMove(DebugUnityColliderProxy comp, LVector3 sPos, LVector3 ePos, float time)
    {
        float   timer = 0;
        Vector3 deg;

        deg.x = Random.Range(1.0f - degFloatRate, 1.0f + degFloatRate);
        deg.y = Random.Range(1.0f - degFloatRate, 1.0f + degFloatRate);
        deg.z = Random.Range(1.0f - degFloatRate, 1.0f + degFloatRate);
        var startDeg = comp.transform.localRotation.eulerAngles.ToLVector3();
        var endDeg   = (startDeg.ToVector3() + (deg * rawRotateDeg)).ToLVector3();

        var obb    = comp.Collider as OBB;
        var aabb   = comp.Collider as AABB;
        var sphere = comp.Collider as Sphere;

        while (true)
        {
            timer += Time.deltaTime;
            if (timer > time)
            {
                break;
            }

            var timeRate = (timer / time).ToLFloat();
            //change position
            comp.transform.position = (LVector3.Lerp(sPos, ePos, timeRate).ToVector3());
            var collider = comp.Collider;
            //change rotation
            if (aabb == null)
            {
                Vector3 tdeg = LMath.Lerp(startDeg, endDeg, timeRate).ToVector3();
                comp.transform.rotation = Quaternion.Euler(tdeg.x, tdeg.y, tdeg.z);
            }

            yield return(null);
        }

        StartCoroutine(PingPongMove(comp, ePos, sPos,
                                    rawMoveTime * UnityEngine.Random.Range(1.0f - timeFloatRate, 1.0f + timeFloatRate)));
    }
예제 #3
0
 void OnSceneGUI()
 {
     owner = (DebugUnityColliderProxy)target;
     //DrawPathHeap();
 }
예제 #4
0
 public override void OnInspectorGUI()
 {
     base.OnInspectorGUI();
     owner = (DebugUnityColliderProxy)target;
 }