コード例 #1
0
    public static string Execute()
    {
        SSUtil.Log("executing {0}", typeof(T03_enum_string).Name);

        using (SSTimer t = new SSTimer("_test_enum_to_string"))
        {
            for (int i = 0; i < NUM; i++)
            {
                for (int k = 0; k < (int)FooTypes.Max; k++)
                {
                    foo = ((FooTypes)k).ToString();
                }
            }
        }
        foo = "";

        using (SSTimer t = new SSTimer("_test_enum_get_name"))
        {
            for (int i = 0; i < NUM; i++)
            {
                for (int k = 0; k < (int)FooTypes.Max; k++)
                {
                    foo = Enum.GetName(typeof(FooTypes), (FooTypes)k);
                }
            }
        }
        foo = "";

        return foo; // prevent 'foo' from being optimized out
    }
コード例 #2
0
        protected void Timeout(SSContext context, long timeout, TimeoutCallback callback)
        {
            long timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds();

            if (timeout <= 0)
            {
                callback(context, timestamp);
            }
            else
            {
                if (m_totalServiceSession >= Int32.MaxValue)
                {
                    m_totalServiceSession = 0;
                }

                SSTimerNode timerNode = new SSTimerNode();
                timerNode.Opaque           = m_serviceAddress;
                timerNode.Session          = ++m_totalServiceSession;
                timerNode.TimeoutTimestamp = timestamp + timeout;

                SSTimer.GetInstance().Add(timerNode);

                TimeoutContext timeoutContext = new TimeoutContext();
                timeoutContext.Callback = callback;
                timeoutContext.Context  = context;
                m_timeoutCallbacks.Add(timerNode.Session, timeoutContext);
            }
        }
コード例 #3
0
        void RawTexture()
        {
            int     xyMax = 512;
            SSTimer ss    = new SSTimer("合图raw方式");

            Rect[] rec = new Rect[4];
            rec[0].xMin = 0; rec[0].xMax = 0.5f; rec[0].yMin = 0; rec[0].yMax = 0.5f;
            rec[1].xMin = 0.5f; rec[1].xMax = 1f; rec[1].yMin = 0f; rec[1].yMax = 0.5f;
            rec[2].xMin = 0f; rec[2].xMax = 0.5f; rec[2].yMin = 0.5f; rec[2].yMax = 1f;
            rec[3].xMin = 0.5f; rec[3].xMax = 1; rec[3].yMin = 0.5f; rec[3].yMax = 1f;
            //mergeTxMgr.Instance.getBlcokBytes(texture2s[0], 512);
            //mergeTxMgr.Instance.getBlcokBytes(texture2s[1], 512);
            //mergeTxMgr.Instance.getBlcokBytes(texture2s[2], 512);
            int blockByte = mergeTxMgr.Instance.getBlcokBytes(texture2s[3], 512);

            mergeTxMgr.Instance.getByteInTx(rec[0].xMin, rec[0].yMin, mergeTxMgr.Instance.data, blockByte, xyMax, texture2s[0]);
            mergeTxMgr.Instance.getByteInTx(rec[1].xMin, rec[1].yMin, mergeTxMgr.Instance.data, blockByte, xyMax, texture2s[1]);
            mergeTxMgr.Instance.getByteInTx(rec[2].xMin, rec[2].yMin, mergeTxMgr.Instance.data, blockByte, xyMax, texture2s[2]);
            mergeTxMgr.Instance.getByteInTx(rec[3].xMin, rec[3].yMin, mergeTxMgr.Instance.data, blockByte, xyMax, texture2s[3]);
            ss.Dispose();
            outTexture      = new Texture2D(xyMax, xyMax, texture2s[0].format, false);
            outTexture.name = "raw__texture__512X512";
            outTexture.LoadRawTextureData(mergeTxMgr.Instance.data);
            outTexture.Apply(false, true);
        }
コード例 #4
0
    public static void Execute()
    {
        SSUtil.Log("executing {0}", typeof(T06_matrix_caching).Name);

        Matrix4x4 ret = Matrix4x4.zero;

        ResetRandomly();
        using (SSTimer t = new SSTimer("_test_mat_caching: no caching_"))
        {
            for (int i = 0; i < NUM; i++)
            {
                ret = Camera.main.worldToCameraMatrix * _inputMat;
            }
        }

        ResetRandomly();
        using (SSTimer t = new SSTimer("_test_mat_caching: cached_"))
        {
            Matrix4x4 cached = Camera.main.worldToCameraMatrix;
            for (int i = 0; i < NUM; i++)
            {
                ret = cached * _inputMat;
            }
        }
    }
