Exemplo n.º 1
0
        public override void drawWall()
        {
            if (!hasError)
            {
                _device3D.Transform.World = Matrix.Translation(-_wall.X, -_wall.Y, -_wall.Z); // Move To Center
                _device3D.Transform.World *= Matrix.RotationY(teta); // Rotate on Y axis
                _device3D.Transform.World *= Matrix.Translation(_wall.RightLowerPos); // Move to old position

                if (state == doorState.Closing)
                {
                    if (teta - speed > 0)
                        teta -= speed;
                    else
                    {
                        teta = 0;
                        state = doorState.Closed;
                    }
                }
                else if (state == doorState.Opening)
                {
                    if (teta + speed < _maxRotateAngle)
                        teta += speed;
                    else
                    {
                        teta = _maxRotateAngle;
                        state = doorState.Opened;
                    }
                }
            }
            base.drawWall();
            _device3D.Transform.World = Matrix.Identity;
        }
Exemplo n.º 2
0
    void OpenDoor()
    {
        Vector3 curPos  = door.transform.position;
        float   maxOpen = Mathf.Max(dir == OpenDir.x ? door.transform.lossyScale.x : 0,
                                    dir == OpenDir.y ? door.transform.lossyScale.y : 0,
                                    dir == OpenDir.z ? door.transform.lossyScale.z : 0);

        if (Mathf.Abs(curPos.x - startPos.x) >= maxOpen ||
            Mathf.Abs(curPos.y - startPos.y) >= maxOpen ||
            Mathf.Abs(curPos.z - startPos.z) >= maxOpen)     //Set isOpen to false once maxOpen is reached
        {
            state = doorState.stationary;
        }

        else
        {
            if (Mathf.Abs(curPos.x - startPos.x) <= maxOpen ||
                Mathf.Abs(curPos.y - startPos.y) <= maxOpen ||
                Mathf.Abs(curPos.z - startPos.z) <= maxOpen)
            {
                curPos += new Vector3(dir == OpenDir.x ? doorSpeed * Time.deltaTime : 0,
                                      dir == OpenDir.y ? doorSpeed * Time.deltaTime : 0,
                                      dir == OpenDir.z ? doorSpeed * Time.deltaTime : 0);
            }
        }

        transform.GetChild(0).position = curPos;
    }
Exemplo n.º 3
0
 void CloseDoor()
 {
     anim.speed = defaultSpeed;
     doorOpen   = doorState.Closing;
     anim.Play(closeClipName);
     SFX.PlayOneShot(SFXClip);
     lasersFinished          = Time.time + timeBeforeLasersOn;
     dynamicObjectsContainer = LevelManager.a.GetCurrentLevelDynamicContainer();
     if (dynamicObjectsContainer == null)
     {
         return;                                  //didn't find current level, go ahead and ghost through objects
     }
     // horrible hack to keep objects that have their physics sleeping ghosting through the door as it closes
     for (i = defIndex; i < dynamicObjectsContainer.transform.childCount; i++)
     {
         if (Vector3.Distance(transform.position, dynamicObjectsContainer.transform.GetChild(i).transform.position) < 5)
         {
             Rigidbody changeThis = dynamicObjectsContainer.transform.GetChild(i).GetComponent <Rigidbody>();
             if (changeThis != null)
             {
                 changeThis.WakeUp();
             }
         }
     }
 }
Exemplo n.º 4
0
 void CloseDoor()
 {
     anim.speed = 1f;
     doorOpen   = doorState.Closing;
     anim.Play("DoorClose");
     SFX.PlayOneShot(SFXClip);
     lasersFinished = Time.time + timeBeforeLasersOn;
 }
Exemplo n.º 5
0
    // Use this for initialization
    void Start()
    {
        door     = transform.GetChild(0);
        startPos = door.transform.position;
        state    = isDoorOpenOnStart? doorState.opening : doorState.stationary;

        sounds = GetComponents <AudioSource>();
    }
