示例#1
0
 public void UpdateWaveEmittersMaterials()
 {
     for (int i = 0; i < waveEmitters.Count; i++)
     {
         WaveEmitter currWaveEmitter = waveEmitters[i];
         currWaveEmitter.UpdateMaterial();
     }
 }
示例#2
0
 // Use this for initialization
 void Start()
 {
     //set up the references to other objects
     go = (GameObject)GameObject.FindGameObjectWithTag("ObjectManager");
     myEnemyManager = (EnemyManager)go.GetComponent ("EnemyManager");
     go = (GameObject)GameObject.FindGameObjectWithTag("WaveGen");
     WE = (WaveEmitter)go.GetComponent("WaveEmitter");
     colorIndex=0;
 }
示例#3
0
    // Start is called before the first frame update
    void Start()
    {
        waveEmitter = GetComponent <WaveEmitter>();
        GameObject main = GameObject.Find("MainSoundControl");

        if (main != null)
        {
            meshisVisible = main.GetComponent <MainSoundControl>().MeshesAreVisible;
            GetComponent <MeshRenderer>().enabled = meshisVisible;
        }
    }
示例#4
0
文件: GetPath.cs 项目: jdhuns2/cs499
    // Use this for initialization
    void init()
    {
        isActive = false;
        outofplay = false;
        waveNum = -1;

        //gets available paths
        GameObject go = (GameObject)GameObject.FindGameObjectWithTag("WaveGen");
        WE = (WaveEmitter)go.GetComponent ("WaveEmitter");
        //pths = (RPathGen)go.GetComponent("RPathGen");
        PM = (PathManager)go.GetComponent ("PathManager");
        PM.init ();
        go = (GameObject)GameObject.FindGameObjectWithTag ("MainCamera");
        cam1 = (Camera)go.GetComponent ("Camera");
        //add iTween component and get ref
        gameObject.AddComponent("iTweenPath");
        path = (iTweenPath)gameObject.GetComponent("iTweenPath");
    }
示例#5
0
    private void OnTriggerEnter(Collider other)
    {
        // handle contact with base : teleport
        Base baseComponent = other.GetComponentInParent <Base>();

        if (baseComponent != null && baseComponent != Player.INSTANCE.currentBase)
        {
            GameController.INSTANCE.TeleportPlayerToBase(baseComponent);

            // kill the wave
            wave.gameObject.DestroyRecursive();
            return;
        }

        // handle contact with other vibrating objects
        WaveEmitter waveEmitter = other.GetComponentInParent <WaveEmitter>();

        if (waveEmitter != null && waveEmitter.enabled)
        {
            if (waveEmitter.waveType == WaveType.FLAT || waveEmitter.waveType != wave.waveType)
            {
                if (waveEmitter.canAbsorbWaveType)
                {
                    // change wave type of the object
                    waveEmitter.ChangeWaveType(wave.waveType);
                }

                // kill the wave
                wave.gameObject.DestroyRecursive();
//                gameObject.DestroyRecursive();
            }
            else
            {
                // wave can go through
                // no op
            }
        }
        else
        {
            // kill wave
//            wave.gameObject.DestroyRecursive();
        }
    }
    public override void _Ready()
    {
        base._Ready();

        var vr = ARVRServer.FindInterface("OpenVR");

        if (vr != null && vr.Initialize())
        {
            GetViewport().Arvr = true;

            OS.VsyncEnabled            = false;
            Engine.IterationsPerSecond = 90;
        }

        Ribbon         = GetNode <Ribbon>("ARVROrigin/Ribbon");
        WaveEmitter    = GetNode <WaveEmitter>("WaveEmitter");
        GameStartTimer = GetNode <Timer>("GameStartTimer");
        //GameStartTimer.Start();
    }
示例#7
0
    void OnTriggerEnter2D(Collider2D collider)
    {
        WaveEmitter wave = collider.GetComponent <WaveEmitter>();

        if (wave != null)
        {
            wave.emitting = true;
        }

        WaterCrystal crystal = collider.GetComponent <WaterCrystal>();

        if (crystal != null)
        {
            crystal.emitting = true;
        }

        MinerController miner = collider.GetComponent <MinerController>();

        if (miner != null)
        {
            miner.enabled = true;
        }
    }
