Esempio n. 1
0
    public void Reset()
    {
        spellSelectState = SpellSelectState.Idle;

        activeSpellThumbnails.ForEach(
            spellThumbnail => Destroy(spellThumbnail)
            );
        activeSpellThumbnails.Clear();

        Destroy(castingRing);
    }
Esempio n. 2
0
    private void UpdateSpellSelectState()
    {
        switch (spellSelectState)
        {
        case SpellSelectState.Idle:
        case SpellSelectState.Selecting:
            if (
                SelectButtonPressed(ThisController()) &&
                SelectButtonPressed(OtherController()) &&
                Distance(thisControllerObject, leftControllerObject) < maxBeginCastingDistance
                )
            {
                spellSelectState = SpellSelectState.Casting;
                InitCasting();
            }
            break;

        case SpellSelectState.Casting:
            if (
                !SelectButtonPressed(ThisController()) &&
                !SelectButtonPressed(OtherController())
                )
            {
                if (Distance(thisControllerObject, leftControllerObject) > minFinishCastingDistance)
                {
                    spellSelectState = SpellSelectState.Selecting;
                    InitSelecting(castingRing.transform, castingRing.GetComponent <Torus>().segmentRadius);
                    FinishCasting();
                }
                else
                {
                    spellSelectState = SpellSelectState.Idle;
                    AbortCasting();
                }
            }
            break;
        }
    }
Esempio n. 3
0
    TWandAction[] Spell.UpdateSpell(ControllerBridge rightController, ControllerBridge leftController)
    {
        TriggerState rightTriggerState        = rightController.GetTriggerState();
        Vector2      rightTouchpadAxis        = rightController.GetTouchpadAxis();
        Vector3      rightControllerPosition  = rightController.GetPosition();
        Vector3      rightControllerDirection = rightController.GetDirection();
        Vector3      rightControllerVelocity  = rightController.GetVelocity();

        TriggerState leftTriggerState = leftController != null?leftController.GetTriggerState() : null;

        Vector2 leftTouchpadAxis = leftController != null?leftController.GetTouchpadAxis() : Vector2.zero;

        Vector3?leftControllerPosition = leftController != null?leftController.GetPosition() : null as Vector3?;

        Vector3?leftControllerDirection = leftController != null?leftController.GetDirection() : null as Vector3?;

        Vector3?leftControllerVelocity = leftController != null?leftController.GetVelocity() : null as Vector3?;

        UpdateSpellSelectState(rightTriggerState, leftTriggerState);

        switch (spellSelectState)
        {
        case SpellSelectState.Aiming:
            if (rightTriggerState.press)
            {
                UpdateAiming(rightControllerPosition, rightControllerDirection);
            }
            if (this.previewSphere && rightTriggerState.up)
            {
                spellSelectState   = SpellSelectState.MeteorSpawned;
                meteorToDragScript = SpawnMeteorToPosition(previewSphere.transform.position).GetComponent <MeteorController>();
            }
            break;

        case SpellSelectState.MeteorSpawned:
            if (rightTriggerState.press && leftTriggerState.press)
            {
                spellSelectState = SpellSelectState.Dragging;
                meteorToDragScript.SetTargetArea(previewSphere.transform.position);
                UnityEngine.Object.Destroy(this.previewSphere);
                //TODO check ob linker controller ueberhaupt da ist
                draggingStartPosition = (rightControllerPosition.y + leftControllerPosition.Value.y) / 2f;
            }
            break;

        case SpellSelectState.Dragging:
            if (!rightTriggerState.press && !leftTriggerState.press)
            {
                float draggingEndPosition = (rightControllerPosition.y + leftControllerPosition.Value.y) / 2f;
                float dragLength          = Mathf.Max(draggingStartPosition - draggingEndPosition, 0f);
                spellSelectState = SpellSelectState.Aiming;
                if (dragLength <= 0.1f)
                {
                    meteorToDragScript.DestroyMeteor();
                }
                else
                {
                    meteorToDragScript.SetSpeed(dragLength * 25f);
                    meteorToDragScript.StartFalling();
                }
            }
            break;
        }

        TWandAction[] actions = { };
        return(actions);
    }