Exemplo n.º 6
0
    private void OnLoad()
    {
        string doorToLoad = GManager.Instance.ReadNextObjectToLoad((DoorId)0);

        _doorState = (doorState)Enum.Parse(typeof(doorState), GManager.FindStringParameterInObject(doorToLoad, "Door._doorState", "", ""));

        PlayAnimation();
    }
Exemplo n.º 7
0
    void Update()
    {
        if (ajar)
        {
            doorOpen = doorState.Closing;
            anim.Play(openClipName, defIndex, ajarPercentage);
            anim.speed = speedZero;
        }

        if (blocked || (PauseScript.a != null && PauseScript.a.paused))
        {
            Blocked();
        }
        else
        {
            if (PauseScript.a != null && !PauseScript.a.paused)
            {
                Unblocked();
            }
        }

        if (debugging)
        {
            Debug.Log("doorOpen state = " + doorOpen.ToString());
        }

        AnimatorStateInfo asi          = anim.GetCurrentAnimatorStateInfo(defIndex);
        float             playbackTime = asi.normalizedTime;

        //if (anim.GetCurrentAnimatorStateInfo(defIndex).IsName(idleClosedClipName))
        if (doorOpen == doorState.Closing && playbackTime > 0.95f)
        {
            doorOpen = doorState.Closed;              // Door is closed
        }
        //if (anim.GetCurrentAnimatorStateInfo(defIndex).IsName(idleOpenClipName))
        if (doorOpen == doorState.Opening && playbackTime > 0.95f)
        {
            doorOpen = doorState.Open;             // Door is open
        }
        if (Time.time > waitBeforeClose)
        {
            if ((doorOpen == doorState.Open) && (!stayOpen))
            {
                CloseDoor();
            }
        }

        if (lasersFinished < Time.time)
        {
            for (int i = defIndex; i < laserLines.Length; i++)
            {
                laserLines[i].SetActive(true);
            }
        }
    }
Exemplo n.º 8
0
 public void OnActive()
 {
     if (state == doorState.close || state == doorState.closing)
     {
         state = doorState.opening;
     }
     else
     {
         state = doorState.closing;
     }
 }
Exemplo n.º 9
0
 void OnTriggerEnter(Collider col)
 {
     if (col.tag == "Player")
     {
         state = doorState.opening;
         if (!sounds[0].isPlaying)
         {
             sounds[0].Play();
         }
     }
 }
Exemplo n.º 10
0
 void OnTriggerExit(Collider col)
 {
     if (col.tag == "Player")
     {
         state = doorState.closing;
         if (!sounds[1].isPlaying)
         {
             sounds[1].Play();
         }
     }
 }
Exemplo n.º 11
0
    void Use(GameObject owner)
    {
        ajar = false;
        if (useFinished < Time.time)
        {
            useFinished = Time.time + useTimeDelay;
            AnimatorStateInfo asi          = anim.GetCurrentAnimatorStateInfo(0);
            float             playbackTime = asi.normalizedTime;
            //AnimatorClipInfo[] aci = anim.GetCurrentAnimatorClipInfo(0);

            if (!locked)
            {
                if (doorOpen == doorState.Open)
                {
                    CloseDoor();
                    return;
                }

                if (doorOpen == doorState.Closed)
                {
                    OpenDoor();
                    return;
                }

                if (doorOpen == doorState.Opening)
                {
                    if (playbackTime > 0.15f && playbackTime < 0.85f)
                    {
                        doorOpen = doorState.Closing;
                        anim.Play("DoorClose", 0, 1f - playbackTime);
                        SFX.PlayOneShot(SFXClip);
                    }
                    return;
                }

                if (doorOpen == doorState.Closing)
                {
                    if (playbackTime > 0.15f && playbackTime < 0.85f)
                    {
                        doorOpen        = doorState.Opening;
                        waitBeforeClose = Time.time + delay;
                        anim.Play("DoorOpen", 0, 1f - playbackTime);
                        SFX.PlayOneShot(SFXClip);
                    }
                    return;
                }
            }
            else
            {
                Const.sprint(lockedMessage, owner);                // tell the owner of the Use command that we are locked
            }
        }
    }
