Exemple #1
0
    void saveMesh(GameObject gameObject, AssetImportContext ctx, Settings settings, VoxelModel model)
    {
        var   ChunkModels = model.SplitModelInChunkLModel(factor: FactorSize);
        int   i           = 0;
        float size        = (4 << FactorSize) * settings.SizeShared;

        for (int x = 0; x < ChunkModels.Item2.x; x++)
        {
            for (int y = 0; y < ChunkModels.Item2.y; y++)
            {
                for (int z = 0; z < ChunkModels.Item2.z; z++)
                {
                    if (ChunkModels.Item1[x, y, z].Only0)
                    {
                        continue;
                    }
                    var meshBulder = new MeshGenerator(settings, ChunkModels.Item1[x, y, z]);
                    if (ChunkOptimized)
                    {
                        meshBulder.NeighbourChunck = new Tuple <SurfaceAction, Array3UshortOpt>[6]
                        {
                            z + 1 < ChunkModels.Item2.z ? new Tuple <SurfaceAction, Array3UshortOpt>(SurfaceAction.RenderBasedOnNeighbourChunk, ChunkModels.Item1[x, y, z + 1]) :
                            new Tuple <SurfaceAction, Array3UshortOpt>(SurfaceAction.Render, default),    // front
                            z - 1 >= 0 ? new Tuple <SurfaceAction, Array3UshortOpt>(SurfaceAction.RenderBasedOnNeighbourChunk, ChunkModels.Item1[x, y, z - 1]) :
                            new Tuple <SurfaceAction, Array3UshortOpt>(SurfaceAction.Render, default),    // back
                            y + 1 < ChunkModels.Item2.y ? new Tuple <SurfaceAction, Array3UshortOpt>(SurfaceAction.RenderBasedOnNeighbourChunk, ChunkModels.Item1[x, y + 1, z]) :
                            new Tuple <SurfaceAction, Array3UshortOpt>(SurfaceAction.Render, default),    // top
                            y - 1 >= 0 ? new Tuple <SurfaceAction, Array3UshortOpt>(SurfaceAction.RenderBasedOnNeighbourChunk, ChunkModels.Item1[x, y - 1, z]) :
                            new Tuple <SurfaceAction, Array3UshortOpt>(SurfaceAction.Render, default),    // buttom
                            x - 1 >= 0 ? new Tuple <SurfaceAction, Array3UshortOpt>(SurfaceAction.RenderBasedOnNeighbourChunk, ChunkModels.Item1[x - 1, y, z]) :
                            new Tuple <SurfaceAction, Array3UshortOpt>(SurfaceAction.Render, default),    // right
                            x + 1 < ChunkModels.Item2.x ? new Tuple <SurfaceAction, Array3UshortOpt>(SurfaceAction.RenderBasedOnNeighbourChunk, ChunkModels.Item1[x + 1, y, z]) :
                            new Tuple <SurfaceAction, Array3UshortOpt>(SurfaceAction.Render, default),    // left
                        }
                    }
                    ;
                    meshBulder.GenerateMesh(fileName + "_childMesh_" + i);
                    if (meshBulder.mesh.vertexCount == 0)
                    {
                        continue;
                    }
                    var child = new GameObject(fileName + "_child_" + i);
                    child.transform.parent   = gameObject.transform;
                    child.transform.position = new Vector3(x * size, y * size, z * size);
                    child.AddComponent <MeshRenderer>().materials = settings.GetMaterials();
                    child.AddComponent <MeshFilter>().mesh        = meshBulder.mesh;
                    if (GenerateCollider)
                    {
                        var collideBuilder = new ColliderGenerator(child.transform, ChunkModels.Item1[x, y, z], settings);
                        collideBuilder.GenerateCollider();
                    }

                    ctx.AddObjectToAsset(fileName + "_childMesh_" + i, meshBulder.mesh);
                    i++;
                }
            }
        }
    }
Exemple #2
0
 public void AddPoint(Vector3 point)
 {
     line.Add(point);
     if (line.Count >= 2)
     {
         GenerateMesh(mesh.mesh);
         ColliderGenerator.Generate(mesh.mesh, collider);
     }
 }
