void OnEnable() { creator = (PathCreator)target; bool in2DEditorMode = EditorSettings.defaultBehaviorMode == EditorBehaviorMode.Mode2D; creator.InitializeEditorData(in2DEditorMode); positionOld = creator.transform.position; rotationOld = creator.transform.rotation; scaleOld = creator.transform.localScale; data.bezierCreated -= ResetState; data.bezierCreated += ResetState; Undo.undoRedoPerformed -= OnUndoRedo; Undo.undoRedoPerformed += OnUndoRedo; LoadDisplaySettings(); UpdateGlobalDisplaySettings(); UpdateToolVisibility(); ResetState(); }
protected override void Execute(List <GameEntity> entities) { for (int i = 0; i < entities.Count; i++) { if (entities[i].hasAnimationInfo || entities[i].hasMoveAnimation || entities[i].hasScaleAnimation) { continue; } var chain = GetChain(entities[i].parentChainId.value); if (chain == null) { _contexts.manage.CreateEntity() .AddLogMessage($"Failed to change disntace ball. Chain is null", TypeLogMessage.Error, true, GetType()); continue; } var track = GetTrack(chain.parentTrackId.value); if (track == null) { _contexts.manage.CreateEntity() .AddLogMessage($"Failed to change disntace ball. Track is null", TypeLogMessage.Error, true, GetType()); continue; } float distance = entities[i].distanceBall.value; PathCreator pathCreator = track.pathCreator.value; // Move Position Vector2 position = pathCreator.path.GetPointAtDistance(distance, EndOfPathInstruction.Stop); // TODO: change to MovePosition() entities[i].transform.value.position = position; // Rotate // increase CPU perfomance by 150 % // TODO: try to optimize Vector3 direction = pathCreator.path.GetDirectionAtDistance(distance, EndOfPathInstruction.Stop); Quaternion rotation = Quaternion.FromToRotation(Vector3.up, direction); entities[i].transform.value.rotation = rotation; } }
void Start() { menuMessage.text = defaultMessage; particlesWinGame = particlesWinGameGO.GetChild(0).GetComponent <ParticleSystem>(); particlesLoseGame = particlesLoseGameGO.GetChild(0).GetComponent <ParticleSystem>(); pathCreator = GetComponent <PathCreator>(); cameraFramer = GetComponent <CameraFraming>(); beController = pathCreator.beController; beTargetObject = BEController.beTargetObjectList[0]; beTargetObjectRigdbody = beTargetObject.GetComponent <Rigidbody>(); gameIsPlaying = false; sandBoxBounds = new Renderer[sandboxScene.transform.GetComponentsInChildren <BoxCollider>().Length]; var i = 0; foreach (BoxCollider collider in sandboxScene.transform.GetComponentsInChildren <BoxCollider>()) { sandBoxBounds[i] = collider.GetComponent <Renderer>(); i++; } }
private void DestroyCarOnTileExit() { if (_currentPathToFollow != null) { _currentPathLength = _currentPathToFollow.path.length; } //if (_distanceTravelledOnCurrentPath < -.5f || _distanceTravelledOnCurrentPath > 46.5f) if (_distanceTravelledOnCurrentPath > _currentPathLength + .3f && _pathTimeGoesFrom0To1 || _distanceTravelledOnCurrentPath < -.3f && !_pathTimeGoesFrom0To1) { if (_destroyTriggered == false) { gameObject.transform.position = new Vector3(999, 999, 999); //setting the position of the car far away before destroying it triggers OnTriggerExit(), which is a solution to a bug causing cars to stop driving if they immediately drive behind a car which is getting destroyed CarSpawnerOrigin.DecreaseAmountOfCars(); _currentPathToFollow = null; GameObject.Destroy(this.gameObject, .01f); _destroyTriggered = true; } } }
public override void SceneRightClick(Vector2 mousePos, PathCreator creator) { float minDstToAnchor = PathCreator.anchorDiameter * .5f; int closestAnchorIndex = -1; for (int i = 0; i < NumPoints; i += 3) { float dst = Vector2.Distance(mousePos, this[i]); if (dst < minDstToAnchor) { minDstToAnchor = dst; closestAnchorIndex = i; } } if (closestAnchorIndex != -1) { Undo.RecordObject(creator, "Delete segment"); DeleteSegment(closestAnchorIndex); } }
public void GenerateTube(bool file) { string name = "Tube"; var generated_tranform = transform.Find(name); if (generated_tranform != null) { DestroyImmediate(generated_tranform.gameObject); Debug.Log("destroyed"); } tube = Create(name, gameObject); Debug.Log("create tube"); PathCreator path_creator = gameObject.GetComponent <PathCreator>(); if (path_creator != null) { VertexPath path = path_creator.path; /*if (file) * { * BezierPath bp = path_creator.LoadPath(); * path = new VertexPath(bp, transform); * } * else * { * path = path_creator.path; * }*/ Debug.Log("got path"); for (float distance = 0; distance < path.length; distance += 0.2f) { Vector3 position = path.GetPointAtDistance(distance, endOfPathInstruction); Vector3 upward = path.GetDirectionAtDistance(distance, endOfPathInstruction); Vector3 forward = path.GetNormalAtDistance(distance, endOfPathInstruction); Quaternion rotation = Quaternion.LookRotation(forward, upward); Instantiate(segment, position, rotation, tube.transform); } } }
public override void OnEnter() { var go = Fsm.GetOwnerDefaultTarget(gameObject); CalculateMovementByPercent(); _pathCreator = pathGameObject.Value.GetComponent <PathCreator>(); // get total distance if path creator is not null if (_pathCreator == null) { return; } else { pathTotalDistance.Value = _pathCreator.path.length; } if (!everyFrame.Value) { Finish(); } }
private void Awake() { rigid2d = GetComponent <Rigidbody2D>(); pathCreator = FindObjectOfType <PathCreator>(); _tree = new BehaviorTreeBuilder(gameObject) .Sequence() .Condition("Is Racing", () => !RaceController.instance.raceOver) .Condition("Not Player", () => !isPlayer) .Condition("Stunned", () => !_stun) .Selector() .Sequence("Speed Boost") //.Condition("Can Speed Boost", () => _canBoost) .Condition("Not Boosted", () => !_speedBoosted) .Do("Use Speed Boost", () => { StopCoroutine(SpeedBoostLoop()); StartCoroutine(SpeedBoostLoop()); return(TaskStatus.Success); }) .End() .Sequence("Move Forward") .Do("Get or move next waypoint", () => { float xMove = 0f; var hit = Physics2D.CircleCast(rigid2d.position, spotRadius, transform.up, spotDistance, m_Obstacles); if (hit) { dodgeStride = courseWidth < dodgeStride + xPos ? -dodgeStride : dodgeStride; xMove = dodgeStride; } MoveNext(xMove); return(TaskStatus.Success); }) .End() .End() .End() .Build(); }
public void Init(Vector3 start, Vector3 end, Vector3 startNormal, Vector3 endNormal, Transform obj, float speed) { Vector3[] waypoints = new Vector3[4]; waypoints[0] = start; waypoints[1] = start + startNormal * 15.0f; waypoints[2] = end + endNormal * 15.0f; waypoints[3] = end; // Create a new bezier path from the waypoints. BezierPath bezierPath = new BezierPath(waypoints, false, PathSpace.xyz); PathCreator creator = GetComponent <PathCreator>(); creator.bezierPath = bezierPath; Debug.Log(creator.bezierPath.AutoControlLength); path = creator.path; t = 0.0f; this.speed = speed; this.obj = obj; }
public void CreateRequirementPath(Vector3 ownConnector, Vector3 requirementsPoints) { if (pathCreators == null) { pathCreators = new List <PathCreator>(); } GameObject go = Instantiate(pathPrefab); PathCreator pathCre = go.GetComponent <PathCreator>(); Vector3[] points = new Vector3[2]; points[0] = ownConnector; points[1] = requirementsPoints; pathCre.bezierPath = new BezierPath(points, false, PathSpace.xy); pathCreators.Add(pathCre); int index = pathCreators.Count - 1; AssignMeshComponents(index); AssignMaterials(); CreateMesh(pathCre.path); }
private void Update() { if (posAlongPath <= 1) { posAlongPath += Time.deltaTime; transform.position = PathCreator.PointOnLine(currentPath, posAlongPath, 1.5f, direction); } else { if (currentPath == ExitPath) { transform.position = new Vector2(100, 100); Destroy(gameObject); } else { direction = PathCreator.Direction.Backward; posAlongPath = 0; currentPath = ExitPath; } } }
public void CreatePathTest() { var creator = new PathCreator(); var map = new[, ] { { true, true, true }, { true, true, true }, { false, false, true }, { true, true, true } }; List <Point> path = creator.CreatePath(map, new Point(0, 0), new Point(1, 3)); Assert.AreEqual(7, path.Count); Assert.AreEqual(new Point(0, 0), path[0]); Assert.AreEqual(new Point(0, 1), path[1]); Assert.AreEqual(new Point(1, 1), path[2]); Assert.AreEqual(new Point(2, 1), path[3]); Assert.AreEqual(new Point(2, 2), path[4]); Assert.AreEqual(new Point(2, 3), path[5]); Assert.AreEqual(new Point(1, 3), path[6]); }
private void OnTriggerEnter(Collider other) { if (other.transform.CompareTag("Road")) { _pathController = other.transform.parent.GetComponentInChildren <PathController>(); _currentPathToFollow = GetRandomPath(transform.position); _pathTimeGoesFrom0To1 = PathGoesFrom0To1(_currentPathToFollow); _distanceTravelledOnCurrentPathIsSet = false; _rotationIsBasedOnRotationPoint = false; CurrentTile = other.GetComponentInParent <Tile>(); if (CurrentTile.Type == Tile.TileType.Intersection || CurrentTile.Type == Tile.TileType.T_Junction) { _carBehaviour.AllowPriorityAwareness(true); } else { _carBehaviour.AllowPriorityAwareness(false); } //Debug.Log("ENTER:" + _currentPathToFollow.transform.root.name); } }
void OnEnable() { bool in2DEditorMode = EditorSettings.defaultBehaviorMode == EditorBehaviorMode.Mode2D; if (creator == null) { creator = GetComponent <PathCreator>(); handlePrefab = (GameObject)Resources.Load <GameObject>("Prefabs/Knob"); bezierPathLr = gameObject.AddComponent <LineRenderer>() as LineRenderer; bezierPathLr.material = (Material)Resources.Load <Material>("Material/MovementPathMaterial"); } creator.InitializeEditorData(in2DEditorMode); data.bezierCreated -= ResetState; data.bezierCreated += ResetState; Undo.undoRedoPerformed -= OnUndoRedo; Undo.undoRedoPerformed += OnUndoRedo; LoadDisplaySettings(); UpdateGlobalDisplaySettings(); ResetState(); SetTransformState(true); }
void Start() { AudioManagerGO = GameObject.FindGameObjectWithTag("AudioManager"); audioManager = AudioManagerGO.GetComponent <AudioManager>(); if (pathCreator == null) { pathCreator = PathManager.Instance.FindPathInt(Random.Range(0, (int)PathManager.PathArrayContainer.PathGroup.NUM_OF_VALUES), Random.Range(0, (int)PathManager.PathArray.Direction.NUM_OF_VALUES)); } if (WaypointContainer != null) { ReadWaypoint(); } distanceTravelled = 0f; // Subscribed to the pathUpdated event so that we're notified if the path changes during the game pathCreator.pathUpdated += OnPathChanged; transform.position = new Vector3(0, 4 + 0.5f, 0); stopping = false; slowDown = false; }
private void generateCheckpoints() { GameObject startpoint = Resources.Load <GameObject>("Startpoint"); GameObject checkpoint = Resources.Load <GameObject>("Checkpoint"); PathCreator pc = GetComponent <PathCreator>(); if (checkpointHolder == null) { GameObject obj = new GameObject(); obj.name = "Checkpoints"; checkpointHolder = obj; } VertexPath path = pc.path; numCheckpoints = Mathf.Clamp((int)path.length / 10, 4, 10); float spacing = path.length / numCheckpoints; float dst = 0; dst += spacing; while (dst < path.length) { Vector3 point = path.GetPointAtDistance(dst); Quaternion rot = path.GetRotationAtDistance(dst) * Quaternion.Euler(90, 0, 90); Instantiate(checkpoint, point, rot, checkpointHolder.transform); dst += spacing; } // Startpoint: // Add the startpoint last since its the last checkpoint technically Vector3 point_start = path.GetPointAtDistance(0); Quaternion rot_start = path.GetRotationAtDistance(0) * Quaternion.Euler(90, 0, 90); Instantiate(startpoint, point_start, rot_start, checkpointHolder.transform); }
public void CreateFish(int id, int startY, PathCreator path, bool allowAutoDespawn) { bool reversed = Random.value >= 0.5; float startX = Random.Range(-250, -550); //print("Spawning fish with ID: " + id); GameObject fish = Instantiate(fishPrefab, new Vector3(0, 0, 0), Quaternion.identity); // fish.transform.SetParent(submarineCanvas.transform); myFish.Add(fish); if (allowAutoDespawn) { idleFish.Add(fish); } FishAI fai = fish.GetComponent <FishAI>(); fai.id = id; fai.myManager = this; fai.gameState = gameState; fai.startDepth = gameState.CurrentDepth; fai.worldX = startX; fai.worldY = startY; fai.myPath = path; fai.endOfPathBehaviour = EndOfPathInstruction.Loop; fai.myBillBoard.target = playerCamera.transform; fai.dstTravelled = Random.Range(0f, 100f); fai.applyJitterToSpwawn = applyJitterToSpwawn; fai.allowAutoDespawn = allowAutoDespawn; if (reversed) { fai.reverseDirection = true; fai.transform.localScale = new Vector3(fai.transform.localScale.x * -1, fai.transform.localScale.y, fai.transform.localScale.z); } }
private List <GameObject> referenceList; //Logikken (min) bak dette: //referenceList lager jeg fordi at jeg ønsker å bruke de spesefike instansene av Gameobjects som lages i InitialiazeCreeps() senere. //Dette er nødvendig fordi "creepList" inneholder kun "prefabs" ikke FAKTISKE GAMEOBJETS. Så det vil ikke hjelpe å "sette dem til active(true)" //senere med en "foreach loop", fordi det setter bare "prefabene" (som ikke har blitt spawnet uansett) til true. public void InitializeCreeps(PathCreator path) { numberOfCreepsToSpawn = 0; //Remember you always need to reset these numbers when you work with SOs numberOfCreepsSpawned = 0; referenceList = new List <GameObject>(); WaveContainer = new GameObject($"Wave Container for wave: " + groupName); foreach (GameObject creep in actualCreepList) { GameObject newInstance = Instantiate(creep); newInstance.transform.SetParent(WaveContainer.transform); newInstance.SetActive(false); Creep stats = newInstance.GetComponent <Creep>(); stats.SetPath(path); referenceList.Add(newInstance); //Add this newly created instance of a prefab into a list that can be referenced later numberOfCreepsToSpawn += 1; } }
public void Init(Vector3 start, Vector3 end, Transform obj, float speed) { Vector3[] waypoints = new Vector3[4]; Vector3 direction = end - start; float distance = direction.magnitude; waypoints[0] = start; waypoints[1] = start + direction * 0.2f + generateRandomVector() * distance * 0.1f; waypoints[2] = start + direction * 0.8f + generateRandomVector() * distance * 0.1f; waypoints[3] = end; // Create a new bezier path from the waypoints. BezierPath bezierPath = new BezierPath(waypoints, false, PathSpace.xyz); PathCreator creator = GetComponent <PathCreator>(); creator.bezierPath = bezierPath; path = creator.path; t = 0.0f; this.speed = speed; this.obj = obj; }
void OnEnable() { creator = (PathCreator)target; // Ensure we have an EditorState object for this creator instance if (editorStateMap.TryGetValue(creator, out editorState) == false) { editorState = editorStateMap[creator] = new EditorState(); } bool in2DEditorMode = EditorSettings.defaultBehaviorMode == EditorBehaviorMode.Mode2D; creator.InitializeEditorData(in2DEditorMode); data.bezierCreated -= ResetState; data.bezierCreated += ResetState; Undo.undoRedoPerformed -= OnUndoRedo; Undo.undoRedoPerformed += OnUndoRedo; LoadDisplaySettings(); UpdateGlobalDisplaySettings(); ResetState(); SetTransformState(true); }
private static ClosestPoint CalculateClosestPoint(PathCreator pathCreator, EndOfPathInstruction endOfPath, Vector3 targetPosition) { var stepScale = pathCreator.path.length % 10; stepScale = Mathf.Clamp(stepScale, 1, 500f); var pathStep = pathCreator.path.length / stepScale; ClosestPoint closestPoint = new ClosestPoint(Vector3.zero, -1, 0); for (int i = 0; i < stepScale; i++) { var travelledDistance = pathStep * i; var pathPoint = pathCreator.path.GetPointAtDistance(travelledDistance, endOfPath); var vectorToTarget = targetPosition - pathPoint; vectorToTarget.y = 0; var distanceToTarget = vectorToTarget.magnitude; if (distanceToTarget < closestPoint.DistanceToTarget || closestPoint.DistanceToTarget == -1) { closestPoint = new ClosestPoint(vectorToTarget, distanceToTarget, travelledDistance); } } return(closestPoint); }
void OnTriggerStay(Collider other) { if (other.tag == "path") { pathcreateor = other.transform.parent.GetComponent <PathCreator>(); if (pathcreateor && thisCar.path1 == null) //jezeli jest jaki wykryty pathcreator a miejsce 1 jest puste { thisCar.path1 = pathcreateor; //Debug.Log("do 1 :"+pathcreateor.name); //pierwsza sciezka-kolizja ze sciezka- to ta po ktorej pierwszej pojedzie auto( do startu ) if (justStarted == false) { Debug.Log("juststarded"); thisCar.TakeFirstPath(); justStarted = true; } return; } else if (pathcreateor != thisCar.path1 && thisCar.path2 == null) //jezeli jest jaki wykryty pathcreator inny niz w path1 2 { thisCar.path2 = pathcreateor; //Debug.Log("do 2 :" + pathcreateor.name); return; } else if (pathcreateor != thisCar.path2 && pathcreateor != thisCar.path1 && thisCar.path3 == null) //jezeli jest jaki wykryty pathcreator inny niz w path2 i path1 { thisCar.path3 = pathcreateor; //Debug.Log("do 3 :" + pathcreateor.name); return; } //Debug.Log(other.transform.parent.parent.name); //Debug.Log(pathcreateor.name); } }
void Spawn() { if (current_num >= num_toSpawn) { //used to stop spawning? CancelInvoke("Spawn"); Debug.Log("Cancel invoke"); } else { //randomly choose a path starting from the same point int path_number = Random.Range(0, path_list.Length); PathCreator path_chosen = path_list[path_number]; //Instantiate an agent at the start point Vector3 init_position = path_chosen.path.GetPoint(0); Quaternion init_rotation = path_chosen.path.GetRotation(0f); GameObject agent = Instantiate(spawned_agent, init_position, init_rotation); //Attach the agent to the path agent.GetComponent <PathFollower>().pathCreator = path_chosen; current_num++; if (current_num == num_toSpawn) { //Debug.Log("Current num = to spawn num"); //Debug.Log(current_wave + 1 + " " + waves.Count); CancelInvoke("Spawn"); if (current_wave + 1 <= waves.Count - 1) { //Debug.Log("!?"); current_wave++; LoadWaveData(current_wave); InvokeRepeating("Spawn", time_wait, time_interval); } } } }
void Start() { creator = GetComponent <PathCreator>(); path = creator.path; GenerateStem(); }
// Start is called before the first frame update void Awake() { Debug.Log("BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBs"); path_creator = GetComponent <PathCreator>(); }
void attachScripts() { go.AddComponent<EditorGrid>(); go.AddComponent<CameraController>(); pathCreatorScript = go.AddComponent<PathCreator>(); }
public MapGenerator(PathCreator pathCreator) { _pathCreator = pathCreator; }
public abstract void SceneRightClick(Vector2 mousePos, PathCreator creator);
void create_road(int _stage) { road_poins.Clear(); road_poins.Add(new Vector3(0, 0, 0)); road_poins.Add(new Vector3(5, 0, 0)); road_poins.Add(new Vector3(10, 0, 0)); if (stage == 1) { current_stage_txt.text = stage.ToString(); next_stage_txt.text = (stage + 1).ToString(); stage_slider.minValue = 0; stage_slider.maxValue = 220; //first road Debug.Log("we are creating the road"); current_road = Instantiate(road); current_road.transform.position = new Vector3(0, 0, 0); pth = current_road.GetComponent <PathCreator>(); roads.Add(current_road); road_poins.Add(new Vector3(15, 0, 0)); road_poins.Add(new Vector3(20, 0, 0)); road_poins.Add(new Vector3(35, 5, 0)); road_poins.Add(new Vector3(50, -3, 0)); road_poins.Add(new Vector3(65, 10, 0)); road_poins.Add(new Vector3(80, 5, 0)); BPath = new BezierPath(road_poins, false, PathSpace.xyz); BPath.GlobalNormalsAngle = 90; pth.bezierPath = BPath; //second road current_road = Instantiate(road); current_road.transform.position = new Vector3(0, 0, 0); pth = current_road.GetComponent <PathCreator>(); roads.Add(current_road); road_poins.Clear(); road_poins.Add(new Vector3(85, 0, 0)); road_poins.Add(new Vector3(100, 0, 0)); road_poins.Add(new Vector3(115, 5, 0)); road_poins.Add(new Vector3(130, -5, 0)); road_poins.Add(new Vector3(145, 10, 0)); road_poins.Add(new Vector3(160, 0, 0)); road_poins.Add(new Vector3(220, 0, 0)); BPath = new BezierPath(road_poins, false, PathSpace.xyz); BPath.GlobalNormalsAngle = 90; pth.bezierPath = BPath; GameObject obj = Instantiate(chest); obj.transform.position = new Vector3(220, 1, 0); } create_traps(); //BPath.AddSegmentToEnd(new Vector3(5,5,5)); }
public abstract void Draw(PathCreator creator);
public void UsePath(PathCreator pathCreator) { this.pathCreator = pathCreator; }