Example #1
0
        private static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            ISymbolsHelper symbolsHelper = new SymbolsHelper();

            Application.Run(new frmLexer(symbolsHelper));
        }
Example #2
0
    /// Resize shape, so it fits recognition square.
    /// If square is 10x10, then coordinates are -5..5, -5..5
    private static List <Vector3> ResizeShapeToFitRecognitionSquare(List <Vector3> points)
    {
        List <Vector3> resizedPoints = new List <Vector3>(points.Count);
        SymbolSize     initialSize   = SymbolsHelper.GetWidthAndHeightOfShape(points);

        for (int i = 0; i != points.Count; i++)
        {
            resizedPoints.Add(points[i] * (RecognitionSquareDimension / initialSize.MaxDimension));
        }
        return(resizedPoints);
    }
Example #3
0
    private bool IsItGesture()
    {
        Vector3 center  = SymbolsHelper.CalculateSymbolCenter(points);
        float   distSum = 0;

        foreach (Vector3 point in points)
        {
            float dist = Vector3.Distance(point, center);
            distSum += dist;
        }
        return(distSum > 0.5f);
    }
Example #4
0
    private void ListeningShotState()
    {
        if (hand.buttonsListener.GetStandardInteractionButtonUp())
        {
            Vector3 center       = SymbolsHelper.CalculateSymbolCenter(points);
            Vector3 head         = Player.instance.headCollider.transform.position;
            Vector3 targetVector = (center - head).normalized;

            //todo: to calculate speed vector use hand rotation, not center-head vector
            Game.EventService.SendMessage(new SpawnGodsFireballMessage(center, targetVector * 0.005f * points.Count));

            ToIdleState();
        }
    }
Example #5
0
    public static CustomSymbol CreateSymbol(List <Vector3> points)
    {
        List <Vector3> correctedCountPoints = CorrectPointsCount(points);
        Vector3        spellCenter          = SymbolsHelper.CalculateSymbolCenter(correctedCountPoints);

        Basis basisBasedOnPlayerSight       = CreateBasisBasedOnPlayerSight(spellCenter, Player.instance.headCollider.transform.position);
        Basis basisToProjectPointsToXyPlane = CreateBasisToProjectPointsToXyPlane(basisBasedOnPlayerSight);

        List <Vector3> poitnsProjectedToPlaneInPlayerSightBasis = MathHelper.ProjectPointsToPlane(correctedCountPoints, spellCenter, basisBasedOnPlayerSight.Forward);
        List <Vector3> pointsProjectedToXyPlane = ProjectPointsToXyPlane(poitnsProjectedToPlaneInPlayerSightBasis, spellCenter, basisToProjectPointsToXyPlane);
        List <Vector3> resizedPoints            = ResizeShapeToFitRecognitionSquare(pointsProjectedToXyPlane);

        SymbolAnalyzerResult result = SymbolAnalyzer.Instance.Analyze(resizedPoints);

        CustomSymbol newSymbol = new CustomSymbol();

        newSymbol.Type        = result.IsPassed() ? result.SymbolType : SymbolType.Unrecognized;
        newSymbol.Center      = spellCenter;
        newSymbol.Orientation = basisBasedOnPlayerSight;
        newSymbol.Size        = SymbolsHelper.GetWidthAndHeightOfShape(pointsProjectedToXyPlane).MaxDimension;

        return(newSymbol);
    }