Esempio n. 4
0
    TWandAction[] Spell.UpdateSpell(ControllerBridge rightController, ControllerBridge leftController)
    {
        TriggerState rightTriggerState        = rightController.GetTriggerState();
        Vector2      rightTouchpadAxis        = rightController.GetTouchpadAxis();
        Vector3      rightControllerPosition  = rightController.GetPosition();
        Vector3      rightControllerDirection = rightController.GetDirection();
        Vector3      rightControllerVelocity  = rightController.GetVelocity();

        TriggerState leftTriggerState = leftController != null?leftController.GetTriggerState() : null;

        Vector2 leftTouchpadAxis = leftController != null?leftController.GetTouchpadAxis() : Vector2.zero;

        Vector3?leftControllerPosition = leftController != null?leftController.GetPosition() : null as Vector3?;

        Vector3?leftControllerDirection = leftController != null?leftController.GetDirection() : null as Vector3?;

        Vector3?leftControllerVelocity = leftController != null?leftController.GetVelocity() : null as Vector3?;

        switch (spellSelectState)
        {
        case SpellSelectState.Spawning:
            if (rightTriggerState.down)
            {
                Vector3 position = rightControllerPosition + ((rightControllerPosition - this.playerEyesTransform.position).magnitude * 30f * rightControllerDirection);
                this.lightningObject = GameObject.Instantiate(this.lightningPrefab, new Vector3(0, 0, 0), new Quaternion());

                Transform transformTemp = this.lightningObject.transform;
                this.lightningStart  = transformTemp.GetChild(0).transform;
                this.lightningMitte  = transformTemp.GetChild(1).transform;
                this.lightningTarget = transformTemp.GetChild(2).transform;

                this.lightningMitte.position   = position;
                this.middlePointParticlesystem = this.lightningObject.GetComponentInChildren <ParticleSystem> ();
                this.middlePointParticlesystem.Play();
                this.lightningObject.GetComponent <LineRenderer> ().enabled = false;

                spellSelectState = SpellSelectState.Grabbing;
            }
            break;

        case SpellSelectState.Grabbing:
            if (rightTriggerState.press)
            {
                this.lightningMitte.position = rightControllerPosition + ((rightControllerPosition - this.playerEyesTransform.position).magnitude * 30f * rightControllerDirection);
            }
            else
            {
                CancelSpell();
            }
            if (rightTriggerState.up)
            {
                CancelSpell();
                break;
            }
            if (leftTriggerState.down)
            {
                spellSelectState = SpellSelectState.Dragging;
            }
            break;

        case SpellSelectState.Dragging:
            Vector3?target = FindTarget(this.lightningMitte.position, (Vector3)leftControllerPosition - rightControllerPosition);
            if (target != null)
            {
                this.lightningTarget.position = (Vector3)target;
                this.lightningStart.position  = rightControllerPosition;
                this.lightningMitte.position  = rightControllerPosition + ((rightControllerPosition - this.playerEyesTransform.position).magnitude * 30f * rightControllerDirection);
                this.middlePointParticlesystem.Stop();
                this.lightningObject.GetComponent <LineRenderer> ().enabled = true;
            }
            else
            {
                CancelSpell();
            }
            if (rightTriggerState.up || leftTriggerState.up)
            {
                CancelSpell();
            }
            break;
        }
        TWandAction[] actions = { };
        return(actions);
    }
Esempio n. 5
0
 private void CancelSpell()
 {
     spellSelectState = SpellSelectState.Spawning;
     GameObject.Destroy(this.lightningObject);
 }
Esempio n. 6
0
    TWandAction[] Spell.UpdateSpell(ControllerBridge rightController, ControllerBridge leftController)
    {
        TriggerState rightTriggerState        = rightController.GetTriggerState();
        Vector2      rightTouchpadAxis        = rightController.GetTouchpadAxis();
        Vector3      rightControllerPosition  = rightController.GetPosition();
        Vector3      rightControllerDirection = rightController.GetDirection();
        Vector3      rightControllerVelocity  = rightController.GetVelocity();

        TriggerState leftTriggerState = leftController != null?leftController.GetTriggerState() : null;

        Vector2 leftTouchpadAxis = leftController != null?leftController.GetTouchpadAxis() : Vector2.zero;

        Vector3?leftControllerPosition = leftController != null?leftController.GetPosition() : null as Vector3?;

        Vector3?leftControllerDirection = leftController != null?leftController.GetDirection() : null as Vector3?;

        Vector3?leftControllerVelocity = leftController != null?leftController.GetVelocity() : null as Vector3?;

        switch (spellSelectState)
        {
        case SpellSelectState.Aiming:
            if (rightTriggerState.down)
            {
                Vector3?target = FindTarget(rightControllerPosition, rightControllerDirection);

                if (target != null)
                {
                    this.lightningObject = GameObject.Instantiate(this.lightningPrefab, rightControllerPosition - new Vector3(-10, -10, -10), new Quaternion());
                    Transform transformTemp = this.lightningObject.transform;
                    this.lightningStart  = transformTemp.GetChild(0).transform;
                    this.lightningMitte  = transformTemp.GetChild(1).transform;
                    this.lightningTarget = transformTemp.GetChild(2).transform;

                    this.lightningStart.position  = rightControllerPosition;
                    this.lightningTarget.position = (Vector3)target;
                    this.lightningMitte.position  = (this.lightningStart.position + this.lightningTarget.position) / 2;

                    spellSelectState = SpellSelectState.Grabbing;
                }
            }
            break;

        case SpellSelectState.Grabbing:
            if (rightTriggerState.press)
            {
                Vector3?target = FindTarget(rightControllerPosition, rightControllerDirection);
                if (target != null)
                {
                    this.lightningStart.position  = rightControllerPosition;
                    this.lightningTarget.position = (Vector3)target;
                    this.lightningMitte.position  = (this.lightningStart.position + this.lightningTarget.position) / 2;
                }
                else
                {
                    CancelSpell();
                }
            }
            else
            {
                CancelSpell();
            }
            if (leftTriggerState.down)
            {
                this.bendingStartPosition = (Vector3)leftControllerPosition;
                this.middleBeforeBending  = this.lightningMitte.position;
                spellSelectState          = SpellSelectState.Bending;
            }
            break;

        case SpellSelectState.Bending:
            if (leftTriggerState.up)
            {
                spellSelectState = SpellSelectState.Grabbing;
                break;
            }
            if (rightTriggerState.press)
            {
                Vector3?target = FindTarget(rightControllerPosition, rightControllerDirection);
                if (target != null)
                {
                    this.lightningStart.position  = rightControllerPosition;
                    this.lightningTarget.position = (Vector3)target;
                    this.lightningMitte.position  = (this.lightningStart.position + this.lightningTarget.position) / 2;
                    this.middleBeforeBending      = this.lightningMitte.position;
                }
                else
                {
                    CancelSpell();
                }
            }
            else
            {
                CancelSpell();
            }
            if (leftTriggerState.down)
            {
                this.bendingStartPosition = (Vector3)leftControllerPosition;
            }
            Vector3 offset = (Vector3)(this.bendingStartPosition - leftControllerPosition) * 20;
            this.lightningMitte.position = this.middleBeforeBending + offset;
            break;

            // TODO spark effekt wenn man kein ziel getroffen hat
        }
        TWandAction[] actions = { };
        return(actions);
    }