예제 #1
0
 private void UpdateGameObject()
 {
     if (currentTeam != playerInfo.statsInTick[replay.seekIndex].teamID)
     {
         GameObject newAppearance = null;
         Material   teamMaterial  = new Material(ApplicationPreferences.playerMaterial);
         //currentTeam = playerInfo.statsInTick[replay.seekIndex].teamID;
         if (playerInfo.statsInTick[replay.seekIndex].teamID == replay.demoTicks[replay.seekIndex].ctID)
         {
             //GameObject[] ct = Resources.LoadAll<GameObject>("Prefabs/CT");
             //newAppearance = GameObject.Instantiate(ct[Random.Range(0, ct.Length)]) as GameObject;
             newAppearance      = GameObject.Instantiate(Resources.Load <GameObject>("Prefabs/Faceless")) as GameObject;
             teamMaterial.color = ApplicationPreferences.ctColor;
             Renderer facelessRenderer = newAppearance.GetComponentInChildren <Renderer>();
             if (facelessRenderer != null)
             {
                 facelessRenderer.material = teamMaterial;
             }
             newAppearance.GetComponent <Animator>().runtimeAnimatorController = Resources.Load <RuntimeAnimatorController>("Animation/AnimationControllers/CustomHumanoidController");
             newAppearance.GetComponent <Animator>().applyRootMotion           = false;
         }
         else if (playerInfo.statsInTick[replay.seekIndex].teamID == replay.demoTicks[replay.seekIndex].tID)
         {
             //GameObject[] t = Resources.LoadAll<GameObject>("Prefabs/T");
             //newAppearance = GameObject.Instantiate(t[Random.Range(0, t.Length)]) as GameObject;
             newAppearance      = GameObject.Instantiate(Resources.Load <GameObject>("Prefabs/Faceless")) as GameObject;
             teamMaterial.color = ApplicationPreferences.tColor;
             Renderer facelessRenderer = newAppearance.GetComponentInChildren <Renderer>();
             if (facelessRenderer != null)
             {
                 facelessRenderer.material = teamMaterial;
             }
             newAppearance.GetComponent <Animator>().runtimeAnimatorController = Resources.Load <RuntimeAnimatorController>("Animation/AnimationControllers/CustomHumanoidController");
             newAppearance.GetComponent <Animator>().applyRootMotion           = false;
         }
         if (newAppearance != null)
         {
             //GameObject oldGameObject = gameObject;
             CSGOPlayer shiftSelf = newAppearance.AddComponent <CSGOPlayer>();
             shiftSelf.playerInfo  = playerInfo;
             shiftSelf.replay      = replay;
             shiftSelf.currentTeam = playerInfo.statsInTick[replay.seekIndex].teamID;
             replay.playerObjects[playerInfo.key] = shiftSelf;
             GameObject.DestroyImmediate(gameObject);
             //shiftSelf = this;
             //GameObject.DestroyImmediate(oldGameObject);
         }
     }
 }