Exemple #3
0
 public void Awake()
 {
     player      = GameObject.Find("Player").GetComponent <PlayerClass>();
     hero        = GameObject.Find("Hero").GetComponent <HeroClass>();
     playerSpawn = transform.Find("PlayerSpawn").transform.position;
     heroSpawn   = transform.Find("HeroSpawn").transform.position;
     meshGen     = GetComponent <MeshGenerator>();
     collGen     = GetComponent <ColliderGenerator>();
     meshFilter  = GetComponent <MeshFilter>();
 }
Exemple #4
0
 public void Awake()
 {
     startNode      = GameObject.Find("Node0");
     activeBuilding = GameObject.Find("ActiveBuilding");
     trans          = GetComponent <Transform>();
     mapGen         = GetComponent <MapGenerator>();
     meshGen        = GetComponent <MeshGenerator>();
     collGen        = GetComponent <ColliderGenerator>();
     nodes          = new List <GameObject>();
     wnodes         = new List <WorldNode>();
 }
Exemple #5
0
    public void Generate(
        float x, float z)
    {
        Vector3 pos = new Vector3(x, 0, z);

        WaitCallback callback = new WaitCallback(delegate
        {
            meshData = ColliderGenerator.Generate(datas, pos);
            actionsToDo.Enqueue(PutMeshValues);
        });

        ThreadPool.QueueUserWorkItem(callback);
    }
Exemple #6
0
    public void Generate(
        float x, float z)
    {
        Vector3 pos = new Vector3(x, 0, z);

        WaitCallback callback = new WaitCallback(delegate
        {
            try
            {
                meshData = ColliderGenerator.Generate(datas, pos);
                actionsToDo.Enqueue(PutMeshValues);
            }
            catch (Exception e)
            {
                Debug.LogWarning(e.Message);
            }
        });

        ThreadPool.QueueUserWorkItem(callback);
    }
Exemple #7
0
    public override void OnEnter()
    {
        if (acidObject == null)
        {
            acidObject        = ObjectPool.Instance.GetObject(PoolObjectType.AcidTrail);
            colliderGenerator = acidObject.GetComponent <ColliderGenerator>();
            colliderGenerator.SetZombieAciderParent(controller.gameObject.GetComponent <ZombieAcider>());
            trailRenderer = acidObject.GetComponent <TrailRenderer>();
            colliderGenerator.SetTrailRenderer(trailRenderer);
            colliderGenerator.SetStats(colliderGenerationTime, acidTriggerLife);
            trailRenderer.time       = trailRendererTime;
            trailRenderer.startWidth = trailRendererStartWidth;
        }

        colliderGenerator.enabled = true;
        trailRenderer.enabled     = true;
        animator.SetInteger(Strings.ANIMATIONSTATE, (int)AnimationStates.Walk);
        controller.AttackTarget = controller.FindPlayer();
        navAgent.speed          = myStats.moveSpeed;
    }
        private void Start()
        {
            //Level Generator
            HexagonGridGenerator = new HexagonGridGenerator(LevelData, ref blocks, ref gridBounds);
            randomGenerator      = new RandomGenerator(RandomAlgorithmType.JustRandom, LevelData.LevelBlocktypes);
            randomGenerator.GenerateRandom(blocks);

            //Making camera center based on grid position
            mainCamera.transform.position = gridBounds.center + gridCameraOffset;

            ///Input Systems
            colliderGenerator    = new ColliderGenerator(gridBounds);
            inputReader          = new InputReader(mainCamera);
            inputDataProcessor   = new InputDataProcessor(ref blocks);
            emptyRefillgenerator = new EmptyRefillGenerator(ref blocks, randomGenerator, LevelData.movementSpeed);

            //Update Loop UnityContext
            GameObject @object = new GameObject("UnityContext");

            context = @object.AddComponent <UnityContext>();
            context.AddListener(inputReader.UpdateLoop);
            context.AddListener(emptyRefillgenerator.UpdateLoop);
        }