コード例 #5
0
    public static void Execute()
    {
        SSUtil.Log("executing {0}", typeof(T06_matrix_caching).Name);

        Matrix4x4 ret = Matrix4x4.zero;

        ResetRandomly();
        using (SSTimer t = new SSTimer("_test_mat_caching: no caching_"))
        {
            for (int i = 0; i < NUM; i++)
            {
                ret = Camera.main.worldToCameraMatrix * _inputMat;
            }
        }

        ResetRandomly();
        using (SSTimer t = new SSTimer("_test_mat_caching: cached_"))
        {
            Matrix4x4 cached = Camera.main.worldToCameraMatrix;
            for (int i = 0; i < NUM; i++)
            {
                ret = cached * _inputMat;
            }
        }
    }
コード例 #6
0
    public static string Execute()
    {
        SSUtil.Log("executing {0}", typeof(T03_enum_string).Name);

        using (SSTimer t = new SSTimer("_test_enum_to_string"))
        {
            for (int i = 0; i < NUM; i++)
            {
                for (int k = 0; k < (int)FooTypes.Max; k++)
                {
                    foo = ((FooTypes)k).ToString();
                }
            }
        }
        foo = "";

        using (SSTimer t = new SSTimer("_test_enum_get_name"))
        {
            for (int i = 0; i < NUM; i++)
            {
                for (int k = 0; k < (int)FooTypes.Max; k++)
                {
                    foo = Enum.GetName(typeof(FooTypes), (FooTypes)k);
                }
            }
        }
        foo = "";

        return(foo); // prevent 'foo' from being optimized out
    }
コード例 #7
0
    public static void Execute()
    {
        SSUtil.Log("executing {0}", typeof(T01_foreach).Name);

        for (int i = 0; i < NUM; i++)
        {
            _testArray[i] = i;
        }

        for (int i = 0; i < NUM; i++)
        {
            _testList.Add(i);
        }

        for (int i = 0; i < NUM; i++)
        {
            _testDict[i] = i;
        }

        int sum = 0;

        using (SSTimer t = new SSTimer("_testArray"))
        {
            foreach (var item in _testArray)
            {
                sum += item;
            }
        }

        using (SSTimer t = new SSTimer("_testList"))
        {
            foreach (var item in _testList)
            {
                sum += item;
            }
        }

        using (SSTimer t = new SSTimer("_testDict"))
        {
            foreach (var item in _testList)
            {
                sum += item;
            }
        }
    }
コード例 #8
0
ファイル: T01_foreach.cs プロジェクト: rvpoochen/u3d_practice
    public static void Execute()
    {
        SSUtil.Log("executing {0}", typeof(T01_foreach).Name);

        for (int i = 0; i < NUM; i++)
            _testArray[i] = i;

        for (int i = 0; i < NUM; i++)
            _testList.Add(i);

        for (int i = 0; i < NUM; i++)
            _testDict[i] = i;

        int sum = 0;
        using (SSTimer t = new SSTimer("_testArray"))
        {
            foreach (var item in _testArray)
            {
                sum += item;
            }
        }

        using (SSTimer t = new SSTimer("_testList"))
        {
            foreach (var item in _testList)
            {
                sum += item;
            }
        }

        using (SSTimer t = new SSTimer("_testDict"))
        {
            foreach (var item in _testList)
            {
                sum += item;
            }
        }
    }
コード例 #9
0
        void Blit()
        {
            SSTimer ss = new SSTimer("合图Blit方式");

            outTexture           = new RenderTexture(512, 512, 0, RenderTextureFormat.ARGB32);
            outTexture.name      = "blit___texture_512X512";
            outTexture.useMipMap = true;

            var lastTarget = RenderTexture.active;

            RenderTexture.active = outTexture;

            GL.Clear(true, true, Color.clear);
            Vector4 textST = new Vector4();

            for (int i = 0; i < rects.Length; i++)
            {
                Rect  r  = rects[i];
                float tw = texture2s[i].width * totalScale;
                float th = texture2s[i].height * totalScale;
                textST.x = MaxAtlasSize / tw;
                textST.y = MaxAtlasSize / th;
                textST.z = -r.x / MaxAtlasSize * textST.x;
                textST.w = -r.y / MaxAtlasSize * textST.y;
                rendererMaterial.SetVector("_Tex_ST", textST);
                textST.x = textST.y = r.width / tw / 2;
                textST.z = textST.w = r.height / th / 2;
                rendererMaterial.SetVector("_Rect", textST);
                r.Set(r.x / MaxAtlasSize, r.y / MaxAtlasSize, tw / MaxAtlasSize, th / MaxAtlasSize);
                //rects[i] = r;
                rendererMaterial.mainTexture = texture2s[i];
                Graphics.Blit(texture2s[i], rendererMaterial);
            }
            RenderTexture.active = lastTarget;
            ss.Dispose();
        }
