Esempio n. 1
0
        public IEnumerable <Row> Run(Process process)
        {
            var result = Enumerable.Empty <Row>();

            if (!process.IsReady())
            {
                return(result);
            }

            var timer = new Stopwatch();

            timer.Start();

            process.Setup();

            var fileName = new FileInfo(Path.Combine(Common.GetTemporaryFolder(process.Name), "MetaData.xml")).FullName;
            var writer   = new MetaDataWriter(process);

            File.WriteAllText(fileName, writer.Write(), Encoding.UTF8);
            System.Diagnostics.Process.Start(fileName);

            timer.Stop();
            process.Logger.Info("Calculated metadata in {0}.", timer.Elapsed);
            process.Complete = true;
            return(result);
        }
Esempio n. 2
0
    // called by anyone
    public void Init()
    {
        if (GlobalHandler.modality == 0 || GlobalHandler.modality == 2)
        {
            if (GameObject.Find("HeadPosePoint") != null)
            {
                GameObject.Find("HeadPosePoint").SetActive(false);
            }
        }
        if (GlobalHandler.modality == 1 || GlobalHandler.modality == 2)
        {
            if (GameObject.Find("[VRGazeTrail]") != null)
            {
                GameObject.Find("[VRGazeTrail]").SetActive(false);
            }
        }
        foreach (GameObject pin in GameObject.FindGameObjectsWithTag("PIN"))
        {
            materialholderList.Add(new MaterialHolder(pin.GetComponent <MeshRenderer>().material, pin.gameObject));
        }
        currentGameobject = null;
        // Get EyeTracker unity object
        _eyeTracker = Tobii.Research.Unity.VREyeTracker.Instance;
        if (_eyeTracker == null)
        {
            Debug.Log("Failed to find eye tracker, has it been added to scene?");
        }

        _gazeTrail = Tobii.Research.Unity.VRGazeTrail.Instance;

        _highlightInfo = new ActiveObject();

        selectedPINS = new List <String>();

        inputtime     = 0;
        fullinputtime = 0;
        started       = false;
        stopped       = false;
        // not relevant but we need it because of the current implementation
        passwordmodel = new PasswordModel(new List <String>()
        {
            "POSX1G", "POSX1G", "POSX1G", "POSX1G"
        }, 4);
        //
        fw       = GameObject.Find("Storage").GetComponent <CreativityWriter>();
        mdfw     = GameObject.Find("Storage").GetComponent <MetaDataWriter>();
        fullfw   = GameObject.Find("Storage").GetComponent <FullCreativityWriter>();
        fullmdfw = GameObject.Find("Storage").GetComponent <FullMetaDataWriter>();
        fullfw.StartRecording();
        fullmdfw.StartRecording();
        //Debug.Log(GameObject.Find("Planes").transform.rotation);
        feedbackElements = new List <FeedbackModel>();
        feedbacktime     = 0.4f;
    }
 // Start is called before the first frame update
 void Start()
 {
     started       = false;
     stopped       = false;
     passwordmodel = new PasswordModel(new List <String>()
     {
         "POS1", "POS2", "POS3", "POS4"
     }, 4);
     fw   = GameObject.Find("Storage").GetComponent <FileWriter>();
     mdfw = GameObject.Find("Storage").GetComponent <MetaDataWriter>();
     hand = GameObject.FindWithTag("Right").GetComponent <HandTappingOnly>();
 }
Esempio n. 4
0
        public PsoFile Build(IPsoValue value)
        {
            MetaInitialize();
            MetaBuildStructuresAndEnums();

            var writer = new MetaDataWriter(Data.Endianess.BigEndian);

            writer.SelectBlockByNameHash(((PsoStructure)value).psoEntryInfo.NameHash);
            WriteStructure(writer, (PsoStructure)value);

            meta.DataMappingSection.Entries = new List <PsoDataMappingEntry>();

            var ms = new MemoryStream();

            ms.Position = 16;
            foreach (var block in writer.Blocks)
            {
                var metaDataBlock = new PsoDataMappingEntry();
                metaDataBlock.NameHash = block.NameHash;
                metaDataBlock.Offset   = (int)ms.Position;
                metaDataBlock.Length   = (int)block.Stream.Length;

                var buf = new byte[block.Stream.Length];
                block.Stream.Position = 0;
                block.Stream.Read(buf, 0, buf.Length);
                ms.Write(buf, 0, buf.Length);

                // fill...
                buf = new byte[16 - ms.Position % 16];
                if (buf.Length != 16)
                {
                    ms.Write(buf, 0, buf.Length);
                }

                meta.DataMappingSection.Entries.Add(metaDataBlock);
            }

            var totalBuf = new byte[ms.Length];

            ms.Position = 0;
            ms.Read(totalBuf, 0, totalBuf.Length);
            meta.DataSection.Data = totalBuf;

            for (int i = 0; i < meta.DataMappingSection.Entries.Count; i++)
            {
                if (meta.DataMappingSection.Entries[i].NameHash == ((PsoStructure)value).psoEntryInfo.NameHash)
                {
                    meta.DataMappingSection.RootIndex = i + 1;
                }
            }

            return(meta);
        }
Esempio n. 5
0
        internal MethodILWriter(CILReflectionContextImpl ctx, MetaDataWriter md, CILMethodBase method, EmittingAssemblyMapper mapper)
        {
            var methodIL = (MethodILImpl)method.MethodIL;

            this._method            = method;
            this._methodIL          = methodIL;
            this._metaData          = md;
            this._assemblyMapper    = mapper;
            this._ilCode            = new Byte[methodIL._opCodes.Sum(info => info.MaxSize)];
            this._ilCodeCount       = 0;
            this._methodILOffset    = 0;
            this._opCodeInfoOffsets = new Int32[methodIL._opCodes.Count];
            this._labelInfos        = new LabelEmittingInfo[methodIL._branchTargetsCount];
            this._labelInfoIndex    = 0;

            this._stackSizes   = new Dictionary <Int32, Int32>();
            this._currentStack = 0;
            this._maxStack     = 0;
        }
Esempio n. 6
0
        public ActionResult MetaData(int id)
        {
            Response.AddHeader("Access-Control-Allow-Origin", "*");
            ConfigurationPart part;
            ApiRequest        request;

            var query = _transformalize.GetQuery();

            foreach (var rejection in _apiService.Rejections(id, out request, out part))
            {
                return(rejection.ContentResult(
                           query["format"],
                           query["flavor"]
                           ));
            }

            request.RequestType = ApiRequestType.MetaData;
            var transformalizeRequest = new TransformalizeRequest(part, query, null, Logger);
            var logger = new TransformalizeLogger(transformalizeRequest.Part.Title(), part.LogLevel, Logger, OrchardVersion, _moduleVersion);

            var errors = transformalizeRequest.Root.Errors();

            if (errors.Any())
            {
                var bad = new TransformalizeResponse();
                request.Status  = 501;
                request.Message = "Configuration Problem" + errors.Length.Plural();
                bad.Log.AddRange(errors.Select(p => new[] { DateTime.Now.ToString(CultureInfo.InvariantCulture), "error", ".", ".", p }));
                return(new ApiResponse(request, "<tfl></tfl>", bad).ContentResult(
                           query["format"],
                           query["flavor"]
                           ));
            }

            var metaData = new MetaDataWriter(ProcessFactory.CreateSingle(transformalizeRequest.Root.Processes[0], logger, new Options {
                Mode = "metadata"
            })).Write();

            return(new ApiResponse(request, metaData).ContentResult(
                       query["format"],
                       query["flavor"]
                       ));
        }
Esempio n. 7
0
        public Meta_GTA5_pc Build(IMetaValue value)
        {
            MetaInitialize();
            MetaBuildStructuresAndEnums();

            var writer = new MetaDataWriter();

            writer.SelectBlockByNameHash(((MetaStructure)value).info.StructureNameHash);
            WriteStructure(writer, (MetaStructure)value);

            for (int k = meta.StructureInfos.Count - 1; k >= 0; k--)
            {
                if (!usedStructureKeys.Contains(meta.StructureInfos[k].StructureKey))
                {
                    meta.StructureInfos.RemoveAt(k);
                }
            }

            meta.DataBlocks = new ResourceSimpleArray <DataBlock_GTA5_pc>();
            foreach (var block in writer.Blocks)
            {
                var metaDataBlock = new DataBlock_GTA5_pc();
                metaDataBlock.StructureNameHash = block.NameHash;
                metaDataBlock.Data = StreamToResourceBytes(block.Stream);
                meta.DataBlocks.Add(metaDataBlock);
            }

            for (int i = 0; i < meta.DataBlocks.Count; i++)
            {
                if (meta.DataBlocks[i].StructureNameHash == ((MetaStructure)value).info.StructureNameHash)
                {
                    meta.RootBlockIndex = i + 1;
                }
            }

            return(meta);
        }
