//-----------------------------------------------------------------
        protected void OnDestroy()
        {
            ClearClick();
#if ASYNC_MODE
            string abName = name.ToLower().Replace("panel", "");
            ResManager.UnloadAssetBundle(abName + AppConst.ExtName);
#endif
            QUtil.ClearMemory();
            Debug.Log("~" + name + " was destroy!");
        }
示例#2
0
        private Quaternion _BakeQ(AnimationCurve xCurve, AnimationCurve yCurve, AnimationCurve zCurve, AnimationCurve wCurve, float t)
        {
            float x = xCurve.Evaluate(t);
            float y = yCurve.Evaluate(t);
            float z = zCurve.Evaluate(t);
            float w = wCurve.Evaluate(t);

            Quaternion q = new Quaternion(x, y, z, w);

            return(QUtil.Normalize(q));
        }
示例#3
0
        private Quaternion _ReflectQ(Quaternion rot, Axis axisValue, Vector3 planeNormal)
        {
            switch (axisValue)
            {
            case Axis.XY: return(QUtil.Reflect_XY(rot, planeNormal));

            case Axis.XZ: return(QUtil.Reflect_XZ(rot, planeNormal));

            case Axis.YZ: return(QUtil.Reflect_YZ(rot, planeNormal));

            default:
                Dbg.LogErr("MirrorCtrl._ReflectQ: unexpected axisValue: {0}", axisValue);
                return(Quaternion.identity);
            }
        }
示例#4
0
        private Quaternion _ReflectQ(Quaternion oldQ, Axis axisValue, Vector3 planeNormal)
        {
            switch (axisValue)
            {
            case Axis.XY: return(QUtil.Reflect_XY(oldQ, planeNormal));

            case Axis.XZ: return(QUtil.Reflect_XZ(oldQ, planeNormal));

            case Axis.YZ: return(QUtil.Reflect_YZ(oldQ, planeNormal));

            default:
                Dbg.LogErr("AnimMirrorEditorWindow._ReflectQ: unexpected axisValue: {0}", axisValue);
                return(Quaternion.identity);
            }
        }
示例#5
0
    public static void EncodeLuaFile(string srcFile, string outFile)
    {
        if (!srcFile.ToLower().EndsWith(".lua"))
        {
            File.Copy(srcFile, outFile, true);
            return;
        }
        bool   isWin   = true;
        string luaexe  = string.Empty;
        string args    = string.Empty;
        string exedir  = string.Empty;
        string currDir = Directory.GetCurrentDirectory();

        if (Application.platform == RuntimePlatform.WindowsEditor)
        {
            isWin  = true;
            luaexe = "luajit.exe";
            args   = "-b " + srcFile + " " + outFile;
            exedir = AppDataPath.Replace("assets", "") + "LuaEncoder/luajit/";
        }
        else if (Application.platform == RuntimePlatform.OSXEditor)
        {
            isWin  = false;
            luaexe = "./luac";
            args   = "-o " + outFile + " " + srcFile;
            exedir = AppDataPath.Replace("assets", "") + "LuaEncoder/luavm/";
        }
        Directory.SetCurrentDirectory(exedir);
        ProcessStartInfo info = new ProcessStartInfo();

        info.FileName        = luaexe;
        info.Arguments       = args;
        info.WindowStyle     = ProcessWindowStyle.Hidden;
        info.ErrorDialog     = true;
        info.UseShellExecute = isWin;
        QUtil.Log(info.FileName + " " + info.Arguments);

        Process pro = Process.Start(info);

        pro.WaitForExit();
        Directory.SetCurrentDirectory(currDir);
    }
示例#6
0
        public override void DoUpdate()
        {
            base.DoUpdate();

            if (!m_targetSpline)
            {
                return;                                          //do nothing if no target is specified
            }
            Vector3    initPos = m_tr.GetPosition(ESpace.World); //use world space
            Quaternion initRot = m_tr.GetQuaternion(ESpace.World);
            Vector3    endPos  = initPos;
            Quaternion endRot  = m_tr.rotation;
            Vector3    endTan  = Vector3.forward;
            Vector3    endUp   = Vector3.up;



            if (m_followCurve)
            { // calculate pos/tan/up together
                m_targetSpline.CalcTransformed(m_offset, out endPos, out endTan, out endUp);
                endRot = QUtil.LookAt(m_forwardDir, m_upDir, endTan, endUp);
            }
            else
            { // calculate pos only
                endPos = m_targetSpline.GetTransformedPosition(m_offset);
            }

            if (!Mathf.Approximately(m_influence, 1f))
            {
                endPos = Misc.Lerp(initPos, endPos, m_influence);
                if (m_followCurve)
                {
                    endRot = Quaternion.Slerp(initRot, endRot, m_influence);
                }
            }

            m_tr.SetPosition(endPos, ESpace.World);
            m_tr.SetQuaternion(endRot, ESpace.World);
        }
        public override void DoUpdate()
        {
            base.DoUpdate();

            if (!m_target)
            {
                return; //do nothing if no target is specified
            }
            Quaternion initRot   = m_tr.rotation;
            Vector3    selfPos   = m_tr.position;
            Vector3    targetPos = m_target.position;

            Vector3 upDir = Vector3.up;

            switch (m_RotateAxis)
            {
            case EAxisD.X: upDir = m_tr.right; break;

            case EAxisD.Y: upDir = m_tr.up; break;

            case EAxisD.Z: upDir = m_tr.forward; break;

            default: Dbg.LogErr("LockedTrack.DoUpdate: unexpected rotate axis: {0}", m_RotateAxis); break;
            }

            Vector3 lookDir     = targetPos - selfPos;
            Vector3 projLookDir = Vector3.ProjectOnPlane(lookDir, upDir);

            if (projLookDir != Vector3.zero)
            {
                Quaternion endRot = QUtil.LookAt(m_LookAxis, m_RotateAxis, projLookDir, upDir);
                if (!Mathf.Approximately(m_influence, 1f))
                {
                    endRot = Quaternion.Slerp(initRot, endRot, m_influence);
                }
                m_tr.SetQuaternion(endRot, ESpace.World);
            }
        }