Exemplo n.º 12
0
	void OpenDoor()
	{
		audioSource.Play ();
		physicalDoorCollider.enabled = false;
		myRenderer.enabled = false;
		button.sprite = buttonSprites [0];
		state = doorState.Open;
		hintImage.enabled = false;
		timer = 0;

		Invoke ("CloseDoor", autoCloseTime);
	}
Exemplo n.º 13
0
    private void Start()
    {
        closePosition = transform.position;
        if (isOpen)
        {
            transform.position += distance;
            state = doorState.opening;
        }

        moreOpen = new bool[3] {
            closePosition.y + distance.y > closePosition.y, closePosition.y + distance.y > closePosition.y, closePosition.z + distance.z > closePosition.z
        };
    }
Exemplo n.º 14
0
 void OnTriggerEnter(Collider other)
 {
     if (other.gameObject.layer == 9 || other.gameObject.layer == 10 || other.gameObject.layer == 16)
     {
         //Debug.Log(other.gameObject.name + " entered the door range");
         _count++;
         if (CurrentState == doorState.CLOSED && !lockedStatus)
         {
             //Debug.Log("Opening the doors");
             this.CurrentState = doorState.OPEN;
             this._animator.SetBool("Open", true);
         }
     }
 }
Exemplo n.º 15
0
 void OnTriggerExit(Collider other)
 {
     if (other.gameObject.layer == 9 || other.gameObject.layer == 10 || other.gameObject.layer == 16)
     {
         //Debug.Log( other.gameObject.name+ " left the door range");
         _count--;
         if (_count == 0)
         {
             //Debug.Log("Closing the doors");
             this.CurrentState = doorState.CLOSED;
             this._animator.SetBool("Open", false);
         }
     }
 }
Exemplo n.º 16
0
 public void close()
 {
     if (_state != doorState.Closed)
     {
         _state    = doorState.Closed;
         _isLocked = true;
         OnClosedDoorEvent(new ClosedDoorEventArgs {
             DoorClosed = "Door is closed"
         });
     }
     else if (_state == doorState.Closed)
     {
         Console.Write("Døren er allerede lukket");
     }
 }
Exemplo n.º 17
0
 void OpenDoor()
 {
     anim.speed      = 1f;
     doorOpen        = doorState.Opening;
     waitBeforeClose = Time.time + delay;
     anim.Play("DoorOpen");
     SFX.PlayOneShot(SFXClip);
     //lightsFinished1 = Time.time + timeBeforeLightsOut1;
     if (toggleLasers)
     {
         for (int i = 0; i < laserLines.Length; i++)
         {
             laserLines[i].SetActive(false);
         }
         lasersFinished = Mathf.Infinity;
     }
 }
Exemplo n.º 18
0
    void Start()
    {
        anim = GetComponent <Animator>();
        if (startOpen)
        {
            doorOpen = doorState.Open;
            anim.Play("IdleOpen");
        }
        else
        {
            doorOpen = doorState.Closed;
            anim.Play("IdleClosed");
        }

        SFX         = GetComponent <AudioSource>();
        useFinished = Time.time;
    }
Exemplo n.º 19
0
    void Update()
    {
        if (ajar)
        {
            doorOpen = doorState.Closing;
            anim.Play("DoorOpen", 0, ajarPercentage);
            anim.speed = 0f;
        }

        if (blocked || (PauseScript.a != null && PauseScript.a.paused))
        {
            Blocked();
        }
        else
        {
            if (PauseScript.a != null && !PauseScript.a.paused)
            {
                Unblocked();
            }
        }

        if (anim.GetCurrentAnimatorStateInfo(0).IsName("IdleClosed"))
        {
            doorOpen = doorState.Closed;              // Door is closed
        }
        if (anim.GetCurrentAnimatorStateInfo(0).IsName("IdleOpen"))
        {
            doorOpen = doorState.Open;             // Door is open
        }
        if (Time.time > waitBeforeClose)
        {
            if ((doorOpen == doorState.Open) && (!stayOpen))
            {
                CloseDoor();
            }
        }

        if (lasersFinished < Time.time)
        {
            for (int i = 0; i < laserLines.Length; i++)
            {
                laserLines[i].SetActive(true);
            }
        }
    }