Esempio n. 8
0
    // called by anyone
    public void Init()
    {
        if (GlobalHandler.modality == 0 || GlobalHandler.modality == 2)
        {
            if (GameObject.Find("HeadPosePoint") != null)
            {
                GameObject.Find("HeadPosePoint").SetActive(false);
            }
        }
        if (GlobalHandler.modality == 1 || GlobalHandler.modality == 2)
        {
            if (GameObject.Find("[VRGazeTrail]") != null)
            {
                GameObject.Find("[VRGazeTrail]").SetActive(false);
            }
        }
        foreach (GameObject pin in GameObject.FindGameObjectsWithTag("PIN"))
        {
            materialholderList.Add(new MaterialHolder(pin.GetComponent <MeshRenderer>().material, pin.gameObject));
        }
        if (GlobalHandler.attackerscenario == 99) // which meas the expert observation attack is running
        {
            foreach (MaterialHolder materialobj in materialholderList)
            {
                materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
            }
            passwordmodel = new PasswordModel(new List <String>()
            {
                "POSX1W", "POSX3W", "POSX5G", "POSX6O"
            }, 4);
        }
        // change this area for each participant to ensure no follow-up effects

        /*
         *
         *                          START
         */
        // for each participant, create file

        if (GlobalHandler.attackerscenario == 1)
        {
            if (GlobalHandler.modality == 0)
            {
                switch (trials)
                {
                case 0:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX4G", "POSX2R", "POSX5R", "POSX8R"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX4G", "POSX2R", "POSX5R", "POSX8R"
                    });
                    break;

                case 1:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX8W", "POSX6R", "POSX4R", "POSX2G"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX8W", "POSX6R", "POSX4R", "POSX2G"
                    });
                    break;

                case 2:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX1W", "POSX1R", "POSX1B", "POSX1O"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX1W", "POSX1R", "POSX1B", "POSX1O"
                    });
                    break;

                case 3:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX1G", "POSX3G", "POSX7G", "POSX9G"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX1G", "POSX3G", "POSX7G", "POSX9G"
                    });
                    break;
                }
            }
            if (GlobalHandler.modality == 1)
            {
                switch (trials)
                {
                case 0:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX1G", "POSX4G", "POSX7G", "POSX8G"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX1G", "POSX4G", "POSX7G", "POSX8G"
                    });
                    break;

                case 1:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX1G", "POSX1W", "POSX2O", "POSX2B"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX1G", "POSX1W", "POSX2O", "POSX2B"
                    });
                    break;

                case 2:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX6G", "POSX2O", "POSX3O", "POSX4G"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX6G", "POSX2O", "POSX3O", "POSX4G"
                    });
                    break;

                case 3:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX5G", "POSX4G", "POSX1W", "POSX2W"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX5G", "POSX4G", "POSX1W", "POSX2W"
                    });
                    break;
                }
            }
            if (GlobalHandler.modality == 2)
            {
                switch (trials)
                {
                case 0:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX5W", "POSX4O", "POSX6W", "POSX9W"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX5W", "POSX4O", "POSX6W", "POSX9W"
                    });
                    break;

                case 1:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX4O", "POSX6W", "POSX5G", "POSX8R"
                    }, 4);

                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX4O", "POSX6W", "POSX5G", "POSX8R"
                    });
                    break;

                case 2:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX3G", "POSX6G", "POSX9G", "POSX3W"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX3G", "POSX6G", "POSX9G", "POSX3W"
                    });
                    break;

                case 3:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX9G", "POSX7G", "POSX5G", "POSX3G"
                    }, 4);

                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX9G", "POSX7G", "POSX5G", "POSX3G"
                    });
                    break;
                }
            }
        }

        if (GlobalHandler.attackerscenario == 2)
        {
            if (GlobalHandler.modality == 0)
            {
                switch (trials)
                {
                case 0:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX4W", "POSX5W", "POSX6W", "POSX7W"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX4W", "POSX5W", "POSX6W", "POSX7W"
                    });
                    break;

                case 1:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX4W", "POSX5W", "POSX6W", "POSX6R"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX4W", "POSX5W", "POSX6W", "POSX6R"
                    });
                    break;

                case 2:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX1G", "POSX2G", "POSX3O", "POSX4B"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX1G", "POSX2G", "POSX3O", "POSX4B"
                    });
                    break;

                case 3:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX5G", "POSX6W", "POSX7R", "POSX8G"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX5G", "POSX6W", "POSX7R", "POSX8G"
                    });
                    break;
                }
            }
            if (GlobalHandler.modality == 1)
            {
                switch (trials)
                {
                case 0:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX3G", "POSX6G", "POSX2G", "POSX1G"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX3G", "POSX6G", "POSX2G", "POSX1G"
                    });
                    break;

                case 1:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX3G", "POSX3O", "POSX2O", "POSX1O"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX3G", "POSX3O", "POSX2O", "POSX1O"
                    });
                    break;

                case 2:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX4G", "POSX6G", "POSX5O", "POSX5B"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX4G", "POSX6G", "POSX5O", "POSX5B"
                    });
                    break;

                case 3:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX1O", "POSX5W", "POSX3R", "POSX7B"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX1O", "POSX5W", "POSX3R", "POSX7B"
                    });
                    break;
                }
            }
            if (GlobalHandler.modality == 2)
            {
                switch (trials)
                {
                case 0:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX2G", "POSX4R", "POSX6O", "POSX8B"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX2G", "POSX4R", "POSX6O", "POSX8B"
                    });
                    break;

                case 1:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX7W", "POSX9R", "POSX9B", "POSX8B"
                    }, 4);

                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX7W", "POSX9R", "POSX9B", "POSX8B"
                    });
                    break;

                case 2:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX5G", "POSX7G", "POSX6G", "POSX8G"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX5G", "POSX7G", "POSX6G", "POSX8G"
                    });
                    break;

                case 3:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX2G", "POSX2W", "POSX5W", "POSX8W"
                    }, 4);

                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX2G", "POSX2W", "POSX5W", "POSX8W"
                    });
                    break;
                }
            }
        }

        if (GlobalHandler.attackerscenario == 3)
        {
            if (GlobalHandler.modality == 0)
            {
                switch (trials)
                {
                case 0:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX9G", "POSX5G", "POSX1G", "POSX2G"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX9G", "POSX5G", "POSX1G", "POSX2G"
                    });
                    break;

                case 1:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX3G", "POSX4W", "POSX3O", "POSX4B"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX3G", "POSX4W", "POSX3O", "POSX4B"
                    });
                    break;

                case 2:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX1G", "POSX1O", "POSX2O", "POSX3O"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX1G", "POSX1O", "POSX2O", "POSX3O"
                    });
                    break;

                case 3:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX1W", "POSX3W", "POSX5G", "POSX6O"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX1W", "POSX3W", "POSX5G", "POSX6O"
                    });
                    break;
                }
            }
            if (GlobalHandler.modality == 1)
            {
                switch (trials)
                {
                case 0:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX5R", "POSX3W", "POSX7G", "POSX9B"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX5R", "POSX3W", "POSX7G", "POSX9B"
                    });
                    break;

                case 1:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX5G", "POSX6G", "POSX8G", "POSX9G"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX5G", "POSX6G", "POSX8G", "POSX9G"
                    });
                    break;

                case 2:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX2W", "POSX8G", "POSX7G", "POSX3R"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX2W", "POSX8G", "POSX7G", "POSX3R"
                    });
                    break;

                case 3:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX5W", "POSX5B", "POSX6B", "POSX7B"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX5W", "POSX5B", "POSX6B", "POSX7B"
                    });
                    break;
                }
            }
            if (GlobalHandler.modality == 2)
            {
                switch (trials)
                {
                case 0:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX9W", "POSX3B", "POSX5B", "POSX7B"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX9W", "POSX3B", "POSX5B", "POSX7B"
                    });
                    break;

                case 1:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX2W", "POSX4W", "POSX6W", "POSX8W"
                    }, 4);

                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX2W", "POSX4W", "POSX6W", "POSX8W"
                    });
                    break;

                case 2:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX2G", "POSX2W", "POSX2R", "POSX3R"
                    }, 4);
                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX2G", "POSX2W", "POSX2R", "POSX3R"
                    });
                    break;

                case 3:
                    foreach (MaterialHolder materialobj in materialholderList)
                    {
                        materialobj.Gameobject.GetComponent <MeshRenderer>().material = materialobj.Material;
                    }
                    passwordmodel = new PasswordModel(new List <String>()
                    {
                        "POSX6G", "POSX1W", "POSX9R", "POSX5B"
                    }, 4);

                    pwGenerator.generateCube(new List <string>()
                    {
                        "POSX6G", "POSX1W", "POSX9R", "POSX5B"
                    });
                    break;
                }
            }
        }

        /*
         *
         *                          END
         */

        currentGameobject = null;
        // Get EyeTracker unity object
        _eyeTracker = Tobii.Research.Unity.VREyeTracker.Instance;
        if (_eyeTracker == null)
        {
            Debug.Log("Failed to find eye tracker, has it been added to scene?");
        }

        _gazeTrail = Tobii.Research.Unity.VRGazeTrail.Instance;

        _highlightInfo = new ActiveObject();

        selectedPINS = new List <String>();

        inputtime     = 0;
        fullinputtime = 0;
        started       = false;
        stopped       = false;
        // not relevant but we need it because of the current implementation
        //passwordmodel = new PasswordModel(new List<String>() { "POSX1G", "POSX1G", "POSX1G", "POSX1G" }, 4);
        //
        //fw = GameObject.Find("Storage").GetComponent<SecurityWriter>();
        mdfw     = GameObject.Find("Storage").GetComponent <MetaDataWriter>();
        fullfw   = GameObject.Find("Storage").GetComponent <FullSecurityWriter>();
        fullmdfw = GameObject.Find("Storage").GetComponent <FullMetaDataWriter>();
        //fullfw.StartRecording();
        fullmdfw.StartRecording();
        //Debug.Log(GameObject.Find("Planes").transform.rotation);
        feedbackElements = new List <FeedbackModel>();
        feedbacktime     = 0.4f;
    }
