コード例 #1
0
ファイル: LMS.cs プロジェクト: MRKDaGods/LMS-CriticalOps-2017
    void ProcessTouchEvt()
    {
        Event e = Event.current;

        if (e.type == EventType.MouseDown)
        {
            EditorCallback ecb = GetElementAt(e.mousePosition);
            if (ecb != null)
            {
                SelectedCallback = ecb;
            }
            MDown = true;
        }
        if (e.type == EventType.MouseDrag)
        {
            if (MDown)
            {
                if (SelectedCallback != null)
                {
                    switch (Mode)
                    {
                    case 1:
                        SelectedCallback.GetConfig().Rect.width += e.delta.x;
                        SelectedCallback.GetConfig().Rect.height += e.delta.y;
                        break;

                    case 0:
                        SelectedCallback.GetConfig().Rect.x += e.delta.x;
                        SelectedCallback.GetConfig().Rect.y += e.delta.y;
                        break;

                    case 2:
                        if (e.delta.x > 1f || e.delta.y > 1f)
                        {
                            SelectedCallback.GetConfig().Rect.width += e.delta.x;
                            SelectedCallback.GetConfig().Rect.height += e.delta.y;
                        }
                        else
                        {
                            SelectedCallback.GetConfig().Rect.width -= e.delta.x;
                            SelectedCallback.GetConfig().Rect.height -= e.delta.y;
                        }
                        break;
                    }
                }
            }
        }
        if (e.type == EventType.MouseUp)
        {
            MDown = false;
        }
    }
コード例 #2
0
        private static ThreadGroup StartCPU(DataType type, HeadsetModel headset, ElectrodePattern pattern, ElectrodeLayout layout, string path)
        {
            // declare colour matrix and electrodes (if needed)
            var matrix     = new Color[headset.GetWidth(), headset.GetHeight()];
            var electrodes = type == DataType.Phosphene ? pattern.GetElectrodePositions(layout)
                                                                                                                : default;

            // setup threadGroup
            var threadGroup = new ThreadGroup();

            threadGroup.OnAllThreadsFinished += () =>
            {
                EditorCallback.InvokeOnMainThread(() =>
                {
                    var asset = headset.CreateTexture();
                    asset.SetPixels(matrix.Flatten(false, true, true));
                    asset.Apply();
                    SaveAsset(asset, path);
                });
            };

            // generate the texture asynchronously
            threadGroup.ProcessArray(headset.GetWidth(), (i) =>
            {
                var n = headset.GetHeight();
                for (int j = 0; j < n; j++)
                {
                    switch (type)
                    {
                    case DataType.Phosphene:
                        matrix[i, j] = PhospheneMatrix.CalculatePoint(i, j, headset, electrodes).ToColour();
                        matrix[i, j] = AddRandomSeeds(matrix[i, j]);
                        break;

                    case DataType.Axon:
                        matrix[i, j] = AxonMatrix.CalculatePoint(i, j, headset).Colour;
                        break;
                    }
                }
            });

            // provide caller with threadGroup for completion statistics
            return(threadGroup);
        }