예제 #2
0
    public void Stream()
    {
        if (port > -1)
        {
            if (gotvSocket != null)
            {
                if (gotvSocket.Available > 0)
                {
                    //Debug.Log("Availability: " + gotvSocket.Available);
                    try
                    {
                        byte[] received      = new byte[2048];
                        int    receivedBytes = gotvSocket.Receive(received);
                        byte[] packetData    = new byte[receivedBytes];
                        Array.ConstrainedCopy(received, 0, packetData, 0, receivedBytes);
                        Debug.Log("Packet Length: " + receivedBytes);
                        Debug.Log("Plain Text: " + GetStringUTF16(packetData));
                        Debug.Log("Numbers: " + ConvertToBunchNumbers(packetData));

                        ReadNetMessage(packetData);

                        //packetData = ProtoBuf.ProtoReader.DirectReadBytes(new System.IO.MemoryStream(packetData), packetData.Length);
                        //System.IO.MemoryStream decompressed = new System.IO.MemoryStream();
                        //BZip2.Decompress(new System.IO.MemoryStream(packetData), decompressed, true);
                        //packetData = new byte[((int)decompressed.Length)];
                        //decompressed.Read(packetData, 0, packetData.Length);
                        //Debug.Log("After ProtoBuf: " + GetStringUTF16(packetData));
                    }
                    catch (System.Exception e) { Debug.Log(e.Message); }
                }
            }
        }

        if (play)
        {
            if (port > -1)
            {
                //set tick to last received
            }

            if (demoTicks != null && demoTicks.Count > 0)
            {
                if (playerObjects.Count < players.Count)
                {
                    List <Player> missingKeys = new List <Player>();
                    foreach (KeyValuePair <Player, DemoEntity> entry in players)
                    {
                        if (!playerObjects.ContainsKey(entry.Key))
                        {
                            missingKeys.Add(entry.Key);
                        }
                    }

                    foreach (Player key in missingKeys)
                    {
                        GameObject entryObject = new GameObject();
                        CSGOPlayer entryPlayer = entryObject.AddComponent <CSGOPlayer>();
                        entryPlayer.replay     = this;
                        entryPlayer.playerInfo = players[key];
                        playerObjects.Add(key, entryPlayer);
                    }
                }

                if (seekIndex < 0 || seekIndex >= demoTicks.Count)
                {
                    seekIndex = 0;
                }
                if (port > 0)
                {
                    demoParser.ParseNextTick(); seekIndex = demoTicks.Count - 1;
                }
                if (Time.time - previousTime >= playSpeed)
                {
                    seekIndex   += (int)((Time.time - previousTime) / playSpeed);
                    previousTime = Time.time;
                }
            }
        }
        else
        {
            previousTime = Time.time;
        }

        /*if ((Input.GetMouseButton(0) || Input.GetMouseButton(1)) && !switchedTarget)
         * {
         *  CameraControl theCam = Camera.main.GetComponent<CameraControl>();
         *
         *  if (playerObjects != null && playerObjects.Count > 0)
         *  {
         *      int currentIndex = -1;
         *      if (theCam.target != null)
         *      {
         *          for (int i = 0; i < playerObjects.Count; i++)
         *          {
         *              if (playerObjects[i].entityID == theCam.target.gameObject.GetComponent<CSGOPlayer>().entityID) { currentIndex = i; break; }
         *          }
         *          //playerObjects.IndexOf(theCam.target.gameObject.GetComponent<CSGOPlayer>());
         *      }
         *      //Debug.Log("Previous Index: " + currentIndex);
         *      if (Input.GetMouseButton(0)) currentIndex++;
         *      else if (Input.GetMouseButton(1)) currentIndex--;
         *      if (currentIndex > playerObjects.Count - 1) currentIndex = 0;
         *      if (currentIndex < 0) currentIndex = playerObjects.Count - 1;
         *
         *      theCam.target = playerObjects[currentIndex].transform;
         *      switchedTarget = true;
         *  }
         *  else
         *  {
         *      theCam.target = null;
         *  }
         * }
         * else if (!Input.GetMouseButton(0) && !Input.GetMouseButton(1)) switchedTarget = false;*/
    }