Exemplo n.º 20
0
 public void open()
 {
     if (!_isLocked && _state != doorState.Open)
     {
         _state = doorState.Open;
         OnDoorOpenEvent(new OpenDoorEventArgs {
             DoorOpen = "Door is open"
         });
     }
     else if (_isLocked)
     {
         Console.WriteLine("Døren er låst");
     }
     else if (!_isLocked && _state == doorState.Open)
     {
         Console.WriteLine("Døren er allerede åben" + "\n");
     }
 }
Exemplo n.º 21
0
    private void OnMouseDown()
    {
        if (_doorState == doorState.close)
        {
            if (PlayerCheck() < playerDistance)
            {
                _doorState          = doorState.open;
                _thisRenderer.color = defaultColor;
                PlayAnimation();

                _player.PassedLevel();
            }
            else
            {
                MessageManager.ShowMessageOnlyText("Подойдите ближе, если хотите открыть эту дверь");
            }
        }
    }
Exemplo n.º 22
0
 private void Update()
 {
     if (state == doorState.closing)
     {
         transform.position += -distance / (1 / Time.deltaTime * time);
         if (MoreVector(closePosition, transform.position))
         {
             state = doorState.close;
         }
     }
     else if (state == doorState.opening)
     {
         transform.position += distance / (1 / Time.deltaTime * time);
         if (MoreVector(transform.position, closePosition + distance))
         {
             state = doorState.open;
         }
     }
 }
Exemplo n.º 23
0
    void CloseDoor()
    {
        Vector3 curPos = door.transform.position;

        if (Mathf.Abs(curPos.x - startPos.x) >= Mathf.Abs(doorSpeed) * Time.deltaTime ||
            Mathf.Abs(curPos.y - startPos.y) >= Mathf.Abs(doorSpeed) * Time.deltaTime ||
            Mathf.Abs(curPos.z - startPos.z) >= Mathf.Abs(doorSpeed) * Time.deltaTime)
        {
            curPos -= new Vector3(dir == OpenDir.x ? doorSpeed * Time.deltaTime : 0,
                                  dir == OpenDir.y ? doorSpeed * Time.deltaTime : 0,
                                  dir == OpenDir.z ? doorSpeed * Time.deltaTime : 0);
        }

        else
        {
            state = doorState.stationary;
        }

        transform.GetChild(0).position = curPos;
    }
Exemplo n.º 24
0
    IEnumerator AnimateClose()
    {
        while (state == doorState.opening)
        {
            yield return(null);
        }

        if (state == doorState.closed || state == doorState.closing)
        {
            yield break;
        }

        state = doorState.closing;

        Vector3 start = bodyTiles[0].transform.position;
        Vector3 end   = start - new Vector3(0, tileSize, 0);

        for (int i = bodyTiles.Count - 1; i >= 0; i--)
        {
            float lerp = 0;
            while (lerp <= 1)
            {
                float delta = Mathf.Lerp(start.y, end.y, lerp);
                lerp += Time.deltaTime * speed;
                delta = Mathf.Lerp(start.y, end.y, lerp) - delta;

                for (int j = i; j < bodyTiles.Count; j++)
                {
                    bodyTiles[j].transform.Translate(new Vector3(0, delta, 0));
                }
                bottom.transform.Translate(new Vector3(0, delta, 0));

                yield return(null);
            }
        }

        state = doorState.closed;
    }
Exemplo n.º 25
0
    void UpdateDoor()
    {
        switch (state)
        {
        case doorState.opening:
            OpenDoor();
            //if (!sound.isPlaying)
            //    sound.Play();
            break;

        case doorState.closing:
            CloseDoor();
            //if (!sound.isPlaying)
            //    sound.Play();
            break;

        default:
            //sounds[0].Stop();
            //sounds[1].Stop();
            state = doorState.stationary;
            break;
        }
    }
