コード例 #1
0
        public virtual IEnumerator MoveRoutine(List <Bullet> bullets)
        {
            List <BulletEntry> bulletEntries = new List <BulletEntry>();

            foreach (Bullet bullet in bullets)
            {
                BulletEntry bulletEntry = new BulletEntry(bullet);
                if (bulletEntry.yMoveDirection != 0)
                {
                    Retarget(bullet, Vector3.up * bulletEntry.yMoveDirection);
                    bulletEntries.Add(bulletEntry);
                }
            }
            while (bulletEntries.Count > 0)
            {
                for (int i = 0; i < bulletEntries.Count; i++)
                {
                    BulletEntry bulletEntry = (BulletEntry)bulletEntries[i];
                    if (MathfExtensions.Sign(GameManager.GetSingleton <PlayerMouse>().trs.position.y - bulletEntry.bullet.trs.position.y) != bulletEntry.yMoveDirection)
                    {
                        bulletEntries.RemoveAt(i);
                        i--;
                    }
                }
                yield return(new WaitForEndOfFrame());
            }
            foreach (Bullet bullet in bullets)
            {
                Retarget(bullet);
            }
        }
コード例 #2
0
ファイル: CombineCubes.cs プロジェクト: Master109/Vision-Game
    public void OnEnable()
    {
        if (combineEntries.Length == 0)
        {
            return;
        }
        KeyValuePair <Mesh, Transform>[] meshesAndTransforms = new KeyValuePair <Mesh, Transform> [combineEntries.Length];
        CombineInstance[] combineInstances = new CombineInstance[combineEntries.Length];
        for (int i = 0; i < combineEntries.Length; i++)
        {
            CombineEntry combineEntry = combineEntries[i];
            meshesAndTransforms[i] = new KeyValuePair <Mesh, Transform>(combineEntry.meshFilter.sharedMesh, combineEntry.trs);
            CombineInstance combineInstance = combineInstances[i];
            combineInstance.mesh      = Instantiate(combineEntry.meshFilter.sharedMesh);
            combineInstance.transform = combineEntry.trs.localToWorldMatrix;
            combineEntry.trs.gameObject.SetActive(false);
            combineInstances[i] = combineInstance;
        }
        for (int i = 0; i < meshesAndTransforms.Length; i++)
        {
            KeyValuePair <Mesh, Transform> meshAndTransform = meshesAndTransforms[i];
            for (int i2 = 0; i2 < meshesAndTransforms.Length; i2++)
            {
                KeyValuePair <Mesh, Transform> otherMeshAndTransform = meshesAndTransforms[i2];
                Vector3 toOtherTrs = otherMeshAndTransform.Value.position - meshAndTransform.Value.position;
                if (toOtherTrs.sqrMagnitude == 1)
                {
                    MeshExtensions.MeshTriangle[] meshTriangles = MeshExtensions.GetMeshTriangles(new KeyValuePair <Mesh, Transform>[1] {
                        meshAndTransform
                    });
                    MeshExtensions.MeshTriangle[] otherMeshTriangles = MeshExtensions.GetMeshTriangles(new KeyValuePair <Mesh, Transform>[1] {
                        otherMeshAndTransform
                    });
                    int toOtherTrsXSign = MathfExtensions.Sign(toOtherTrs.x);
                    int toOtherTrsYSign = MathfExtensions.Sign(toOtherTrs.y);
                    int toOtherTrsZSign = MathfExtensions.Sign(toOtherTrs.z);
                    if (toOtherTrsXSign != 0)
                    {
                        for (int i3 = 0; i3 < meshTriangles.Length; i3++)
                        {
                            MeshExtensions.MeshTriangle meshTriangle = meshTriangles[i3];
                            if (Mathf.Sign(meshTriangle.point1.x - meshAndTransform.Value.position.x) == toOtherTrsXSign && Mathf.Sign(meshTriangle.point2.x - meshAndTransform.Value.position.x) == toOtherTrsXSign && Mathf.Sign(meshTriangle.point3.x - meshAndTransform.Value.position.x) == toOtherTrsXSign)
                            {
                                meshTriangle.RemoveFromMesh();
                                for (int i4 = 0; i4 < meshTriangles.Length; i4++)
                                {
                                    if (meshTriangles[i4].triangleIndex > meshTriangle.triangleIndex)
                                    {
                                        meshTriangles[i4].triangleIndex--;
                                    }
                                }
                            }
                        }
                        for (int i3 = 0; i3 < otherMeshTriangles.Length; i3++)
                        {
                            MeshExtensions.MeshTriangle meshTriangle = otherMeshTriangles[i3];
                            if (Mathf.Sign(meshTriangle.point1.x - otherMeshAndTransform.Value.position.x) == -toOtherTrsXSign && Mathf.Sign(meshTriangle.point2.x - otherMeshAndTransform.Value.position.x) == -toOtherTrsXSign && Mathf.Sign(meshTriangle.point3.x - otherMeshAndTransform.Value.position.x) == -toOtherTrsXSign)
                            {
                                meshTriangle.RemoveFromMesh();
                                for (int i4 = 0; i4 < otherMeshTriangles.Length; i4++)
                                {
                                    if (otherMeshTriangles[i4].triangleIndex > meshTriangle.triangleIndex)
                                    {
                                        otherMeshTriangles[i4].triangleIndex--;
                                    }
                                }
                            }
                        }
                    }
                    else if (toOtherTrsYSign != 0)
                    {
                        for (int i3 = 0; i3 < meshTriangles.Length; i3++)
                        {
                            MeshExtensions.MeshTriangle meshTriangle = meshTriangles[i3];
                            if (Mathf.Sign(meshTriangle.point1.y - meshAndTransform.Value.position.y) == toOtherTrsYSign && Mathf.Sign(meshTriangle.point2.y - meshAndTransform.Value.position.y) == toOtherTrsYSign && Mathf.Sign(meshTriangle.point3.y - meshAndTransform.Value.position.y) == toOtherTrsYSign)
                            {
                                meshTriangle.RemoveFromMesh();
                                for (int i4 = 0; i4 < meshTriangles.Length; i4++)
                                {
                                    if (meshTriangles[i4].triangleIndex > meshTriangle.triangleIndex)
                                    {
                                        meshTriangles[i4].triangleIndex--;
                                    }
                                }
                            }
                        }
                        for (int i3 = 0; i3 < otherMeshTriangles.Length; i3++)
                        {
                            MeshExtensions.MeshTriangle meshTriangle = otherMeshTriangles[i3];
                            if (Mathf.Sign(meshTriangle.point1.y - otherMeshAndTransform.Value.position.y) == -toOtherTrsYSign && Mathf.Sign(meshTriangle.point2.y - otherMeshAndTransform.Value.position.y) == -toOtherTrsYSign && Mathf.Sign(meshTriangle.point3.y - otherMeshAndTransform.Value.position.y) == -toOtherTrsYSign)
                            {
                                meshTriangle.RemoveFromMesh();
                                for (int i4 = 0; i4 < otherMeshTriangles.Length; i4++)
                                {
                                    if (otherMeshTriangles[i4].triangleIndex > meshTriangle.triangleIndex)
                                    {
                                        otherMeshTriangles[i4].triangleIndex--;
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        for (int i3 = 0; i3 < meshTriangles.Length; i3++)
                        {
                            MeshExtensions.MeshTriangle meshTriangle = meshTriangles[i3];
                            if (Mathf.Sign(meshTriangle.point1.z - meshAndTransform.Value.position.z) == toOtherTrsZSign && Mathf.Sign(meshTriangle.point2.z - meshAndTransform.Value.position.z) == toOtherTrsZSign && Mathf.Sign(meshTriangle.point3.z - meshAndTransform.Value.position.z) == toOtherTrsZSign)
                            {
                                meshTriangle.RemoveFromMesh();
                                for (int i4 = 0; i4 < meshTriangles.Length; i4++)
                                {
                                    if (meshTriangles[i4].triangleIndex > meshTriangle.triangleIndex)
                                    {
                                        meshTriangles[i4].triangleIndex--;
                                    }
                                }
                            }
                        }
                        for (int i3 = 0; i3 < otherMeshTriangles.Length; i3++)
                        {
                            MeshExtensions.MeshTriangle meshTriangle = otherMeshTriangles[i3];
                            if (Mathf.Sign(meshTriangle.point1.z - otherMeshAndTransform.Value.position.z) == -toOtherTrsZSign && Mathf.Sign(meshTriangle.point2.z - otherMeshAndTransform.Value.position.z) == -toOtherTrsZSign && Mathf.Sign(meshTriangle.point3.z - otherMeshAndTransform.Value.position.z) == -toOtherTrsZSign)
                            {
                                meshTriangle.RemoveFromMesh();
                                for (int i4 = 0; i4 < otherMeshTriangles.Length; i4++)
                                {
                                    if (otherMeshTriangles[i4].triangleIndex > meshTriangle.triangleIndex)
                                    {
                                        otherMeshTriangles[i4].triangleIndex--;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        MeshFilter meshFilter;
        Rigidbody  rigid = null;

        if (outputGo == null)
        {
            outputGo   = new GameObject();
            meshFilter = outputGo.AddComponent <MeshFilter>();
            outputGo.AddComponent <MeshRenderer>();
        }
        else
        {
            meshFilter = outputGo.GetComponent <MeshFilter>();
            if (meshFilter == null)
            {
                meshFilter = outputGo.AddComponent <MeshFilter>();
            }
            if (autoAddRigidbody)
            {
                rigid = outputGo.GetComponent <Rigidbody>();
            }
        }
        if (autoAddRigidbody)
        {
            if (rigid == null)
            {
                rigid = outputGo.AddComponent <Rigidbody>();
            }
            rigid.mass = combineEntries.Length;
        }
        if (autoSetColliders)
        {
            Collider[] colliders = outputGo.GetComponents <Collider>();
            for (int i2 = 0; i2 < colliders.Length; i2++)
            {
                Collider collider = colliders[i2];
                DestroyImmediate(collider);
            }
            for (int i = 0; i < combineEntries.Length; i++)
            {
                CombineEntry combineEntry = combineEntries[i];
                BoxCollider  boxCollider  = outputGo.AddComponent <BoxCollider>();
                Transform    outputTrs    = outputGo.GetComponent <Transform>();
                boxCollider.center = outputTrs.InverseTransformPoint(combineEntry.trs.position);
                boxCollider.size   = outputTrs.InverseTransformPoint(combineEntry.trs.lossyScale);
            }
        }
        meshFilter.sharedMesh = new Mesh();
        meshFilter.sharedMesh.CombineMeshes(combineInstances);
        // for (int i = 0; i < combineEntries.Length; i ++)
        //  DestroyImmediate(combineEntries[i].trs.gameObject);
        outputGo       = null;
        combineEntries = new CombineEntry[0];
    }
コード例 #3
0
    public virtual void ControlSelected()
    {
        if (!inControlMode)
        {
            return;
        }
        _Slider slider = currentSelected.GetComponent <_Slider>();

        if (slider != null)
        {
            slider.indexOfCurrentSnapValue = Mathf.Clamp(slider.indexOfCurrentSnapValue + MathfExtensions.Sign(inputDirection.x), 0, slider.snapValues.Length - 1);
            slider.slider.value            = slider.snapValues[slider.indexOfCurrentSnapValue];
        }
    }
コード例 #4
0
 public BulletEntry(Bullet bullet)
 {
     this.bullet    = bullet;
     yMoveDirection = MathfExtensions.Sign(GameManager.GetSingleton <PlayerMouse>().trs.position.y - bullet.trs.position.y);
 }
コード例 #5
0
 public BulletEntry(Bullet bullet)
 {
     this.bullet    = bullet;
     yMoveDirection = MathfExtensions.Sign(PlayerMouse.Instance.trs.position.y - bullet.trs.position.y);
 }