예제 #3
0
 public static bool GlowCheck(ClassID id,CSGOPlayer entity, ref Color clr)
 {
     switch (id)
     {
         case ClassID.CSPlayer:
             {
                 //if (entity.m_iTeam == Program.localPlayer.m_iTeam)
                 //    clr = Color.Blue;
                 //else if (entity.m_bSpotted && (entity.m_iTeam == 3 || entity.m_iTeam == 3))
                 //    clr = Color.Green;
                 //else
                 //    clr = Color.Red;
                 break;
             }
         case ClassID.AK47:
         case ClassID.DEagle:
         case ClassID.WeaponAUG:
         case ClassID.WeaponAWP:
         case ClassID.WeaponBizon:
         case ClassID.WeaponElite:
         case ClassID.WeaponFiveSeven:
         case ClassID.WeaponG3SG1:
         case ClassID.WeaponGalilAR:
         case ClassID.WeaponGlock:
         case ClassID.WeaponHKP2000:
         case ClassID.WeaponM249:
         case ClassID.WeaponM249x:
         case ClassID.WeaponM4A1:
         case ClassID.WeaponMP7:
         case ClassID.WeaponMP9:
         case ClassID.WeaponMag7:
         case ClassID.WeaponNOVA:
         case ClassID.WeaponNegev:
         case ClassID.WeaponP250:
         case ClassID.WeaponP90:
         case ClassID.WeaponP90x:
         case ClassID.WeaponSCAR20:
         case ClassID.WeaponSG556:
         case ClassID.WeaponSSG08:
         case ClassID.WeaponTaser:
         case ClassID.WeaponTec9:
         case ClassID.WeaponTec9x:
         case ClassID.WeaponUMP45:
         case ClassID.WeaponXM1014:
         case ClassID.WeaponNova:
         case ClassID.WeaponM4:
         case ClassID.WeaponUMP45x:
         case ClassID.WeaponXM1014x:
         case ClassID.WeaponMAG:
         case ClassID.WeaponG3SG1x:
         case ClassID.WeaponDualBerettas:
         case ClassID.WeaponPPBizon:
         case ClassID.WeaponSCAR20x:
             {
                 clr = Color.Violet;
                 break;
             }
         case ClassID.HEGrenade:
         case ClassID.SmokeGrenade:
         case ClassID.MolotovGrenade:
         case ClassID.IncendiaryGrenade:
         case ClassID.Flashbang:
         case ClassID.DecoyGrenade:
         case ClassID.ParticleDecoy:
         case ClassID.ParticleSmokeGrenade:
         case ClassID.SmokeStack:
         case ClassID.ParticleIncendiaryGrenade:
         case ClassID.ParticleFlash:
             {
                 clr = Color.Green;
                 break;
             }
         case ClassID.Hostage:
         case ClassID.Chicken:
             {
                 clr = Color.HotPink;
                 break;
             }
         case ClassID.C4:
         case ClassID.PlantedC4:
             {
                 clr = Color.DarkViolet;
                 break;
             }
         default:
             break;
     }
     return clr == Color.Black;
 }