Esempio n. 9
0
        private void WriteStructure(MetaDataWriter writer, PsoStructure value)
        {
            var updateStack = new Stack <IPsoValue>();

            // build stack for update...
            var structuresToCheck = new Stack <PsoStructure>();

            structuresToCheck.Push(value);
            while (structuresToCheck.Count > 0)
            {
                var structureToCheck = structuresToCheck.Pop();

                // add structure to list of occurring structures
                usedStructureKeys.Add(structureToCheck.psoEntryInfo.NameHash);

                foreach (var structureEntryToCheck in structureToCheck.Values)
                {
                    if (structureEntryToCheck.Value is PsoArray)
                    {
                        updateStack.Push(structureEntryToCheck.Value);

                        var arrayStructureEntryToCheck = structureEntryToCheck.Value as PsoArray;
                        if (arrayStructureEntryToCheck.Entries != null)
                        {
                            for (int k = arrayStructureEntryToCheck.Entries.Count - 1; k >= 0; k--)
                            {
                                var x = arrayStructureEntryToCheck.Entries[k];
                                if (x is PsoStructure)
                                {
                                    structuresToCheck.Push(x as PsoStructure);
                                }
                            }
                        }
                    }
                    if (structureEntryToCheck.Value is PsoStructure)
                    {
                        structuresToCheck.Push((PsoStructure)structureEntryToCheck.Value);
                    }
                }
            }

            // update structures...
            while (updateStack.Count > 0)
            {
                var v = updateStack.Pop();
                if (v is PsoArray)
                {
                    var arrayValue = (PsoArray)v;
                    if (arrayValue.Entries != null)
                    {
                        if (arrayValue.psoSection.Type == DataType.Structure)
                        {
                            writer.SelectBlockByNameHash((int)arrayValue.psoSection.ReferenceKey);
                            writer.Position = writer.Length;
                        }
                        else if (arrayValue.psoSection.Type == DataType.INT_0Bh)
                        {
                            writer.SelectBlockByNameHash(6);
                            writer.Position = writer.Length;
                        }
                        else
                        {
                            throw new Exception("Unknown array type.");
                        }



                        arrayValue.BlockIndex      = writer.BlockIndex + 1;
                        arrayValue.Offset          = (int)writer.Position;
                        arrayValue.NumberOfEntries = arrayValue.Entries.Count;
                        foreach (var entry in arrayValue.Entries)
                        {
                            entry.Write(writer);
                        }
                    }
                    else
                    {
                        arrayValue.BlockIndex      = 0;
                        arrayValue.Offset          = 0;
                        arrayValue.NumberOfEntries = 0;
                    }
                }
            }

            // now only the root itself is left...
            writer.SelectBlockByNameHash(value.psoEntryInfo.NameHash);
            writer.Position = writer.Length;
            value.Write(writer);
        }
    // called by anyone
    public void Init()
    {
        Debug.Log("trigger countercalls" + counterCalls);
        if (GlobalHandler.training)
        {
            passwordmodel = new PasswordModel(new List <String>()
            {
                "POSX1Y", "POSX2Y", "POSX3Y", "POSX4Y"
            }, 4);
        }
        else
        {
            switch (GlobalHandler.password)
            {
            case 1:
                passwordmodel = new PasswordModel(new List <String>()
                {
                    "POSX1G", "POSX2G", "POSX3G", "POSX4G"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword0S1");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX1G", "POSX2G", "POSX3G", "POSX4G"
                });
                break;

            case 2:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX3G", "POSX4G", "POSX5G", "POSX6G"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword0S2");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX3G", "POSX4G", "POSX5G", "POSX6G"
                });

                break;

            case 3:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX3G", "POSX7G", "POSX9G"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword0S3");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX1G", "POSX3G", "POSX7G", "POSX9G"
                });

                break;

            case 4:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX5G", "POSX6G", "POSX7G", "POSX8G"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword1S1");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX5G", "POSX6G", "POSX7G", "POSX8G"
                });

                break;

            case 5:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX6G", "POSX7G", "POSX8G", "POSX9G"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword1S2");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX6G", "POSX7G", "POSX8G", "POSX9G"
                });

                break;

            case 6:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX2G", "POSX8G", "POSX9G"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword1S3");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX1G", "POSX2G", "POSX8G", "POSX9G"
                });

                break;

            case 7:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX9G", "POSX6G", "POSX5R", "POSX6R"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword2S1");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX9G", "POSX6G", "POSX5R", "POSX6R"
                });

                break;

            case 8:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX9G", "POSX1W", "POSX2W"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword2S2");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX1G", "POSX9G", "POSX1W", "POSX2W"
                });

                break;

            case 9:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX4G", "POSX5G", "POSX6G", "POSX5B"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword2S3");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX4G", "POSX5G", "POSX6G", "POSX5B"
                });

                break;

            case 10:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX7G", "POSX8G", "POSX1R", "POSX2R"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword3S1");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX7G", "POSX8G", "POSX1R", "POSX2R"
                });

                break;

            case 11:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX5G", "POSX1W", "POSX2W", "POSX3W"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword3S2");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX5G", "POSX1W", "POSX2W", "POSX3W"
                });

                break;

            case 12:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX9G", "POSX8G", "POSX1B", "POSX2B"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword3S3");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX9G", "POSX8G", "POSX1B", "POSX2B"
                });

                break;

            case 13:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX4G", "POSX1W", "POSX2W", "POSX1O"
                }, 4);
                //password.GetComponent<RawImage>().texture = null;
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX4G", "POSX1W", "POSX2W", "POSX1O"
                });
                break;

            case 14:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX2G", "POSX5R", "POSX1W"
                }, 4);
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX1G", "POSX2G", "POSX5R", "POSX1W"
                });
                //password.GetComponent<RawImage>().texture = null;

                break;

            case 15:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX5G", "POSX5R", "POSX5B", "POSX6B"
                }, 4);
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX5G", "POSX5R", "POSX5B", "POSX6B"
                });
                //password.GetComponent<RawImage>().texture = null;

                break;

            case 16:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX4G", "POSX4W", "POSX6W", "POSX5O"
                }, 4);
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX4G", "POSX4W", "POSX6W", "POSX5O"
                });
                //password.GetComponent<RawImage>().texture = null;

                break;

            case 17:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX5G", "POSX5R", "POSX1W", "POSX2W"
                }, 4);
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX5G", "POSX5R", "POSX1W", "POSX2W"
                });
                //password.GetComponent<RawImage>().texture = null;

                break;

            case 18:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX7G", "POSX7W", "POSX9W", "POSX7O"
                }, 4);
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX7G", "POSX7W", "POSX9W", "POSX7O"
                });
                //password.GetComponent<RawImage>().texture = null;

                break;

            case 19:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX7G", "POSX5W", "POSX9B", "POSX7R"
                }, 4);
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX7G", "POSX5W", "POSX9B", "POSX7R"
                });
                //password.GetComponent<RawImage>().texture = null;

                break;

            case 20:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX3G", "POSX3W", "POSX4O", "POSX5R"
                }, 4);
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX3G", "POSX3W", "POSX4O", "POSX5R"
                });
                // password.GetComponent<RawImage>().texture = null;

                break;

            case 21:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX2G", "POSX3O", "POSX4B", "POSX5W"
                }, 4);
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX2G", "POSX3O", "POSX4B", "POSX5W"
                });
                // password.GetComponent<RawImage>().texture = null;

                break;

            case 22:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX5G", "POSX2W", "POSX5B", "POSX9R"
                }, 4);
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX5G", "POSX2W", "POSX5B", "POSX9R"
                });
                //password.GetComponent<RawImage>().texture = null;

                break;

            case 23:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX1W", "POSX5B", "POSX6O"
                }, 4);
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX1G", "POSX1W", "POSX5B", "POSX6O"
                });
                // password.GetComponent<RawImage>().texture = null;

                break;

            case 24:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX1W", "POSX1R", "POSX5B"
                }, 4);
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX1G", "POSX1W", "POSX1R", "POSX5B"
                });
                //password.GetComponent<RawImage>().texture = null;

                break;
            }
        }

        /*if (trials <= 1)
         * {
         *  password.GetComponent<RawImage>().texture = null;
         *  foreach (MaterialHolder materialobj in materialholderList)
         *  {
         *      materialobj.Gameobject.GetComponent<MeshRenderer>().material = materialobj.Material;
         *  }
         *
         * }*/

        currentGameobject = null;
        // Get EyeTracker unity object
        _eyeTracker = Tobii.Research.Unity.VREyeTracker.Instance;
        if (_eyeTracker == null)
        {
            Debug.Log("Failed to find eye tracker, has it been added to scene?");
        }

        _gazeTrail = Tobii.Research.Unity.VRGazeTrail.Instance;

        _highlightInfo = new ActiveObject();

        selectedPINS = new List <String>();

        inputtime          = 0;
        fullinputtime      = 0;
        started            = false;
        stopped            = false;
        timerfinalgazedata = 0.3f;
        fw       = GameObject.Find("Storage").GetComponent <FileWriter2>();
        mdfw     = GameObject.Find("Storage").GetComponent <MetaDataWriter>();
        fullfw   = GameObject.Find("Storage").GetComponent <FullFileWriter2>();
        fullmdfw = GameObject.Find("Storage").GetComponent <FullMetaDataWriter>();
        fullfw.StartRecording();
        fullmdfw.StartRecording();
        Debug.Log(GameObject.Find("Planes").transform.rotation);
    }