Exemplo n.º 26
0
 /// <summary>
 /// "Open" or "Close" the this window
 /// </summary>
 public void openClose()
 {
     switch (state)
     {
         case doorState.Closed: state = doorState.Opening;
             break;
         case doorState.Closing: state = doorState.Closing;
             break;
         case doorState.Opened: state = doorState.Closing;
             break;
         case doorState.Opening: state = doorState.Opening;
             break;
     }
 }
Exemplo n.º 27
0
 protected virtual void openDoorByTrigger(bool musicTrigger, bool soundTrigger, string message)
 {
     rotationVelocity = 0f;
     state = doorState.opening;
 }
Exemplo n.º 28
0
 protected virtual void openDoor(Collider _collider)
 {
     if (_collider == characterController.collider)
     {
         rotationVelocity = 0f;
         state = doorState.opening;
     }
 }
Exemplo n.º 29
0
 // Update is called once per frame
 protected virtual void FixedUpdate()
 {
     switch(state)
     {
     case doorState.opening:
         currentDoorRotation = Mathf.SmoothDampAngle(currentDoorRotation, finalDoorRotation, ref rotationVelocity, doorOpenTime);
         doorHinge.localRotation = Quaternion.Euler(new Vector3(doorHinge.localRotation.eulerAngles.x, currentDoorRotation, doorHinge.localRotation.eulerAngles.z));
         if(currentDoorRotation == finalDoorRotation)
             state = doorState.open;
         break;
     case doorState.closing:
         currentDoorRotation = Mathf.SmoothDampAngle(currentDoorRotation, startingDoorRotation, ref rotationVelocity, doorCloseTime);
         doorHinge.localRotation = Quaternion.Euler(new Vector3(doorHinge.localRotation.eulerAngles.x, currentDoorRotation, doorHinge.localRotation.eulerAngles.z));
         if(currentDoorRotation == startingDoorRotation)
         {
             state = doorState.closed;
             OnClosed();
         }
         break;
     default:
         break;
     }
 }
Exemplo n.º 30
0
 protected void closeDoorOverride(Collider _collider)
 {
     if (_collider == characterController.collider)
     {
         rotationVelocity = 0f;
         state = doorState.closing;
     }
 }
Exemplo n.º 31
0
 /// <summary>
 /// "Open" or "Close" the this window by sounds
 /// </summary>
 public void openClose(SoundBox openSound, SoundBox closeSound)
 {
     switch (state)
     {
         case doorState.Closed: { state = doorState.Opening; openSound.playSound(); }
             break;
         case doorState.Closing: state = doorState.Closing;
             break;
         case doorState.Opened: { state = doorState.Closing; closeSound.playSound(); }
             break;
         case doorState.Opening: state = doorState.Opening;
             break;
     }
 }
Exemplo n.º 32
0
	void HackDoor()
	{
		//play hack sound
		physicalDoorCollider.enabled = true;
		myRenderer.enabled = true;
		button.sprite = buttonSprites [2];
		state = doorState.Hacked;
	}