예제 #4
0
    void LateUpdate()
    {
        float horizontal = 0, vertical = 0, scroll = 0;

        if (!blockControl)
        {
            #region Touch Controls
            if (Input.touches.Length >= 2)
            {
                Vector2 firstPosition  = Input.touches[0].position;
                Vector2 secondPosition = Input.touches[1].position;

                if (firstTouch < 0 || secondTouch < 0 || firstTouch != Input.touches[0].fingerId || secondTouch != Input.touches[1].fingerId)
                {
                    firstTouch     = Input.touches[0].fingerId;
                    secondTouch    = Input.touches[1].fingerId;
                    fingerDistance = (firstPosition - secondPosition).magnitude;
                    zoomed         = false;
                }
                else
                {
                    if (zoomed || (firstPosition - secondPosition).magnitude - fingerDistance > zoomDeadZone)
                    {
                        scroll        += (firstPosition - secondPosition).magnitude - fingerDistance;
                        fingerDistance = (firstPosition - secondPosition).magnitude;
                        zoomed         = true;
                    }
                }
            }
            else if (Input.touches.Length >= 1)
            {
                if (firstTouch < 0)
                {
                    firstTouch    = Input.touches[0].fingerId;
                    previousMouse = new Vector3(Input.touches[0].position.x, Input.touches[0].position.y, 0);
                    moved         = false;
                }
                if (firstTouch > -1)
                {
                    if (moved || Mathf.Abs(Input.touches[0].position.x - previousMouse.x) > movementDeadZone || Mathf.Abs(Input.touches[0].position.y - previousMouse.y) > movementDeadZone)
                    {
                        horizontal    = Input.touches[0].position.x - previousMouse.x;
                        vertical      = previousMouse.y - Input.touches[0].position.y;
                        previousMouse = new Vector3(Input.touches[0].position.x, Input.touches[0].position.y, 0);
                        moved         = true;
                    }
                }
            }
            else
            {
                firstTouch = -1; secondTouch = -1;
            }
            #endregion

            #region Mouse Controls
            if (Input.touches.Length <= 0)
            {
                if (!mouseDown && Input.GetMouseButton(0))
                {
                    mouseDown     = true;
                    previousMouse = Input.mousePosition;
                }
                if (!Input.GetMouseButton(0))
                {
                    mouseDown = false;
                }
                if (mouseDown)
                {
                    horizontal    = Input.mousePosition.x - previousMouse.x;
                    vertical      = previousMouse.y - Input.mousePosition.y;
                    previousMouse = Input.mousePosition;
                }
            }
            if (target == null)
            {
                scroll += Input.mouseScrollDelta.y;
            }
            else
            {
                scroll += -Input.mouseScrollDelta.y;
            }
            #endregion
        }
        #region Add Buffs
        if (invertZoom)
        {
            scroll *= -1;
        }
        if (invertX)
        {
            horizontal *= -1;
        }
        if (invertY)
        {
            vertical *= -1;
        }
        scroll     *= scrollStrength;
        horizontal *= rotationStrength;
        vertical   *= rotationStrength;
        #endregion

        if (target != null)
        {
            CSGOPlayer targetPlayer = target.GetComponent <CSGOPlayer>();

            if (distance + scroll <= 0)
            {
                distance = 0;
            }
            else
            {
                distance += scroll;
            }

            #region Third Person View
            if (distance > 0)
            {
                if (targetPlayer != null && targetPlayer.chestPosition != null)
                {
                    Camera.main.transform.rotation *= Quaternion.AngleAxis(horizontal, Vector3.up) * Quaternion.AngleAxis(vertical, Vector3.right);
                    Camera.main.transform.position  = targetPlayer.chestPosition.position - (Camera.main.transform.forward * distance);
                    Camera.main.transform.rotation  = Quaternion.LookRotation((targetPlayer.chestPosition.position - Camera.main.transform.position).normalized);
                }
                else
                {
                    Camera.main.transform.rotation *= Quaternion.AngleAxis(horizontal, Vector3.up) * Quaternion.AngleAxis(vertical, Vector3.right);
                    Camera.main.transform.position  = target.position - (Camera.main.transform.forward * distance);
                    Camera.main.transform.rotation  = Quaternion.LookRotation((target.position - Camera.main.transform.position).normalized);
                }
            }
            #endregion
            #region First Person View
            else
            {
                if (targetPlayer != null)
                {
                    //Vector3 steadyPosition = new Vector3(targetPlayer.headPosition.position.x, 0, targetPlayer.headPosition.position.z);
                    //Quaternion steadyRotation = Quaternion.Euler(targetPlayer.headPosition.eulerAngles.x, targetPlayer.headPosition.eulerAngles.y, 0);

                    Camera.main.transform.position = targetPlayer.transform.position + (targetPlayer.transform.forward * targetPlayer.aimPosition.z) + (targetPlayer.transform.up * targetPlayer.aimPosition.y);
                    //Camera.main.transform.position = targetPlayer.transform.position + targetPlayer.aimPosition;
                    Camera.main.transform.rotation = Quaternion.Euler(targetPlayer.aimDirection.y - 90f, targetPlayer.aimDirection.x, 0);
                }
                else
                {
                    Camera.main.transform.position = target.position;
                    Camera.main.transform.rotation = target.rotation;
                }
            }
            #endregion
        }
        else
        {
            Camera.main.transform.rotation  = (Quaternion.AngleAxis(horizontal, Vector3.up) * Camera.main.transform.rotation) * Quaternion.AngleAxis(vertical, Vector3.right);
            Camera.main.transform.position += Camera.main.transform.forward * scroll;
        }
    }