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++; } } } }
public void AddPoint(Vector3 point) { line.Add(point); if (line.Count >= 2) { GenerateMesh(mesh.mesh); ColliderGenerator.Generate(mesh.mesh, collider); } }
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>(); }
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>(); }
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); }
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); }
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); }