Esempio n. 11
0
    public void Init()
    {
        Debug.Log("headpose countercalls" + counterCalls);
        if (GlobalHandler.training)
        {
            passwordmodel = new PasswordModel(new List <String>()
            {
                "POSX1Y", "POSX2Y", "POSX3Y", "POSX4Y"
            }, 4);
        }
        else
        {
            switch (GlobalHandler.password)
            {
            case 1:
                passwordmodel = new PasswordModel(new List <String>()
                {
                    "POSX1G", "POSX2G", "POSX3G", "POSX4G"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword0S1");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX1G", "POSX2G", "POSX3G", "POSX4G"
                });
                break;

            case 2:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX3G", "POSX4G", "POSX5G", "POSX6G"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword0S2");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX3G", "POSX4G", "POSX5G", "POSX6G"
                });

                break;

            case 3:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX3G", "POSX7G", "POSX9G"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword0S3");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX1G", "POSX3G", "POSX7G", "POSX9G"
                });

                break;

            case 4:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX5G", "POSX6G", "POSX7G", "POSX8G"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword1S1");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX5G", "POSX6G", "POSX7G", "POSX8G"
                });

                break;

            case 5:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX6G", "POSX7G", "POSX8G", "POSX9G"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword1S2");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX6G", "POSX7G", "POSX8G", "POSX9G"
                });

                break;

            case 6:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX2G", "POSX8G", "POSX9G"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword1S3");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX1G", "POSX2G", "POSX8G", "POSX9G"
                });

                break;

            case 7:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX9G", "POSX6G", "POSX5R", "POSX6R"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword2S1");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX9G", "POSX6G", "POSX5R", "POSX6R"
                });

                break;

            case 8:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX9G", "POSX1W", "POSX2W"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword2S2");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX1G", "POSX9G", "POSX1W", "POSX2W"
                });

                break;

            case 9:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX4G", "POSX5G", "POSX6G", "POSX5B"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword2S3");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX4G", "POSX5G", "POSX6G", "POSX5B"
                });

                break;

            case 10:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX7G", "POSX8G", "POSX1R", "POSX2R"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword3S1");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX7G", "POSX8G", "POSX1R", "POSX2R"
                });

                break;

            case 11:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX5G", "POSX1W", "POSX2W", "POSX3W"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword3S2");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX5G", "POSX1W", "POSX2W", "POSX3W"
                });

                break;

            case 12:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX9G", "POSX8G", "POSX1B", "POSX2B"
                }, 4);
                //password.GetComponent<RawImage>().texture = (Texture2D)Resources.Load("Passwords/2DPassword3S3");
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX9G", "POSX8G", "POSX1B", "POSX2B"
                });

                break;

            case 13:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX4G", "POSX1W", "POSX2W", "POSX1O"
                }, 4);
                //password.GetComponent<RawImage>().texture = null;
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX4G", "POSX1W", "POSX2W", "POSX1O"
                });
                break;

            case 14:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX2G", "POSX5R", "POSX1W"
                }, 4);
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX1G", "POSX2G", "POSX5R", "POSX1W"
                });
                //password.GetComponent<RawImage>().texture = null;

                break;

            case 15:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX5G", "POSX5R", "POSX5B", "POSX6B"
                }, 4);
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX5G", "POSX5R", "POSX5B", "POSX6B"
                });
                //password.GetComponent<RawImage>().texture = null;

                break;

            case 16:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX4G", "POSX4W", "POSX6W", "POSX5O"
                }, 4);
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX4G", "POSX4W", "POSX6W", "POSX5O"
                });
                //password.GetComponent<RawImage>().texture = null;

                break;

            case 17:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX5G", "POSX5R", "POSX1W", "POSX2W"
                }, 4);
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX5G", "POSX5R", "POSX1W", "POSX2W"
                });
                //password.GetComponent<RawImage>().texture = null;

                break;

            case 18:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX7G", "POSX7W", "POSX9W", "POSX7O"
                }, 4);
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX7G", "POSX7W", "POSX9W", "POSX7O"
                });
                //password.GetComponent<RawImage>().texture = null;

                break;

            case 19:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX7G", "POSX5W", "POSX9B", "POSX7R"
                }, 4);
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX7G", "POSX5W", "POSX9B", "POSX7R"
                });
                //password.GetComponent<RawImage>().texture = null;

                break;

            case 20:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX3G", "POSX3W", "POSX4O", "POSX5R"
                }, 4);
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX3G", "POSX3W", "POSX4O", "POSX5R"
                });
                // password.GetComponent<RawImage>().texture = null;

                break;

            case 21:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX2G", "POSX3O", "POSX4B", "POSX5W"
                }, 4);
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX2G", "POSX3O", "POSX4B", "POSX5W"
                });
                // password.GetComponent<RawImage>().texture = null;

                break;

            case 22:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX5G", "POSX2W", "POSX5B", "POSX9R"
                }, 4);
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX5G", "POSX2W", "POSX5B", "POSX9R"
                });
                //password.GetComponent<RawImage>().texture = null;

                break;

            case 23:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX1W", "POSX5B", "POSX6O"
                }, 4);
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX1G", "POSX1W", "POSX5B", "POSX6O"
                });
                // password.GetComponent<RawImage>().texture = null;

                break;

            case 24:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX1W", "POSX1R", "POSX5B"
                }, 4);
                pwGenerator.generateCube(new List <string>()
                {
                    "POSX1G", "POSX1W", "POSX1R", "POSX5B"
                });
                //password.GetComponent<RawImage>().texture = null;

                break;
            }
        }

        /*if (trials <= 1)
         * {
         *  password.GetComponent<RawImage>().texture = null;
         *  foreach (MaterialHolder materialobj in materialholderList)
         *  {
         *      materialobj.Gameobject.GetComponent<MeshRenderer>().material = materialobj.Material;
         *  }
         *
         * }*/

        started = false;
        stopped = false;
        fw      = GameObject.Find("Storage").GetComponent <HeadPoseFileWriter>();
        mdfw    = GameObject.Find("Storage").GetComponent <MetaDataWriter>();
        hand    = GameObject.FindWithTag("Right").GetComponent <Hand>();
        //hand.Userinput.Clear();
        fullfw   = GameObject.Find("Storage").GetComponent <HeadPoseFullFileWriter>();
        fullmdfw = GameObject.Find("Storage").GetComponent <FullMetaDataWriter>();
        fullfw.StartRecording();
        fullmdfw.StartRecording();
        inputtime     = 0;
        fullinputtime = 0;
        //passwordmodel.reset();
    }
Esempio n. 12
0
        private void WriteStructure(MetaDataWriter writer, MetaStructure value)
        {
            var updateStack = new Stack <IMetaValue>();

            // build stack for update...
            var structuresToCheck = new Stack <MetaStructure>();

            structuresToCheck.Push(value);
            while (structuresToCheck.Count > 0)
            {
                var structureToCheck = structuresToCheck.Pop();

                // add structure to list of occurring structures
                usedStructureKeys.Add(structureToCheck.info.StructureKey);

                foreach (var structureEntryToCheck in structureToCheck.Values)
                {
                    if (structureEntryToCheck.Value is MetaArray)
                    {
                        updateStack.Push(structureEntryToCheck.Value);

                        var arrayStructureEntryToCheck = structureEntryToCheck.Value as MetaArray;
                        if (arrayStructureEntryToCheck.Entries != null)
                        {
                            for (int k = arrayStructureEntryToCheck.Entries.Count - 1; k >= 0; k--)
                            {
                                var x = arrayStructureEntryToCheck.Entries[k];
                                if (x is MetaStructure)
                                {
                                    structuresToCheck.Push(x as MetaStructure);
                                }
                                if (x is MetaGeneric)
                                {
                                    updateStack.Push(x);
                                    structuresToCheck.Push((MetaStructure)(x as MetaGeneric).Value);
                                }
                            }
                        }
                    }
                    if (structureEntryToCheck.Value is MetaCharPointer)
                    {
                        updateStack.Push(structureEntryToCheck.Value);
                    }
                    if (structureEntryToCheck.Value is MetaDataBlockPointer)
                    {
                        updateStack.Push(structureEntryToCheck.Value);
                    }
                    if (structureEntryToCheck.Value is MetaGeneric)
                    {
                        updateStack.Push(structureEntryToCheck.Value);

                        var genericStructureEntryToCheck = structureEntryToCheck.Value as MetaGeneric;
                        structuresToCheck.Push((MetaStructure)genericStructureEntryToCheck.Value);
                    }
                    if (structureEntryToCheck.Value is MetaStructure)
                    {
                        structuresToCheck.Push((MetaStructure)structureEntryToCheck.Value);
                    }
                }
            }

            // update structures...
            while (updateStack.Count > 0)
            {
                var v = updateStack.Pop();
                if (v is MetaArray)
                {
                    var arrayValue = (MetaArray)v;
                    if (arrayValue.Entries != null)
                    {
                        if (arrayValue.info.DataType == StructureEntryDataType.Structure)
                        {
                            // WORKAROUND
                            if (arrayValue.IsAlwaysAtZeroOffset)
                            {
                                writer.CreateBlockByNameHash(arrayValue.info.ReferenceKey);
                                writer.Position = writer.Length;
                            }
                            else
                            {
                                writer.SelectBlockByNameHash(arrayValue.info.ReferenceKey);
                                writer.Position = writer.Length;
                            }
                        }
                        else
                        {
                            writer.SelectBlockByNameHash((int)arrayValue.info.DataType);
                            writer.Position = writer.Length;
                        }
                        arrayValue.BlockIndex      = writer.BlockIndex + 1;
                        arrayValue.Offset          = (int)writer.Position;
                        arrayValue.NumberOfEntries = arrayValue.Entries.Count;
                        foreach (var entry in arrayValue.Entries)
                        {
                            entry.Write(writer);
                        }
                    }
                    else
                    {
                        arrayValue.BlockIndex      = 0;
                        arrayValue.Offset          = 0;
                        arrayValue.NumberOfEntries = 0;
                    }
                }
                if (v is MetaCharPointer)
                {
                    var charPointerValue = (MetaCharPointer)v;
                    if (charPointerValue.Value != null)
                    {
                        writer.SelectBlockByNameHash(0x10);
                        writer.Position = writer.Length;
                        charPointerValue.DataBlockIndex = writer.BlockIndex + 1;
                        charPointerValue.DataOffset     = (int)writer.Position;
                        charPointerValue.StringLength   = charPointerValue.Value.Length;
                        charPointerValue.StringCapacity = charPointerValue.Value.Length + 1;
                        writer.Write(charPointerValue.Value);
                    }
                    else
                    {
                        charPointerValue.DataBlockIndex = 0;
                        charPointerValue.DataOffset     = 0;
                        charPointerValue.StringLength   = 0;
                        charPointerValue.StringCapacity = 0;
                    }
                }
                if (v is MetaDataBlockPointer)
                {
                    var charPointerValue = (MetaDataBlockPointer)v;
                    if (charPointerValue.Data != null)
                    {
                        writer.CreateBlockByNameHash(0x11);
                        writer.Position             = 0;
                        charPointerValue.BlockIndex = writer.BlockIndex + 1;
                        writer.Write(charPointerValue.Data);
                    }
                    else
                    {
                        charPointerValue.BlockIndex = 0;
                    }
                }
                if (v is MetaGeneric)
                {
                    var genericValue = (MetaGeneric)v;
                    writer.SelectBlockByNameHash(((MetaStructure)genericValue.Value).info.StructureNameHash);
                    writer.Position         = writer.Length;
                    genericValue.BlockIndex = writer.BlockIndex + 1;
                    genericValue.Offset     = (int)writer.Position / 16;
                    genericValue.Value.Write(writer);
                }
            }

            // now only the root itself is left...
            writer.SelectBlockByNameHash(value.info.StructureNameHash);
            writer.Position = writer.Length;
            value.Write(writer);
        }