コード例 #10
0
    public static void Execute()
    {
        SSUtil.Log("executing {0}", typeof(T04_typecast).Name);

        Foo f = new Bar();

        using (SSTimer t = new SSTimer("_test_as_cast_"))
        {
            for (int i = 0; i < NUM; i++)
            {
                Bar b = f as Bar;
                b.dummy_derived = 1;
            }
        }

        using (SSTimer t = new SSTimer("_test_c_style_cast_"))
        {
            for (int i = 0; i < NUM; i++)
            {
                Bar b = (Bar)f;
                b.dummy_derived = 1;
            }
        }
    }
コード例 #11
0
    public static void Execute()
    {
        SSUtil.Log("executing {0}", typeof(T04_typecast).Name);

        Foo f = new Bar();

        using (SSTimer t = new SSTimer("_test_as_cast_"))
        {
            for (int i = 0; i < NUM; i++)
            {
                Bar b = f as Bar;
                b.dummy_derived = 1;
            }
        }

        using (SSTimer t = new SSTimer("_test_c_style_cast_"))
        {
            for (int i = 0; i < NUM; i++)
            {
                Bar b = (Bar)f;
                b.dummy_derived = 1;
            }
        }
    }
コード例 #12
0
        /** 合并蒙皮,合并纹理
         *  纹理需要打开读写
         */
        void CombineObject(GameObject skeleton, int combine_size)
        {
            if (combineHolderList == null || combineHolderList.Count == 0)
            {
                return;
            }

            List <Transform> transforms = new List <Transform>();

            CollectionTransforms(skeleton.transform, ref transforms);

            List <Transform> bones = new List <Transform>();

            string   flag        = "hair-?_clothes-?_pants-?_shoes-?";
            Material newMaterial = null;

            Mesh shaderMesh = null;
            List <CombineInstance>    combineInstances = new List <CombineInstance>();
            List <Vector2[]>          oldUV            = new List <Vector2[]>();
            List <Material>           materials        = new List <Material>();
            SkinnedMeshCombinerHolder holder           = null;

            for (int i = 0; i < combineHolderList.Count; i++)
            {
                holder = combineHolderList[i];
                CombineInstance ci = new CombineInstance();
                ci.mesh         = holder.mesh;
                ci.subMeshIndex = 0;
                combineInstances.Add(ci);
                materials.Add(holder.material);

                for (int j = 0; j < holder.stringHolder.content.Length; j++)
                {
                    int tBase = 0;
                    for (tBase = 0; tBase < transforms.Count; tBase++)
                    {
                        if (holder.stringHolder.content[j].Equals(transforms[tBase].name))
                        {
                            bones.Add(transforms[tBase]);
                            break;
                        }
                    }
                }
            }

            List <Texture2D> Textures = new List <Texture2D>();
            TextureFormat    format   = TextureFormat.RGBA32;

            for (int i = 0; i < materials.Count; i++)
            {
                Textures.Add(materials[i].GetTexture(COMBINE_DIFFUSE_TEXTURE) as Texture2D);
            }
            format      = Textures[0].format;
            newMaterial = UnityEngine.Object.Instantiate(materials[0]);

            newMaterial.name = flag;
            Texture2D newDiffuseTex = null;

            SSTimer ss = new SSTimer("合图Pack方式");

            newDiffuseTex           = new Texture2D(combine_size, combine_size, format, true);
            newDiffuseTex.name      = "packtexture__texture_512X512";
            newMaterial.mainTexture = newDiffuseTex;
            Rect[] uvs = newDiffuseTex.PackTextures(Textures.ToArray(), 0, maxnumsize, true);
            ss.Dispose();
            Vector2[] uva, uvb;
            for (int j = 0; j < combineInstances.Count; j++)
            {
                uva = (Vector2[])(combineInstances[j].mesh.uv);
                uvb = new Vector2[uva.Length];
                for (int k = 0; k < uva.Length; k++)
                {
                    uvb[k] = new Vector2((uva[k].x * uvs[j].width) + uvs[j].x, (uva[k].y * uvs[j].height) + uvs[j].y);
                }
                oldUV.Add(combineInstances[j].mesh.uv);
                combineInstances[j].mesh.uv = uvb;
            }
            shaderMesh = new Mesh();
            shaderMesh.CombineMeshes(combineInstances.ToArray(), true, false);
            shaderMesh.name = flag;
            for (int i = 0; i < combineInstances.Count; i++)
            {
                combineInstances[i].mesh.uv = oldUV[i];
            }

            GameObject body = new GameObject("body");

            body.layer                   = skeleton.layer;
            body.transform.parent        = skeleton.transform;
            body.transform.localPosition = Vector3.zero;
            body.transform.eulerAngles   = Vector3.zero;

            SkinnedMeshRenderer skr = body.AddComponent <SkinnedMeshRenderer>();

            skr.sharedMesh     = shaderMesh;
            skr.bones          = bones.ToArray();
            skr.sharedMaterial = newMaterial;
        }