示例#8
0
    void Update()
    {
        // Keep the Ocean centered on the FollowCamera
        transform.position = new Vector3(FollowCamera.position.x, 0, FollowCamera.position.z);

        // Reset waves
        Vector3[] vertices = mesh.vertices;
        for (int i = 1; i < vertices.Length; i++)
        {
            vertices[i].y = 0;
        }

        for (int i = WaveEmitters.Count - 1; i > -1; i--)
        {
            WaveEmitter e = WaveEmitters[i];

            e.Update(Time.deltaTime);
            if (!e.HasWaves)
            {
                WaveEmitters.RemoveAt(i);
            }

            // Is the WaveEmitter outside the ViewDistance?
            if (Mathf.Sqrt(Mathf.Pow(e.Position.x - transform.position.x, 2) +
                           Mathf.Pow(e.Position.y - transform.position.z, 2)) > e.MaxRadius + ViewDistance)
            {
                continue;
            }

            // Loop through each vertex in the two intersecting circles formed from the grid and emitter MaxRadius
            float offsetX = e.Position.x - transform.position.x;
            float offsetY = e.Position.y - transform.position.z;
            int   zMin    = Mathf.Max(0, (int)((offsetY - e.MaxRadius + gridCenter) / TileSize));
            int   zMax    = Mathf.Min(vertexGrid.GetLength(0) - 1, (int)((offsetY + e.MaxRadius + gridCenter) / TileSize));
            for (int z = zMin; z <= zMax; z++)
            {
                float width = Mathf.Sqrt(Mathf.Pow(e.MaxRadius, 2) - Mathf.Pow(-offsetY + z * TileSize - gridCenter, 2));
                int   xMin  = Mathf.Max(gridEdges[z, 0], (int)((offsetX - width + gridCenter) / TileSize));
                int   xMax  = Mathf.Min(gridEdges[z, 1], (int)((offsetX + width + gridCenter) / TileSize));
                for (int x = xMin; x <= xMax; x++)
                {
                    int index = vertexGrid[x, z];
                    if (index > 0)
                    {
                        vertices[index].y += e.GetWaveHeight(vertices[index].x + transform.position.x, vertices[index].z + transform.position.z);
                    }
                }
            }
        }
        mesh.vertices = vertices;

        // Flip surface normals if the FollowCamera moves through the water plane
        bool oldUnderwater = isUnderwater;

        isUnderwater = GetHeightAtLocation(transform.position.x, transform.position.y) > FollowCamera.position.y;
        if (isUnderwater != oldUnderwater)
        {
            for (int m = 0; m < mesh.subMeshCount; m++)
            {
                int[] triangles = mesh.GetTriangles(m);
                for (int i = 0; i < triangles.Length; i += 3)
                {
                    int temp = triangles[i + 0];
                    triangles[i + 0] = triangles[i + 1];
                    triangles[i + 1] = temp;
                }
                mesh.SetTriangles(triangles, m);
            }
            if (isUnderwater)
            {
                SetUnderwater();
            }
            else
            {
                SetOverwater();
            }
        }
        mesh.RecalculateNormals();

        SetTextureOffset(new Vector2(transform.position.x, transform.position.z));
    }
示例#9
0
 public void setDifficulty(int difficulty)
 {
     //used to set the defaul values for the waves
     locmin = 1;
     if ( difficulty>4)
         locmax = 5;
     else
         locmax = 1+difficulty;
     twaveDuration = 10.0f;
     minEnemies = 2+difficulty;
     maxEnemies = 4+difficulty;
     WaveType = -1;
     //set initial wave goals they will be incremented with the first wave so they should start lower
     killamt = 6+difficulty;
     //killStreak = 3+difficulty;
     //create reference to the WaveEmitter
     GameObject go = (GameObject)GameObject.FindGameObjectWithTag("WaveGen");
     WE = (WaveEmitter)go.GetComponent ("WaveEmitter");
     //TODO change the rest of the game settings
 }