Esempio n. 13
0
        public void PerformEmitting(
            Stream sink,
            EmittingArguments eArgs
            )
        {
            ArgumentValidator.ValidateNotNull("Stream", sink);
            ArgumentValidator.ValidateNotNull("Emitting arguments", eArgs);

            Boolean isPE64, hasRelocations;
            UInt16  peOptionalHeaderSize;
            UInt32  numSections, iatSize;

            CheckEmittingArgs(eArgs, out isPE64, out hasRelocations, out numSections, out peOptionalHeaderSize, out iatSize);

            var fAlign         = eArgs.FileAlignment;
            var sAlign         = eArgs.SectionAlignment;
            var importHintName = eArgs.ImportHintName;
            var imageBase      = eArgs.ImageBase;
            var moduleKind     = eArgs.ModuleKind;
            var strongName     = eArgs.StrongName;

            IList <CILMethodBase> allMethodDefs;
            CILAssemblyName       an;

            using (var md = new MetaDataWriter(eArgs, this._context, this._module, eArgs.AssemblyMapper, out allMethodDefs, out an))
            {
                var clrEntryPointToken = 0;
                if (eArgs.CLREntryPoint != null)
                {
                    var listIdx = allMethodDefs.IndexOf(eArgs.CLREntryPoint);
                    if (listIdx < 0)
                    {
                        throw new ArgumentException("Entry point method " + eArgs.CLREntryPoint + " is not from this module (" + this._module.Name + ").");
                    }
                    clrEntryPointToken = TokenUtils.EncodeToken(Tables.MethodDef, listIdx + 1);
                }

                // Start emitting headers
                // MS-DOS header
                var currentArray = new Byte[HeaderFieldOffsetsAndLengths.DOS_HEADER_AND_PE_SIG.Length];
                Array.Copy(HeaderFieldOffsetsAndLengths.DOS_HEADER_AND_PE_SIG, currentArray, HeaderFieldOffsetsAndLengths.DOS_HEADER_AND_PE_SIG.Length);
                sink.Write(currentArray);

                // PE file header
                currentArray = new Byte[HeaderFieldOffsetsAndLengths.PE_FILE_HEADER_SIZE];
                var characteristics = HeaderFieldPossibleValues.IMAGE_FILE_EXECUTABLE_IMAGE | (isPE64 ? HeaderFieldPossibleValues.IMAGE_FILE_LARGE_ADDRESS_AWARE : HeaderFieldPossibleValues.IMAGE_FILE_32BIT_MACHINE);
                if (moduleKind.IsDLL())
                {
                    characteristics |= HeaderFieldPossibleValues.IMAGE_FILE_DLL;
                }
                var idx = 0;
                currentArray
                .WriteUInt16LEToBytes(ref idx, (UInt16)eArgs.Machine)
                .WriteUInt16LEToBytes(ref idx, (UInt16)numSections)
                .WriteInt32LEToBytes(ref idx, Convert.ToInt32(DateTime.Now.Subtract(PE_HEADER_START_TIME).TotalSeconds))
                .Skip(ref idx, 8)
                .WriteUInt16LEToBytes(ref idx, peOptionalHeaderSize)
                .WriteInt16LEToBytes(ref idx, (Int16)characteristics);
                sink.Write(currentArray);

                // PE optional header + section headers + padding + IAT + CLI header + Strong signature
                var codeSectionVirtualOffset = sAlign;
                // Strong name signature

                var           useStrongName = strongName != null;
                var           snSize        = 0u;
                var           snRVA         = 0u;
                var           snPadding     = 0u;
                var           delaySign     = eArgs.DelaySign || (!useStrongName && !an.PublicKey.IsNullOrEmpty());
                RSAParameters rParams;
                var           signingAlgorithm = AssemblyHashAlgorithm.SHA1;
                if (useStrongName || delaySign)
                {
                    // Set appropriate module flags
                    eArgs.ModuleFlags |= ModuleFlags.StrongNameSigned;

                    // Check algorithm override
                    var algoOverride           = eArgs.SigningAlgorithm;
                    var algoOverrideWasInvalid = algoOverride.HasValue && (algoOverride.Value == AssemblyHashAlgorithm.MD5 || algoOverride.Value == AssemblyHashAlgorithm.None);
                    if (algoOverrideWasInvalid)
                    {
                        algoOverride = AssemblyHashAlgorithm.SHA1;
                    }

                    Byte[] pkToProcess;
                    if ((useStrongName && strongName.ContainerName != null) || (!useStrongName && delaySign))
                    {
                        if (an.PublicKey.IsNullOrEmpty())
                        {
                            an.PublicKey = this._context.ExtractPublicKeyFromCSP(strongName.ContainerName);
                        }
                        pkToProcess = an.PublicKey;
                    }
                    else
                    {
                        // Get public key from BLOB
                        pkToProcess = strongName.KeyPair.ToArray();
                    }

                    // Create RSA parameters and process public key so that it will have proper, full format.
                    Byte[] pk;
                    rParams      = CryptoUtils.CreateSigningInformationFromKeyBLOB(pkToProcess, algoOverride, out pk, out signingAlgorithm);
                    an.PublicKey = pk;
                    snSize       = (UInt32)rParams.Modulus.Length;
                }
                else
                {
                    rParams = default(RSAParameters);
                }

                if (useStrongName || delaySign)
                {
                    snRVA = codeSectionVirtualOffset + iatSize + HeaderFieldOffsetsAndLengths.CLI_HEADER_SIZE;
                    if (snSize <= 32)
                    {
                        // The "Standard Public Key", ECMA-335 p. 116
                        // It is replaced by the runtime with 128 bytes key
                        snSize = 128;
                    }
                    snPadding = BitUtils.MultipleOf4(snSize) - snSize;
                }

                var revisitableOffset    = HeaderFieldOffsetsAndLengths.DOS_HEADER_AND_PE_SIG.Length + currentArray.Length;
                var revisitableArraySize = fAlign + iatSize + HeaderFieldOffsetsAndLengths.CLI_HEADER_SIZE - revisitableOffset;
                // Cheat a bit - skip now, and re-visit it after all other emitting is done
                sink.Seek(revisitableArraySize + snSize + snPadding, SeekOrigin.Current);

                // First section
                // Start with method ILs
                // Current offset within section
                var currentOffset = iatSize + snSize + snPadding + HeaderFieldOffsetsAndLengths.CLI_HEADER_SIZE;
                var methodRVAs    = new Dictionary <CILMethodBase, UInt32>(allMethodDefs.Count);


                foreach (var method in allMethodDefs)
                {
                    if (method.HasILMethodBody())
                    {
                        Boolean isTiny;
                        var     array = new MethodILWriter(this._context, md, method, eArgs.AssemblyMapper)
                                        .PerformEmitting(currentOffset, out isTiny);
                        if (!isTiny)
                        {
                            sink.SkipToNextAlignment(ref currentOffset, 4);
                        }
                        methodRVAs.Add(method, codeSectionVirtualOffset + currentOffset);
                        sink.Write(array);
                        currentOffset += (UInt32)array.Length;
                    }
                }

                // Write padding
                sink.SkipToNextAlignment(ref currentOffset, isPE64 ? 0x10u : 0x04u);

                // Write manifest resources here
                var mRes     = this._module.ManifestResources;
                var mResInfo = new Dictionary <String, UInt32>();
                var mResRVA  = mRes.Values.Any(mr => mr is EmbeddedManifestResource) ?
                               codeSectionVirtualOffset + currentOffset :
                               0u;
                var mResSize = 0u;
                if (mResRVA > 0u)
                {
                    var tmpArray = new Byte[4];
                    foreach (var kvp in mRes)
                    {
                        if (kvp.Value is EmbeddedManifestResource)
                        {
                            var data = ((EmbeddedManifestResource)kvp.Value).Data;
                            if (data != null && data.Length > 0)
                            {
                                mResInfo.Add(kvp.Key, mResSize);
                                tmpArray.WriteInt32LEToBytesNoRef(0, data.Length);
                                sink.Write(tmpArray);
                                sink.Write(data);
                                mResSize += 4 + (UInt32)data.Length;
                            }
                        }
                    }

                    // Write padding
                    currentOffset += mResSize;
                    sink.SkipToNextAlignment(ref currentOffset, isPE64 ? 0x10u : 0x04u);
                }
                // Finalize & write metadata
                var    mdRVA = codeSectionVirtualOffset + currentOffset;
                UInt32 addedToOffsetBeforeMD;
                var    mdSize = md.WriteMetaData(sink, mdRVA, eArgs, methodRVAs, mResInfo, out addedToOffsetBeforeMD);
                mdRVA         += addedToOffsetBeforeMD;
                currentOffset += mdSize + addedToOffsetBeforeMD;

                // Pad
                sink.SkipToNextAlignment(ref currentOffset, 0x4);

                // Write debug header if present
                var dbgInfo = eArgs.DebugInformation;
                var dbgRVA  = 0u;
                if (dbgInfo != null)
                {
                    dbgRVA = codeSectionVirtualOffset + currentOffset;
                    var dbgData = dbgInfo.DebugData;
                    currentArray = new Byte[MetaDataConstants.DEBUG_DD_SIZE + dbgData.Length];
                    idx          = 0;
                    currentArray
                    .WriteInt32LEToBytes(ref idx, dbgInfo.Characteristics)
                    .WriteInt32LEToBytes(ref idx, dbgInfo.Timestamp)
                    .WriteInt16LEToBytes(ref idx, dbgInfo.VersionMajor)
                    .WriteInt16LEToBytes(ref idx, dbgInfo.VersionMinor)
                    .WriteInt32LEToBytes(ref idx, MetaDataConstants.CODE_VIEW_DEBUG_TYPE)
                    .WriteInt32LEToBytes(ref idx, dbgData.Length)
                    .WriteUInt32LEToBytes(ref idx, dbgRVA + MetaDataConstants.DEBUG_DD_SIZE)
                    .WriteUInt32LEToBytes(ref idx, fAlign + currentOffset + (UInt32)idx + 4)  // Pointer to data, end Debug Data Directory
                    .BlockCopyFrom(ref idx, dbgData);
                    sink.Write(currentArray);
                    currentOffset += (UInt32)currentArray.Length;
                    sink.SkipToNextAlignment(ref currentOffset, 0x4);
                }


                var entryPointCodeRVA   = 0u;
                var importDirectoryRVA  = 0u;
                var importDirectorySize = 0u;
                var hnRVA = 0u;
                if (hasRelocations)
                {
                    // TODO write all of these in a single array
                    // Import Directory
                    // First, the table
                    importDirectoryRVA  = codeSectionVirtualOffset + currentOffset;
                    importDirectorySize = HeaderFieldOffsetsAndLengths.IMPORT_DIRECTORY_SIZE;
                    currentArray        = new Byte[importDirectorySize];
                    idx = 0;
                    currentArray
                    .WriteUInt32LEToBytes(ref idx, codeSectionVirtualOffset + currentOffset + (UInt32)currentArray.Length)                                                                                                                               // RVA of the ILT
                    .WriteInt32LEToBytes(ref idx, 0)                                                                                                                                                                                                     // DateTimeStamp
                    .WriteInt32LEToBytes(ref idx, 0)                                                                                                                                                                                                     // ForwarderChain
                    .WriteUInt32LEToBytes(ref idx, codeSectionVirtualOffset + currentOffset + (UInt32)currentArray.Length + HeaderFieldOffsetsAndLengths.ILT_SIZE + HeaderFieldOffsetsAndLengths.HINT_NAME_MIN_SIZE + (UInt32)importHintName.Length + 1) // RVA of Import Directory name (mscoree.dll)
                    .WriteUInt32LEToBytes(ref idx, codeSectionVirtualOffset);                                                                                                                                                                            // RVA of Import Address Table
                    // The rest are zeroes
                    sink.Write(currentArray);
                    currentOffset += (UInt32)currentArray.Length;

                    // ILT
                    currentArray = new Byte[HeaderFieldOffsetsAndLengths.ILT_SIZE];
                    idx          = 0;
                    currentArray
                    .WriteUInt32LEToBytes(ref idx, codeSectionVirtualOffset + currentOffset + (UInt32)currentArray.Length);  // RVA of the hint/name table
                    // The rest are zeroes
                    sink.Write(currentArray);
                    currentOffset += (UInt32)currentArray.Length;

                    // Hint/Name table
                    currentArray = new Byte[HeaderFieldOffsetsAndLengths.HINT_NAME_MIN_SIZE + importHintName.Length + 1];
                    hnRVA        = currentOffset + codeSectionVirtualOffset;
                    // Skip first two bytes
                    idx = HeaderFieldOffsetsAndLengths.HINT_NAME_MIN_SIZE;
                    currentArray.WriteASCIIString(ref idx, importHintName, true);
                    sink.Write(currentArray);
                    currentOffset += (UInt32)currentArray.Length;

                    // Import DirectoryName
                    foreach (var chr in eArgs.ImportDirectoryName)
                    {
                        sink.WriteByte((Byte)chr); // TODO properly ASCII-encoded string
                        ++currentOffset;
                    }
                    sink.WriteByte(0); // String-terminating null
                    ++currentOffset;

                    // Then, a zero int
                    // TODO investigate if this is really needed...
                    sink.SeekFromCurrent(sizeof(Int32));
                    currentOffset += sizeof(Int32);

                    // Then, a PE entrypoint
                    entryPointCodeRVA = currentOffset + codeSectionVirtualOffset;
                    currentArray      = new Byte[sizeof(Int16) + sizeof(Int32)];
                    idx = 0;
                    currentArray
                    .WriteInt16LEToBytes(ref idx, eArgs.EntryPointInstruction)
                    .WriteUInt32LEToBytes(ref idx, (UInt32)imageBase + codeSectionVirtualOffset);
                    sink.Write(currentArray);
                    currentOffset += (UInt32)currentArray.Length;
                }

                // TODO Win32 resources section
                var hasResourceSection = false;

                var textSectionInfo = new SectionInfo(sink, null, currentOffset, sAlign, fAlign, !hasRelocations && !hasResourceSection);
                var prevSectionInfo = textSectionInfo;

                // TODO Win32 resources section
                var rsrcSectionInfo = new SectionInfo();

                // Final section - relocation section
                var relocSectionInfo = new SectionInfo();
                if (hasRelocations)
                {
                    // Need to build relocation fixup for the argument of the entry point
                    currentOffset = 0;
                    var relocRVA = entryPointCodeRVA + 2;
                    var pageRVA  = relocRVA & ~(RELOCATION_PAGE_SIZE - 1);

                    currentArray = new Byte[HeaderFieldOffsetsAndLengths.RELOC_ARRAY_BASE_SIZE];
                    idx          = 0;
                    currentArray
                    .WriteUInt32LEToBytes(ref idx, pageRVA)
                    .WriteUInt32LEToBytes(ref idx, HeaderFieldOffsetsAndLengths.RELOC_ARRAY_BASE_SIZE)  // Block size
                    .WriteUInt32LEToBytes(ref idx, (RELOCATION_FIXUP_TYPE << 12) + relocRVA - pageRVA); // Type (high 4 bits) + Offset (lower 12 bits) + dummy entry (16 bits)
                    sink.Write(currentArray);
                    currentOffset += (UInt32)currentArray.Length;

                    relocSectionInfo = new SectionInfo(sink, prevSectionInfo, currentOffset, sAlign, fAlign, true);
                    prevSectionInfo  = relocSectionInfo;
                }

                // Revisit PE optional header + section headers + padding + IAT + CLI header
                currentArray = new Byte[revisitableArraySize];
                idx          = 0;
                // PE optional header, ECMA-335 pp. 279-281
                // Standard fields
                currentArray
                .WriteInt16LEToBytes(ref idx, isPE64 ? HeaderFieldPossibleValues.PE64 : HeaderFieldPossibleValues.PE32) // Magic
                .WriteByteToBytes(ref idx, eArgs.LinkerMajor)                                                           // Linker major version
                .WriteByteToBytes(ref idx, eArgs.LinkerMinor)                                                           // Linker minor version
                .WriteUInt32LEToBytes(ref idx, textSectionInfo.rawSize)                                                 // Code size
                .WriteUInt32LEToBytes(ref idx, relocSectionInfo.rawSize + rsrcSectionInfo.rawSize)                      // Initialized data size
                .WriteUInt32LEToBytes(ref idx, 0)                                                                       // Unitialized data size
                .WriteUInt32LEToBytes(ref idx, entryPointCodeRVA)                                                       // Entry point RVA
                .WriteUInt32LEToBytes(ref idx, textSectionInfo.virtualAddress);                                         // Base of code
                if (!isPE64)
                {
                    currentArray.WriteUInt32LEToBytes(ref idx, hasResourceSection ? rsrcSectionInfo.virtualAddress : relocSectionInfo.virtualAddress); // Base of data
                }
                // WinNT-specific fields
                var dllFlags = DLLFlags.TerminalServerAware | DLLFlags.NXCompatible | DLLFlags.NoSEH | DLLFlags.DynamicBase;
                if (eArgs.HighEntropyVA)
                {
                    dllFlags |= DLLFlags.HighEntropyVA;
                }
                (isPE64 ? currentArray.WriteUInt64LEToBytes(ref idx, imageBase) : currentArray.WriteUInt32LEToBytes(ref idx, (UInt32)imageBase))
                .WriteUInt32LEToBytes(ref idx, sAlign)                                                                                    // Section alignment
                .WriteUInt32LEToBytes(ref idx, fAlign)                                                                                    // File alignment
                .WriteUInt16LEToBytes(ref idx, eArgs.OSMajor)                                                                             // OS Major
                .WriteUInt16LEToBytes(ref idx, eArgs.OSMinor)                                                                             // OS Minor
                .WriteUInt16LEToBytes(ref idx, eArgs.UserMajor)                                                                           // User Major
                .WriteUInt16LEToBytes(ref idx, eArgs.UserMinor)                                                                           // User Minor
                .WriteUInt16LEToBytes(ref idx, eArgs.SubSysMajor)                                                                         // SubSys Major
                .WriteUInt16LEToBytes(ref idx, eArgs.SubSysMinor)                                                                         // SubSys Minor
                .WriteUInt32LEToBytes(ref idx, 0)                                                                                         // Reserved
                .WriteUInt32LEToBytes(ref idx, prevSectionInfo.virtualAddress + BitUtils.MultipleOf(sAlign, prevSectionInfo.virtualSize)) // Image Size
                .WriteUInt32LEToBytes(ref idx, textSectionInfo.rawPointer)                                                                // Header Size
                .WriteUInt32LEToBytes(ref idx, 0)                                                                                         // File Checksum
                .WriteUInt16LEToBytes(ref idx, GetSubSystem(moduleKind))                                                                  // SubSystem
                .WriteUInt16LEToBytes(ref idx, (UInt16)dllFlags);                                                                         // DLL Characteristics
                if (isPE64)
                {
                    currentArray
                    .WriteUInt64LEToBytes(ref idx, eArgs.StackReserve) // Stack Reserve Size
                    .WriteUInt64LEToBytes(ref idx, eArgs.StackCommit)  // Stack Commit Size
                    .WriteUInt64LEToBytes(ref idx, eArgs.HeapReserve)  // Heap Reserve Size
                    .WriteUInt64LEToBytes(ref idx, eArgs.HeapCommit);  // Heap Commit Size
                }
                else
                {
                    currentArray
                    .WriteUInt32LEToBytes(ref idx, (UInt32)eArgs.StackReserve) // Stack Reserve Size
                    .WriteUInt32LEToBytes(ref idx, (UInt32)eArgs.StackCommit)  // Stack Commit Size
                    .WriteUInt32LEToBytes(ref idx, (UInt32)eArgs.HeapReserve)  // Heap Reserve Size
                    .WriteUInt32LEToBytes(ref idx, (UInt32)eArgs.HeapCommit);  // Heap Commit Size
                }
                currentArray
                .WriteUInt32LEToBytes(ref idx, 0)  // Loader Flags
                .WriteUInt32LEToBytes(ref idx, HeaderFieldOffsetsAndLengths.NUMBER_OF_DATA_DIRS)
                // Data Directories
                .WriteZeroDataDirectory(ref idx)                                                                               // Export Table
                .WriteDataDirectory(ref idx, importDirectoryRVA, importDirectorySize)                                          // Import Table
                .WriteDataDirectory(ref idx, rsrcSectionInfo.virtualAddress, rsrcSectionInfo.virtualSize)                      // Resource Table
                .WriteZeroDataDirectory(ref idx)                                                                               // Exception Table
                .WriteZeroDataDirectory(ref idx)                                                                               // Certificate Table
                .WriteDataDirectory(ref idx, relocSectionInfo.virtualAddress, relocSectionInfo.virtualSize)                    // BaseRelocationTable
                .WriteDataDirectory(ref idx, dbgRVA > 0u ? dbgRVA : 0u, dbgRVA > 0u ? MetaDataConstants.DEBUG_DD_SIZE : 0u)    // Debug Table
                .WriteZeroDataDirectory(ref idx)                                                                               // Copyright Table
                .WriteZeroDataDirectory(ref idx)                                                                               // Global Ptr
                .WriteZeroDataDirectory(ref idx)                                                                               // TLS Table
                .WriteZeroDataDirectory(ref idx)                                                                               // Load Config Table
                .WriteZeroDataDirectory(ref idx)                                                                               // Bound Import
                .WriteDataDirectory(ref idx, iatSize == 0 ? 0 : codeSectionVirtualOffset, iatSize == 0 ? 0 : iatSize)          // IAT
                .WriteZeroDataDirectory(ref idx)                                                                               // Delay Import Descriptor
                .WriteDataDirectory(ref idx, codeSectionVirtualOffset + iatSize, HeaderFieldOffsetsAndLengths.CLI_HEADER_SIZE) // CLI Header
                .WriteZeroDataDirectory(ref idx)                                                                               // Reserved
                // Section headers
                .WriteSectionInfo(ref idx, textSectionInfo, CODE_SECTION_NAME, HeaderFieldPossibleValues.MEM_READ | HeaderFieldPossibleValues.MEM_EXECUTE | HeaderFieldPossibleValues.CONTAINS_CODE)
                .WriteSectionInfo(ref idx, rsrcSectionInfo, RESOURCE_SECTION_NAME, HeaderFieldPossibleValues.MEM_READ | HeaderFieldPossibleValues.CONTAINS_INITIALIZED_DATA)
                .WriteSectionInfo(ref idx, relocSectionInfo, RELOCATION_SECTION_NAME, HeaderFieldPossibleValues.MEM_READ | HeaderFieldPossibleValues.MEM_DISCARDABLE | HeaderFieldPossibleValues.CONTAINS_INITIALIZED_DATA);
                var headersSize = (UInt32)(revisitableOffset + idx);

                // Skip to beginning of .text section
                currentArray.Skip(ref idx, (Int32)(fAlign - (UInt32)revisitableOffset - idx));

                // Write IAT if needed
                if (hasRelocations)
                {
                    currentArray
                    .WriteUInt32LEToBytes(ref idx, hnRVA)
                    .WriteUInt32LEToBytes(ref idx, 0);
                }
                // CLI Header, ECMA-335, p. 283
                // At the moment, the 32BitRequired flag must be specified as well, if 32BitPreferred flag is specified.
                // This is for backwards compatibility.
                // Actually, since CorFlags lets specify Preferred32Bit separately, allow this to do too.
                var moduleFlags = eArgs.ModuleFlags;
                //if ( moduleFlags.HasFlag( ModuleFlags.Preferred32Bit ) )
                //{
                //   moduleFlags |= ModuleFlags.Required32Bit;
                //}
                currentArray
                .WriteUInt32LEToBytes(ref idx, HeaderFieldOffsetsAndLengths.CLI_HEADER_SIZE) // Cb
                .WriteUInt16LEToBytes(ref idx, eArgs.CLIMajor)                               // MajorRuntimeVersion
                .WriteUInt16LEToBytes(ref idx, eArgs.CLIMinor)                               // MinorRuntimeVersion
                .WriteDataDirectory(ref idx, mdRVA, mdSize)                                  // MetaData
                .WriteInt32LEToBytes(ref idx, (Int32)moduleFlags)                            // Flags
                .WriteInt32LEToBytes(ref idx, clrEntryPointToken)                            // EntryPointToken
                .WriteDataDirectory(ref idx, mResRVA, mResSize);                             // Resources
                var snDataDirOffset = revisitableOffset + idx;
                currentArray
                .WriteDataDirectory(ref idx, snRVA, snSize) // StrongNameSignature
                .WriteZeroDataDirectory(ref idx)            // CodeManagerTable
                .WriteZeroDataDirectory(ref idx)            // VTableFixups
                .WriteZeroDataDirectory(ref idx)            // ExportAddressTableJumps
                .WriteZeroDataDirectory(ref idx);           // ManagedNativeHeader
#if DEBUG
                if (idx != currentArray.Length)
                {
                    throw new Exception("Something went wrong when emitting file headers. Emitted " + idx + " bytes, but was supposed to emit " + currentArray.Length + " bytes.");
                }
#endif
                sink.Seek(revisitableOffset, SeekOrigin.Begin);
                sink.Write(currentArray);

                if (useStrongName || delaySign)
                {
                    if (!delaySign)
                    {
                        // Try create RSA first
                        var rsaArgs = strongName.ContainerName == null ? new RSACreationEventArgs(rParams) : new RSACreationEventArgs(strongName.ContainerName);
                        this._context.LaunchRSACreationEvent(rsaArgs);
                        using (var rsa = rsaArgs.RSA)
                        {
                            var           buffer = new Byte[MetaDataConstants.STREAM_COPY_BUFFER_SIZE];
                            Func <Stream> hashStream; Func <Byte[]> hashGetter; IDisposable transform;
                            this._context.LaunchHashStreamEvent(signingAlgorithm, out hashStream, out hashGetter, out transform);

                            RSASignatureCreationEventArgs sigArgs;
                            using (var tf = transform)
                            {
                                using (var cryptoStream = hashStream())
                                {
                                    // Calculate hash of required parts of file (ECMA-335, p.117)
                                    sink.Seek(0, SeekOrigin.Begin);
                                    sink.CopyStreamPart(cryptoStream, buffer, headersSize);

                                    sink.Seek(fAlign, SeekOrigin.Begin);
                                    sink.CopyStreamPart(cryptoStream, buffer, snRVA - codeSectionVirtualOffset);

                                    sink.Seek(snSize + snPadding, SeekOrigin.Current);
                                    sink.CopyStream(cryptoStream, buffer);
                                }
                                sigArgs = new RSASignatureCreationEventArgs(rsa, signingAlgorithm, hashGetter());
                            }


                            this._context.LaunchRSASignatureCreationEvent(sigArgs);
                            var strongNameArray = sigArgs.Signature;
                            if (snSize != strongNameArray.Length)
                            {
                                throw new CryptographicException("Calculated and actual strong name size differ (calculated: " + snSize + ", actual: " + strongNameArray.Length + ").");
                            }
                            Array.Reverse(strongNameArray);

                            // Write strong name
                            sink.Seek(snRVA - codeSectionVirtualOffset + fAlign, SeekOrigin.Begin);
                            sink.Write(strongNameArray);
                        }
                    }

                    currentArray = new Byte[8];
                    idx          = 0;
                    currentArray.WriteDataDirectory(ref idx, snRVA, snSize);
                    sink.Seek(snDataDirOffset, SeekOrigin.Begin);
                    sink.Write(currentArray);
                }
            }
        }
    public void Init()
    {
        switch (GlobalHandler.password)
        {
        case 1:
            passwordmodel = new PasswordModel(new List <String>()
            {
                "POSX1G", "POSX2G", "POSX3G", "POSX4G"
            }, 4);
            break;

        case 2:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX3G", "POSX4G", "POSX5G", "POSX6G"
            }, 4);
            break;

        case 3:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX1G", "POSX3G", "POSX7G", "POSX9G"
            }, 4);
            break;

        case 4:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX9G", "POSX6G", "POSX5R", "POSX6R"
            }, 4);
            break;

        case 5:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX1G", "POSX9G", "POSX1W", "POSX2W"
            }, 4);
            break;

        case 6:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX4G", "POSX5G", "POSX6G", "POSX5B"
            }, 4);
            break;

        case 7:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX4G", "POSX1W", "POSX2W", "POSX1O"
            }, 4);
            break;

        case 8:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX1G", "POSX2G", "POSX5R", "POSX1W"
            }, 4);
            break;

        case 9:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX5G", "POSX5R", "POSX5B", "POSX6B"
            }, 4);
            break;

        case 10:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX7G", "POSX5W", "POSX9B", "POSX7R"
            }, 4);
            break;

        case 11:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX3G", "POSX3W", "POSX4O", "POSX5R"
            }, 4);
            break;

        case 12:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX2G", "POSX3O", "POSX4B", "POSX5W"
            }, 4);
            break;

        case 13:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX5G", "POSX6G", "POSX7G", "POSX8G"
            }, 4);
            break;

        case 14:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX6G", "POSX7G", "POSX8G", "POSX9G"
            }, 4);
            break;

        case 15:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX1G", "POSX2G", "POSX8G", "POSX9G"
            }, 4);
            break;

        case 16:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX7G", "POSX8G", "POSX1R", "POSX2R"
            }, 4);
            break;

        case 17:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX5G", "POSX1W", "POSX2W", "POSX3W"
            }, 4);
            break;

        case 18:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX9G", "POSX8G", "POSX1B", "POSX2B"
            }, 4);
            break;

        case 19:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX4G", "POSX4W", "POSX6W", "POSX5O"
            }, 4);
            break;

        case 20:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX5G", "POSX5R", "POSX1W", "POSX2W"
            }, 4);
            break;

        case 21:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX7G", "POSX7W", "POSX9W", "POSX7O"
            }, 4);
            break;

        case 22:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX5G", "POSX2W", "POSX5B", "POSX9R"
            }, 4);
            break;

        case 23:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX1G", "POSX1W", "POSX5B", "POSX6O"
            }, 4);
            break;

        case 24:
            passwordmodel = new PasswordModel(new List <System.String>()
            {
                "POSX1G", "POSX1W", "POSX1R", "POSX5B"
            }, 4);
            break;
        }
        foreach (GameObject pin in GameObject.FindGameObjectsWithTag("PIN"))
        {
            materialholderList.Add(new MaterialHolder(pin.GetComponent <MeshRenderer>().material, pin.gameObject));
        }
        currentGameobject = null;
        // Get EyeTracker unity object
        _eyeTracker = Tobii.Research.Unity.VREyeTracker.Instance;
        if (_eyeTracker == null)
        {
            Debug.Log("Failed to find eye tracker, has it been added to scene?");
        }

        _gazeTrail = Tobii.Research.Unity.VRGazeTrail.Instance;

        _highlightInfo = new ActiveObject();

        selectedPINS  = new List <String>();
        inputtime     = 0;
        fullinputtime = 0;

        timerfinalgazedata = 0.3f;
        started            = false;
        stopped            = false;
        fw       = GameObject.Find("Storage").GetComponent <FileWriter1>();
        mdfw     = GameObject.Find("Storage").GetComponent <MetaDataWriter>();
        fullfw   = GameObject.Find("Storage").GetComponent <FullFileWriter1>();
        fullmdfw = GameObject.Find("Storage").GetComponent <FullMetaDataWriter>();
        fullfw.StartRecording();
        fullmdfw.StartRecording();
    }
    // called by anyone
    public void Init()
    {
        if (GlobalHandler.modality == 0 || GlobalHandler.modality == 2)
        {
            if (GameObject.Find("HeadPosePoint") != null)
            {
                GameObject.Find("HeadPosePoint").SetActive(false);
            }
        }
        if (GlobalHandler.modality == 1 || GlobalHandler.modality == 2)
        {
            if (GameObject.Find("[VRGazeTrail]") != null)
            {
                GameObject.Find("[VRGazeTrail]").SetActive(false);
            }
        }
        foreach (GameObject pin in GameObject.FindGameObjectsWithTag("PIN"))
        {
            materialholderList.Add(new MaterialHolder(pin.GetComponent <MeshRenderer>().material, pin.gameObject));
        }
        currentGameobject = null;
        // Get EyeTracker unity object
        _eyeTracker = Tobii.Research.Unity.VREyeTracker.Instance;
        if (_eyeTracker == null)
        {
            Debug.Log("Failed to find eye tracker, has it been added to scene?");
        }

        _gazeTrail = Tobii.Research.Unity.VRGazeTrail.Instance;

        _highlightInfo = new ActiveObject();

        selectedPINS = new List <String>();

        inputtime     = 0;
        fullinputtime = 0;
        started       = false;
        stopped       = false;
        // not relevant but we need it because of the current implementation
        // participant passwords
        if (security == "weak")
        {
            switch (GlobalHandler.participant_number)
            {
            case 1:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1W", "POSX2W", "POSX3W", "POSX4W"
                }, 4);
                break;

            case 2:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX2G", "POSX3G", "POSX4G"
                }, 4);
                break;

            case 3:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX2G", "POSX3G", "POSX4G"
                }, 4);
                break;

            case 4:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX2G", "POSX1G", "POSX3G", "POSX4G"
                }, 4);
                break;

            case 5:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX2G", "POSX3G", "POSX4G"
                }, 4);
                break;

            case 6:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX2G", "POSX3G", "POSX4G"
                }, 4);
                break;

            case 7:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX4G", "POSX7G", "POSX8G"
                }, 4);
                break;

            case 8:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX4G", "POSX7G", "POSX8G"
                }, 4);
                break;

            case 9:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX3G", "POSX1G", "POSX4G", "POSX1G"
                }, 4);
                break;

            case 10:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1W", "POSX2W", "POSX3W", "POSX4W"
                }, 4);
                break;

            case 11:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX2G", "POSX3G", "POSX4G"
                }, 4);
                break;

            case 12:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX2G", "POSX3G", "POSX4G"
                }, 4);
                break;

            case 13:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1W", "POSX2W", "POSX3W", "POSX4W"
                }, 4);
                break;

            case 14:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX2G", "POSX4G", "POSX6G", "POSX8G"
                }, 4);
                break;

            case 15:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX2G", "POSX3G", "POSX4G"
                }, 4);
                break;

            case 16:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX2G", "POSX4G", "POSX6G", "POSX8G"
                }, 4);
                break;

            case 17:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX5G", "POSX5G", "POSX5G", "POSX5G"
                }, 4);
                break;

            case 18:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX2G", "POSX3G", "POSX4G"
                }, 4);
                break;

            case 19:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX2G", "POSX3G", "POSX4G"
                }, 4);
                break;

            case 20:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX2G", "POSX8W", "POSX2O", "POSX4R"
                }, 4);
                break;

            case 21:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1W", "POSX5W", "POSX9W", "POSX6W"
                }, 4);
                break;

            case 22:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX2G", "POSX3G", "POSX4G"
                }, 4);
                break;

            case 23:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX2G", "POSX3G", "POSX4G"
                }, 4);
                break;
            }
        }
        else if (security == "medium")
        {
            switch (GlobalHandler.participant_number)
            {
            case 1:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX2W", "POSX4W", "POSX6W", "POSX8W"
                }, 4);
                break;

            case 2:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX4G", "POSX1W", "POSX1W"
                }, 4);
                break;

            case 3:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX2G", "POSX3O", "POSX4O"
                }, 4);
                break;

            case 4:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX5G", "POSX9G", "POSX1O"
                }, 4);
                break;

            case 5:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX2W", "POSX3O", "POSX4R"
                }, 4);
                break;

            case 6:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX2G", "POSX3W", "POSX4W"
                }, 4);
                break;

            case 7:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX3G", "POSX1W", "POSX9W"
                }, 4);
                break;

            case 8:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX2G", "POSX8G", "POSX2O", "POSX4O"
                }, 4);
                break;

            case 9:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX2G", "POSX2G", "POSX4B", "POSX4O"
                }, 4);
                break;

            case 10:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX2W", "POSX3W", "POSX4O"
                }, 4);
                break;

            case 11:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1R", "POSX2W", "POSX3G", "POSX4R"
                }, 4);
                break;

            case 12:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX2G", "POSX5G", "POSX8G", "POSX3G"
                }, 4);
                break;

            case 13:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX2G", "POSX3G", "POSX4G"
                }, 4);
                break;

            case 14:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX6G", "POSX1G", "POSX7G", "POSX9G"
                }, 4);
                break;

            case 15:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX6G", "POSX5G", "POSX7G", "POSX1G"
                }, 4);
                break;

            case 16:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX6G", "POSX7G", "POSX3G"
                }, 4);
                break;

            case 17:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX2G", "POSX4G", "POSX8G", "POSX6G"
                }, 4);
                break;

            case 18:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX2G", "POSX9G", "POSX6G", "POSX3G"
                }, 4);
                break;

            case 19:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX3G", "POSX5G", "POSX7G"
                }, 4);
                break;

            case 20:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX3G", "POSX2W", "POSX3O", "POSX9R"
                }, 4);
                break;

            case 21:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1W", "POSX4W", "POSX7W", "POSX5W"
                }, 4);
                break;

            case 22:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX9G", "POSX1G", "POSX9G"
                }, 4);
                break;

            case 23:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX5G", "POSX9G", "POSX6G"
                }, 4);
                break;
            }
        }
        else if (security == "strong")
        {
            switch (GlobalHandler.participant_number)
            {
            case 1:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX2W", "POSX2W", "POSX8W", "POSX4W"
                }, 4);
                break;

            case 2:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX4G", "POSX4O", "POSX2W", "POSX2W"
                }, 4);
                break;

            case 3:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX2G", "POSX5W", "POSX8B", "POSX9B"
                }, 4);
                break;

            case 4:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX9R", "POSX6Y", "POSX1B", "POSX3G"
                }, 4);
                break;

            case 5:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX7G", "POSX5O", "POSX2W", "POSX3G"
                }, 4);
                break;

            case 6:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX2W", "POSX3O", "POSX4B"
                }, 4);
                break;

            case 7:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX5W", "POSX5O", "POSX3B"
                }, 4);
                break;

            case 8:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX2G", "POSX8G", "POSX2W", "POSX4O"
                }, 4);
                break;

            case 9:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX6G", "POSX8G", "POSX6B", "POSX1W"
                }, 4);
                break;

            case 10:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX3W", "POSX9W", "POSX9G", "POSX1G"
                }, 4);
                break;

            case 11:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX7G", "POSX6B", "POSX8W", "POSX5Y"
                }, 4);
                break;

            case 12:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX9G", "POSX8G", "POSX1G", "POSX5G"
                }, 4);
                break;

            case 13:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX4B", "POSX3G", "POSX9R", "POSX4G"
                }, 4);
                break;

            case 14:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX4G", "POSX1O", "POSX3W", "POSX2R"
                }, 4);
                break;

            case 15:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX8O", "POSX2O", "POSX3W", "POSX8W"
                }, 4);
                break;

            case 16:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX2G", "POSX4G", "POSX1G", "POSX9G"
                }, 4);
                break;

            case 17:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX1O", "POSX9W", "POSX9W"
                }, 4);
                break;

            case 18:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX2G", "POSX9G", "POSX6W", "POSX6O"
                }, 4);
                break;

            case 19:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX1G", "POSX5O", "POSX9B", "POSX5R"
                }, 4);
                break;

            case 20:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX6W", "POSX4W", "POSX9O", "POSX7O"
                }, 4);
                break;

            case 21:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX2W", "POSX4W", "POSX6W", "POSX8W"
                }, 4);
                break;

            case 22:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX6G", "POSX2O", "POSX7W", "POSX5R"
                }, 4);
                break;

            case 23:
                passwordmodel = new PasswordModel(new List <System.String>()
                {
                    "POSX2G", "POSX3R", "POSX2W", "POSX3O"
                }, 4);
                break;
            }
        }
        //
        //fw = GameObject.Find("Storage").GetComponent<CreativityWriter>();
        mdfw = GameObject.Find("Storage").GetComponent <MetaDataWriter>();
        //fullfw = GameObject.Find("Storage").GetComponent<FullCreativityWriter>();
        fullmdfw = GameObject.Find("Storage").GetComponent <FullMetaDataWriter>();
        //fullfw.StartRecording();
        fullmdfw.StartRecording();
        //Debug.Log(GameObject.Find("Planes").transform.rotation);
        feedbackElements = new List <FeedbackModel>();
        feedbacktime     = 0.4f;
    }