コード例 #13
0
ファイル: Server.cs プロジェクト: wangjunsheng/SparkServer
        private void Boot(BootServices customBoot)
        {
            // create global instance first
            m_globalMQ     = GlobalMQ.GetInstance();
            m_serviceSlots = ServiceSlots.GetInstance();
            m_netpackQueue = NetworkPacketQueue.GetInstance();
            m_timer        = SSTimer.GetInstance();

            NetProtocol.GetInstance();

            // create logger service second
            Logger_Init loggerInit = new Logger_Init();

            if (m_bootConfig.ContainsKey("Logger"))
            {
                if (Directory.Exists(m_bootConfig["Logger"].ToString()))
                {
                    loggerInit.logger_path = Path.GetFullPath(m_bootConfig["Logger"].ToString());
                }
                else
                {
                    DirectoryInfo di = Directory.CreateDirectory(m_bootConfig["Logger"].ToString());
                    if (di.Exists)
                    {
                        loggerInit.logger_path = Path.GetFullPath(m_bootConfig["Logger"].ToString());
                    }
                    else
                    {
                        loggerInit.logger_path = "../";
                    }
                }
            }
            else
            {
                loggerInit.logger_path = "../";
            }
            SparkServerUtility.NewService("SparkServer.Framework.Service.Logger.LoggerService", "logger", loggerInit.encode());

            m_tcpObjectContainer = new TCPObjectContainer();
            if (m_bootConfig.ContainsKey("ClusterConfig"))
            {
                InitCluster();
            }

            if (m_bootConfig.ContainsKey("Gateway"))
            {
                InitGateway();
            }

            customBoot();

            LoggerHelper.Info(0, "Start SparkServer Server...");

            for (int i = 0; i < m_workerNum; i++)
            {
                Thread thread = new Thread(new ThreadStart(ThreadWorker));
                thread.Start();
            }

            Thread timerThread = new Thread(new ThreadStart(ThreadTimer));

            timerThread.Start();
        }
