Ejemplo n.º 1
0
    public static void SpawnBlood(int amt, Vector3 loc, Vector3 dir)
    {
        InitIfNeeded();
        //Blood_Splatter.spawnSplatter(loc,dir);
        dir.Normalize();
        Vector3 baseDir = dir;

        loc.z = 0;
        for (int i = 0; i < amt; i++)
        {
            dir = baseDir;
            Blood_Handler handler = new Blood_Handler();
            handler.pos        = loc;
            handler.index      = Generic_Mesh_Script.GetIndex("Mesh_Blood");
            handler.meshScript = Generic_Mesh_Script.GetMeshScript("Mesh_Blood");

            dir.x += Random.Range(-.4f, .4f);
            dir.y += Random.Range(-.4f, .4f);

            Vector3 velocity = dir.normalized;

            //handler.speed = 13f * Random.Range(2f,7f);
            handler.speed    = 20f * Random.Range(3f, 6f);
            handler.velocity = velocity;
            handler.eulerY   = Random.Range(0, 360);
            Generic_Mesh_Script.AddGeneric("Mesh_Blood", handler.pos, handler.eulerY, handler.material, 0f, baseSize, false);

            instanceList.Add(handler);
        }
    }
Ejemplo n.º 2
0
 private void Update()
 {
     timer -= deltaTime;
     if (timer < 0)
     {
         Generic_Mesh_Script.UpdateGeneric("Mesh_Top", index, Vector3.zero, 0f, 0, 0f, Vector3.zero, false);
         shootList.Remove(this);
     }
 }
Ejemplo n.º 3
0
 private Shoot_Flash(Vector3 pos)
 {
     index = Generic_Mesh_Script.GetIndex("Mesh_Top");
     Generic_Mesh_Script.AddGeneric("Mesh_Top", pos, 0f, 0, 0f, baseSize, false);
 }
    private void addGeneric(Vector3 pos, float rot, int material, float offset, Vector3 baseDir, bool skewed)
    {
        if (index >= amtMax)
        {
            return;
        }
        update = true;
        //pos.z -= offset;

        //Relocate vertices
        int vIndex  = index * 4;
        int vIndex0 = vIndex;
        int vIndex1 = vIndex + 1;
        int vIndex2 = vIndex + 2;
        int vIndex3 = vIndex + 3;

        if (skewed)
        {
            vertices[vIndex0] = pos + GetQuaternionEuler(rot) * new Vector3(-baseDir.x, baseDir.y);
            vertices[vIndex1] = pos + GetQuaternionEuler(rot) * new Vector3(-baseDir.x, -baseDir.y);
            vertices[vIndex2] = pos + GetQuaternionEuler(rot) * new Vector3(baseDir.x, -baseDir.y);
            vertices[vIndex3] = pos + GetQuaternionEuler(rot) * baseDir;
        }
        else
        {
            vertices[vIndex0] = pos + GetQuaternionEuler(rot - 270) * baseDir;
            vertices[vIndex1] = pos + GetQuaternionEuler(rot - 180) * baseDir;
            vertices[vIndex2] = pos + GetQuaternionEuler(rot - 90) * baseDir;
            vertices[vIndex3] = pos + GetQuaternionEuler(rot - 0) * baseDir;
        }

        //Relocate UVs
        uvs[vIndex0] = presetUV[material * 4 + 0];
        uvs[vIndex1] = presetUV[material * 4 + 1];
        uvs[vIndex2] = presetUV[material * 4 + 2];
        uvs[vIndex3] = presetUV[material * 4 + 3];

        //Create triangles
        int tIndex = index * 6;

        triangles[tIndex + 0] = vIndex0;
        triangles[tIndex + 1] = vIndex3;
        triangles[tIndex + 2] = vIndex1;

        triangles[tIndex + 3] = vIndex1;
        triangles[tIndex + 4] = vIndex3;
        triangles[tIndex + 5] = vIndex2;

        //index++;
        index = (index + 1) % amtMax;


        if (index == 0 && spawnNewMeshWhenFull)
        {
            //Create a new instance
            GameObject newInstance = new GameObject(name, typeof(MeshFilter), typeof(MeshRenderer), typeof(Generic_Mesh_Script));
            Transform  trans       = newInstance.transform;
            trans.parent        = transform.parent;
            trans.localPosition = transform.localPosition;

            newInstance.GetComponent <Renderer>().material     = transform.GetComponent <MeshRenderer>().material;
            newInstance.GetComponent <Renderer>().sortingOrder = transform.GetComponent <Renderer>().sortingOrder;

            Generic_Mesh_Script meshScript = newInstance.GetComponent <Generic_Mesh_Script>();
            meshScript.bounds               = bounds;
            meshScript.amtMax               = amtMax;
            meshScript.UVTextureSize        = UVTextureSize;
            meshScript.UVList               = UVList;
            meshScript.spawnNewMeshWhenFull = spawnNewMeshWhenFull;

            dictionary[name] = meshScript;

            int number = 2;
            for (int i = 0; i < 999; i++)
            {
                if (transform.parent.Find(name + "_" + number) == null)
                {
                    break;
                }
                number++;
            }
            trans.name = name;
            name       = name + "_" + number;

            meshScript.myAwake();
        }
    }