Esempio n. 16
0
 public void Write(string _projectFilePath, IMetaData _metaData, Dictionary <string, List <TimeStepDataAsset> > _dataAssets)
 {
     MetaDataWriter.Write(_projectFilePath, _metaData, _dataAssets);
 }
Esempio n. 17
0
        public MetaFile Build(IMetaValue value)
        {
            MetaInitialize();
            MetaBuildStructuresAndEnums();

            var writer = new MetaDataWriter();

            writer.SelectBlockByNameHash(((MetaStructure)value).info.StructureNameHash);
            WriteStructure(writer, (MetaStructure)value);

            for (int k = meta.StructureInfos.Count - 1; k >= 0; k--)
            {
                if (!usedStructureKeys.Contains(meta.StructureInfos[k].StructureKey))
                {
                    meta.StructureInfos.RemoveAt(k);
                }
            }

            // TODO: refactor this hacky way to remove unused EnumInfos
            for (int e = meta.EnumInfos.Count - 1; e >= 0; e--)
            {
                bool required = false;

                for (int s = 0; s < meta.StructureInfos.Count; s++)
                {
                    var entries = meta.StructureInfos[s].Entries;

                    foreach (var entry in entries)
                    {
                        if (entry.ReferenceKey == meta.EnumInfos[e].EnumNameHash)
                        {
                            required = true;
                            break;
                        }
                    }

                    if (required)
                    {
                        break;
                    }
                }

                if (!required)
                {
                    meta.EnumInfos.RemoveAt(e);
                }
            }

            meta.DataBlocks = new ResourceSimpleArray <DataBlock>();
            foreach (var block in writer.Blocks)
            {
                var metaDataBlock = new DataBlock();
                metaDataBlock.StructureNameHash = block.NameHash;
                metaDataBlock.Data = StreamToResourceBytes(block.Stream);
                meta.DataBlocks.Add(metaDataBlock);
            }

            for (int i = 0; i < meta.DataBlocks.Count; i++)
            {
                if (meta.DataBlocks[i].StructureNameHash == ((MetaStructure)value).info.StructureNameHash)
                {
                    meta.RootBlockIndex = i + 1;
                }
            }

            return(meta);
        }