コード例 #14
0
    public static void Execute()
    {
        SSUtil.Log("executing {0}", typeof(T05_matrix).Name);

        // testing correctness

        ResetRandomly();
        Matrix4x4 r0 = _m1 * _m2;
        Matrix4x4 r1 = SSMatrix.Mul_v1_naive(_m1, _m2);
        Matrix4x4 r2 = SSMatrix.Mul_v2_naive_expanded(_m1, _m2);
        Matrix4x4 r3 = Matrix4x4.zero;

        SSMatrix.Mul_v3_ref(ref r3, ref _m1, ref _m2);
        SSUtil.Assert(r0 == r1, "matrix r1 bad result.");
        SSUtil.Assert(r0 == r2, "matrix r2 bad result.");
        SSUtil.Assert(r0 == r3, "matrix r3 bad result.");

        // 'Mul_v4_for_3d_trans' always produce the same 4th row
        Matrix4x4 r4 = Matrix4x4.zero;

        SSMatrix.Mul_v4_for_3d_trans(ref r4, ref _m1, ref _m2);
        Matrix4x4 r4_target = r0;

        r4_target.SetRow(3, new Vector4(0.0f, 0.0f, 0.0f, 1.0f));
        SSUtil.Assert(r4 == r4_target, "matrix r4 bad result.");

        // testing performances

        Matrix4x4 ret = Matrix4x4.zero;

        ResetRandomly();
        using (SSTimer t = new SSTimer("_test_mat_mul: Unity Built-In_"))
        {
            for (int i = 0; i < NUM; i++)
            {
                ret = _m1 * _m2;
            }
        }

        ResetRandomly();
        using (SSTimer t = new SSTimer("_test_mat_mul: v1 - Naive Implementation_"))
        {
            for (int i = 0; i < NUM; i++)
            {
                ret = SSMatrix.Mul_v1_naive(_m1, _m2);
            }
        }

        ResetRandomly();
        using (SSTimer t = new SSTimer("_test_mat_mul: v2 - Naive (Expanded)_"))
        {
            for (int i = 0; i < NUM; i++)
            {
                ret = SSMatrix.Mul_v2_naive_expanded(_m1, _m2);
            }
        }

        ResetRandomly();
        using (SSTimer t = new SSTimer("_test_mat_mul: v3 - ref passed & returned_"))
        {
            for (int i = 0; i < NUM; i++)
            {
                SSMatrix.Mul_v3_ref(ref ret, ref _m1, ref _m2);
            }
        }

        ResetRandomly();
        using (SSTimer t = new SSTimer("_test_mat_mul: v4 - for 3d transform only_"))
        {
            for (int i = 0; i < NUM; i++)
            {
                SSMatrix.Mul_v4_for_3d_trans(ref ret, ref _m1, ref _m2);
            }
        }
    }
コード例 #15
0
ファイル: T05_matrix.cs プロジェクト: rvpoochen/u3d_practice
    public static void Execute()
    {
        SSUtil.Log("executing {0}", typeof(T05_matrix).Name);

        // testing correctness

        ResetRandomly();
        Matrix4x4 r0 = _m1 * _m2;
        Matrix4x4 r1 = SSMatrix.Mul_v1_naive(_m1, _m2);
        Matrix4x4 r2 = SSMatrix.Mul_v2_naive_expanded(_m1, _m2);
        Matrix4x4 r3 = Matrix4x4.zero;
        SSMatrix.Mul_v3_ref(ref r3, ref _m1, ref _m2);
        SSUtil.Assert(r0 == r1, "matrix r1 bad result.");
        SSUtil.Assert(r0 == r2, "matrix r2 bad result.");
        SSUtil.Assert(r0 == r3, "matrix r3 bad result.");

        // 'Mul_v4_for_3d_trans' always produce the same 4th row
        Matrix4x4 r4 = Matrix4x4.zero;
        SSMatrix.Mul_v4_for_3d_trans(ref r4, ref _m1, ref _m2);
        Matrix4x4 r4_target = r0;
        r4_target.SetRow(3, new Vector4(0.0f, 0.0f, 0.0f, 1.0f));
        SSUtil.Assert(r4 == r4_target, "matrix r4 bad result.");

        // testing performances

        Matrix4x4 ret = Matrix4x4.zero;

        ResetRandomly();
        using (SSTimer t = new SSTimer("_test_mat_mul: Unity Built-In_"))
        {
            for (int i = 0; i < NUM; i++)
            {
                ret = _m1 * _m2;
            }
        }

        ResetRandomly();
        using (SSTimer t = new SSTimer("_test_mat_mul: v1 - Naive Implementation_"))
        {
            for (int i = 0; i < NUM; i++)
            {
                ret = SSMatrix.Mul_v1_naive(_m1, _m2);
            }
        }

        ResetRandomly();
        using (SSTimer t = new SSTimer("_test_mat_mul: v2 - Naive (Expanded)_"))
        {
            for (int i = 0; i < NUM; i++)
            {
                ret = SSMatrix.Mul_v2_naive_expanded(_m1, _m2);
            }
        }

        ResetRandomly();
        using (SSTimer t = new SSTimer("_test_mat_mul: v3 - ref passed & returned_"))
        {
            for (int i = 0; i < NUM; i++)
            {
                SSMatrix.Mul_v3_ref(ref ret, ref _m1, ref _m2);
            }
        }

        ResetRandomly();
        using (SSTimer t = new SSTimer("_test_mat_mul: v4 - for 3d transform only_"))
        {
            for (int i = 0; i < NUM; i++)
            {
                SSMatrix.Mul_v4_for_3d_trans(ref ret, ref _m1, ref _m2);
            }
        }
    }