// ******************************************************************************************************** // OTHER METHODS ****************************************************************************************** // ******************************************************************************************************** // INITIALIZE AI public void InitializeAI() { Behave = new BehaviorDelegate(AIBehavior); Array.Resize(ref AICursors, belts.Length); /*Array.Resize(ref beltTypes, belts.Length); * for (int i = 0; i < belts.Length; i++) * { * beltTypes[i] = belts[i].GetComponent<BeltControl>().beltParams.type; * }*/ }
//private float[] orientAngles = { 90, 45, 22.5F, 0.1F, -1, -22.5F, -45, -90 }; // START void Start() { // ENERGY INIT energy = poleParams.poleMaxEnergy * poleModif.energyMaxCoef; energyBarControl = energyBar.GetComponent <BarControl>(); // SPEED INIT poleSpeed = new Vector3(0, 0, 0); // GETTING BELT CONTROLS Array.Resize(ref beltControls, belts.Length); for (int i = 0; i < beltControls.Length; i++) { beltControls[i] = belts[i].GetComponent <BeltControl>(); } // INFO INIT AIParams = new string[6]; AIParams[0] = "AIRandomMove: " + poleParams.AIRandomMove.ToString(); AIParams[1] = "AISearchingMove: " + poleParams.AISearchingMove.ToString(); AIParams[2] = "AIFiringOnContact: " + poleParams.AIFiringOnContact.ToString(); AIParams[3] = "AITargetMovePrediction: " + poleParams.AITargetMovePrediction.ToString(); AIParams[4] = "AIManuvering: " + poleParams.AIManuvering.ToString(); AIParams[5] = "AISeekLastPosition: " + poleParams.AISeekLastPosition.ToString(); // BEHAVIOR DELEGATE INIT switch (poleParams.type) { case PoleType.Player: Behave = new BehaviorDelegate(PlayerBehavior); break; case PoleType.Enemy: AIBehave = new BehaviorDelegate(EnemyBehavior); InitializeAI(); break; case PoleType.NeutralStatic: AIBehave = new BehaviorDelegate(NeutralStaticBehavior); InitializeAI(); break; case PoleType.NeutralMovable: AIBehave = new BehaviorDelegate(NeutralStaticBehavior); InitializeAI(); break; default: break; } // POLE ASSEMBLY TRANSFORM INIT poleAssemblyTransform = poleAssembly.GetComponent <Transform>(); // POLE HEIGHT LIMIT AND PARAM INIT poleModelRelationHeightTop = poleAssemblyTransform.position.y - transform.position.y; poleModelRelationHeightBottom = poleModelRelationHeightTop - poleParams.poleModelMaxRelationHeightDiff; // EFFECTS INIT foreach (Transform child in gameObject.GetComponentsInChildren <Transform>()) { switch (child.gameObject.name) { case "DownEngineFire": downEngineFire = child.gameObject; break; case "UpEngineFire": upEngineFire = child.gameObject; break; case "RightEngineFire": rightEngineFire = child.gameObject; break; case "LeftEngineFire": leftEngineFire = child.gameObject; break; case "BodyDamagedLightning": bodyDamagedLightning = child.gameObject; break; case "EngineDamagedLightning": engineDamagedLightning = child.gameObject; break; case "SensorDamagedLightning": sensorDamagedLightning = child.gameObject; break; default: break; } } var leftEngineFireEmission = leftEngineFire.GetComponent <ParticleSystem>().emission; var rightEngineFireEmission = rightEngineFire.GetComponent <ParticleSystem>().emission; var upEngineFireEmission = upEngineFire.GetComponent <ParticleSystem>().emission; var downEngineFireEmission = downEngineFire.GetComponent <ParticleSystem>().emission; leftEngineFireEmission.enabled = false; rightEngineFireEmission.enabled = false; upEngineFireEmission.enabled = false; downEngineFireEmission.enabled = false; var bodyDamagedLightningEmission = bodyDamagedLightning.GetComponent <ParticleSystem>().emission; var engineDamagedLightningEmission = engineDamagedLightning.GetComponent <ParticleSystem>().emission; var sensorDamagedLightningEmission = sensorDamagedLightning.GetComponent <ParticleSystem>().emission; bodyDamagedLightningEmission.enabled = false; engineDamagedLightningEmission.enabled = false; sensorDamagedLightningEmission.enabled = false; // SOUND INIT antigravityEngineSound = gameObject.GetComponent <AudioSource>(); }