Exemplo n.º 33
0
    void Use(UseData ud)
    {
        ajar = false;
        if (useFinished < Time.time)
        {
            if (requiredAccessCard == accessCardType.None || ud.owner.GetComponent <PlayerReferenceManager>().playerInventory.GetComponent <AccessCardInventory>().HasAccessCard(requiredAccessCard))
            {
                useFinished = Time.time + useTimeDelay;
                AnimatorStateInfo asi          = anim.GetCurrentAnimatorStateInfo(defIndex);
                float             playbackTime = asi.normalizedTime;
                //AnimatorClipInfo[] aci = anim.GetCurrentAnimatorClipInfo(defIndex);

                if (!locked)
                {
                    if (requiredAccessCard != accessCardType.None)
                    {
                        Const.sprint(requiredAccessCard.ToString() + cardUsedMessage, ud.owner);                        // tell the owner of the Use command that we are locked
                    }

                    if (doorOpen == doorState.Open)
                    {
                        CloseDoor();
                        return;
                    }

                    if (doorOpen == doorState.Closed)
                    {
                        OpenDoor();
                        return;
                    }

                    if (doorOpen == doorState.Opening)
                    {
                        if (playbackTime > minTime && playbackTime < maxTime)
                        {
                            doorOpen = doorState.Closing;
                            anim.Play(closeClipName, defIndex, topTime - playbackTime);
                            SFX.PlayOneShot(SFXClip);
                        }
                        return;
                    }

                    if (doorOpen == doorState.Closing)
                    {
                        if (playbackTime > minTime && playbackTime < maxTime)
                        {
                            doorOpen        = doorState.Opening;
                            waitBeforeClose = Time.time + delay;
                            anim.Play(openClipName, defIndex, topTime - playbackTime);
                            SFX.PlayOneShot(SFXClip);
                        }
                        return;
                    }
                }
                else
                {
                    if (requiredAccessCard != accessCardType.None)
                    {
                        Const.sprint(requiredAccessCard.ToString() + cardUsedMessage + butdoorStillLockedMessage, ud.owner);
                    }
                    else
                    {
                        Const.sprint(lockedMessage, ud.owner);                        // tell the owner of the Use command that we are locked
                    }
                }
            }
            else
            {
                Const.sprint(requiredAccessCard.ToString() + cardMessage, ud.owner);                // tell the owner of the Use command that we are locked
            }
        }
    }
Exemplo n.º 34
0
        public override void drawWall()
        {
            if (!hasError)
            {
                switch (openTo)
                {
                    case openTranslationVector.Up:
                        _device3D.Transform.World = Matrix.Translation(0, reLocation, 0);
                        break;
                    case openTranslationVector.Down:
                        _device3D.Transform.World = Matrix.Translation(0, -reLocation, 0);
                        break;
                    case openTranslationVector.Right:
                        _device3D.Transform.World = Matrix.Translation(-reLocation, 0, 0);
                        break;
                    case openTranslationVector.Left:
                        _device3D.Transform.World = Matrix.Translation(reLocation, 0, 0);
                        break;
                    case openTranslationVector.Depth:
                        _device3D.Transform.World = Matrix.Translation(0, 0, reLocation);
                        break;
                    case openTranslationVector.OutSide:
                        _device3D.Transform.World = Matrix.Translation(0, 0, -reLocation);
                        break;
                }

                if (state == doorState.Closing)
                {
                    if (reLocation - speed > 0)
                        reLocation -= speed;
                    else
                    {
                        reLocation = 0;
                        state = doorState.Closed;
                    }
                }
                else if (state == doorState.Opening)
                {
                    if (reLocation + speed < maxTranslationDistance)
                        reLocation += speed;
                    else
                    {
                        reLocation = maxTranslationDistance;
                        state = doorState.Opened;
                    }
                }
            }

            if (_isTransparent)
            {
                _device3D.RenderState.SourceBlend = Blend.One;
                _device3D.RenderState.DestinationBlend = Blend.SourceColor;
            }
            _device3D.RenderState.AlphaBlendEnable = true;
            base.drawWall();
            _device3D.RenderState.AlphaBlendEnable = false;
            _device3D.Transform.World = Matrix.Identity;
        }
Exemplo n.º 35
0
	void CloseDoor()
	{
		Collider2D[] others = Physics2D.OverlapCircleAll (transform.position, 2, mask);

		foreach(Collider2D other in others)
		{
			if(detectorCollider.IsTouching(other))
			{
				Invoke ("CloseDoor", autoCloseTime);
				return;
			}
		}
		audioSource.Play ();
		physicalDoorCollider.enabled = true;
		myRenderer.enabled = true;
		button.sprite = buttonSprites [1];
		state = doorState.Closed;
	}