public ParticleSystemMetadata() { this.m_system = null; this.value = 0.0f; this.CannonBarrel = null; this.type = MetadataType.None; }
public static void ManipulateBarrels(List <TankBlock> blockList, string request, Dictionary <CannonBarrel, float> memory, float average) { FieldInfo field_NumCannonBarrels = typeof(ModuleWeaponGun) // Holy mess! .GetField("m_NumCannonBarrels", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); FieldInfo field_CannonBarrels = typeof(ModuleWeaponGun) .GetField("m_CannonBarrels", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); FieldInfo field_BarrelTransform = typeof(ModuleWeaponGun) .GetField("m_BarrelTransform", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); FieldInfo field_FiringData = typeof(ModuleWeaponGun) .GetField("m_FiringData", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); FieldInfo field_WeaponModule = typeof(ModuleWeaponGun) .GetField("m_WeaponModule", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); FieldInfo field_ShotCooldown = typeof(ModuleWeaponGun) .GetField("m_ShotCooldown", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); FieldInfo field_transform = typeof(Transform) .GetField("transform", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); FieldInfo field_AnimState = typeof(CannonBarrel) .GetField("animState", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); /*MethodInfo method_Setup = typeof(CannonBarrel) * .GetMethod("Setup", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); * MethodInfo method_CapRecoilDuration = typeof(CannonBarrel) * .GetMethod("CapRecoilDuration", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);*/ foreach (TankBlock block in blockList) { ModuleWeaponGun weapon = block.GetComponent <ModuleWeaponGun>(); int value_NumCannonBarrels = (int)field_NumCannonBarrels.GetValue(weapon); if (value_NumCannonBarrels != 0) { Array value_CannonBarrels = (Array)field_CannonBarrels.GetValue(weapon); for (int i = 0; i < value_CannonBarrels.Length; i++) { /*Transform value_BarrelTransform = (Transform)field_BarrelTransform.GetValue(weapon); * if (value_BarrelTransform == null) // Will this ever check true? * { * field_BarrelTransform.SetValue(weapon, field_transform.GetValue(value_CannonBarrels.GetValue(i))); * }*/ CannonBarrel thisBarrel = (CannonBarrel)value_CannonBarrels.GetValue(i); FireData value_FiringData = (FireData)field_FiringData.GetValue(weapon); ModuleWeapon value_WeaponModule = (ModuleWeapon)field_WeaponModule.GetValue(weapon); float value_ShotCooldown = (float)field_ShotCooldown.GetValue(weapon); //method_Setup.Invoke(value_CannonBarrels.GetValue(i), new object[] { value_FiringData, value_WeaponModule }); //method_CapRecoilDuration.Invoke(value_CannonBarrels.GetValue(i), new object[] { value_ShotCooldown }); object value_AnimState = field_AnimState.GetValue(thisBarrel); if (value_AnimState != null) { PropertyInfo prop_GetSpeed = value_AnimState.GetType() .GetProperty("speed", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty); PropertyInfo prop_SetSpeed = value_AnimState.GetType() .GetProperty("speed", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.SetProperty); PropertyInfo prop_GetLength = value_AnimState.GetType() .GetProperty("length", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty); PropertyInfo prop_SetLength = value_AnimState.GetType() .GetProperty("length", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.SetProperty); if (request == "SAVE") { memory.Add(thisBarrel, (float)prop_GetSpeed.GetValue(value_AnimState)); } else if (request == "UPDATE") { prop_SetSpeed.SetValue(value_AnimState, memory[thisBarrel] / average); } else if (request == "CLEAN") { prop_SetSpeed.SetValue(value_AnimState, memory[thisBarrel]); memory.Remove(thisBarrel); } } } } } }
public void ManipulateBarrels(List <ModuleWeaponGun> weaponList, string request) { FieldInfo field_NumCannonBarrels = typeof(ModuleWeaponGun) // Holy mess! .GetField("m_NumCannonBarrels", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); FieldInfo field_CannonBarrels = typeof(ModuleWeaponGun) .GetField("m_CannonBarrels", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); FieldInfo field_BarrelTransform = typeof(ModuleWeaponGun) .GetField("m_BarrelTransform", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); FieldInfo field_FiringData = typeof(ModuleWeaponGun) .GetField("m_FiringData", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); FieldInfo field_WeaponModule = typeof(ModuleWeaponGun) .GetField("m_WeaponModule", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); FieldInfo field_ShotCooldown = typeof(ModuleWeaponGun) .GetField("m_ShotCooldown", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); FieldInfo field_transform = typeof(Transform) .GetField("transform", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); FieldInfo field_AnimState = typeof(CannonBarrel) .GetField("animState", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); /*MethodInfo method_Setup = typeof(CannonBarrel) * .GetMethod("Setup", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); * MethodInfo method_CapRecoilDuration = typeof(CannonBarrel) * .GetMethod("CapRecoilDuration", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);*/ foreach (ModuleWeaponGun weapon in weaponList) { int value_NumCannonBarrels = (int)field_NumCannonBarrels.GetValue(weapon); if (value_NumCannonBarrels != 0) { Array value_CannonBarrels = (Array)field_CannonBarrels.GetValue(weapon); for (int i = 0; i < value_CannonBarrels.Length; i++) { /*Transform value_BarrelTransform = (Transform)field_BarrelTransform.GetValue(weapon); * if (value_BarrelTransform == null) // Will this ever check true? * { * field_BarrelTransform.SetValue(weapon, field_transform.GetValue(value_CannonBarrels.GetValue(i))); * }*/ CannonBarrel thisBarrel = (CannonBarrel)value_CannonBarrels.GetValue(i); FireData value_FiringData = (FireData)field_FiringData.GetValue(weapon); ModuleWeapon value_WeaponModule = (ModuleWeapon)field_WeaponModule.GetValue(weapon); float value_ShotCooldown = (float)field_ShotCooldown.GetValue(weapon); //method_Setup.Invoke(value_CannonBarrels.GetValue(i), new object[] { value_FiringData, value_WeaponModule }); //method_CapRecoilDuration.Invoke(value_CannonBarrels.GetValue(i), new object[] { value_ShotCooldown }); object value_AnimState = field_AnimState.GetValue(thisBarrel); if (value_AnimState != null) { PropertyInfo prop_GetSpeed = value_AnimState.GetType() .GetProperty("speed", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty); PropertyInfo prop_SetSpeed = value_AnimState.GetType() .GetProperty("speed", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.SetProperty); PropertyInfo prop_GetLength = value_AnimState.GetType() .GetProperty("length", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty); PropertyInfo prop_SetLength = value_AnimState.GetType() .GetProperty("length", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.SetProperty); if (request == "SAVE") { this.weaponSpeedMemory.Add(thisBarrel, (float)prop_GetSpeed.GetValue(value_AnimState)); } else if (request == "UPDATE") { prop_SetSpeed.SetValue(value_AnimState, this.weaponSpeedMemory[thisBarrel] / this.allSegments["WeaponCooldown"].GetAverages()); } else if (request == "CLEAN") { prop_SetSpeed.SetValue(value_AnimState, this.weaponSpeedMemory[thisBarrel]); this.weaponSpeedMemory.Remove(thisBarrel); } //float value_length = (float)prop_GetLength.GetValue(value_AnimState); //Console.WriteLine("FFW! Pre. Length = " + (float)prop_GetLength.GetValue(value_AnimState) + " . Speed = " + (float)prop_GetSpeed.GetValue(value_AnimState)); /*float modifier = this.allSegments["WeaponCooldown"].GetAveragesByKey(weapon, 2); * if (modifier == 0.0f) * { * modifier = this.allSegments["WeaponCooldown"].GetAveragesByKey(weapon, 1); * } * if (value_length > modifier) * { * //prop_SetSpeed.SetValue(value_AnimState, value_length / modifier); * }*/ //Console.WriteLine("FFW! Post. Length = " + (float)prop_GetLength.GetValue(value_AnimState) + " . Speed = " + (float)prop_GetSpeed.GetValue(value_AnimState)); /*if (value_length > this.allSegments["WeaponCooldown"].GetAveragesByKey(weapon, 2)) * { * prop_SetSpeed.SetValue(value_AnimState, value_length / this.allSegments["WeaponCooldown"].GetAveragesByKey(weapon, 2)); * }*/ } } } } }
// called from ModuleWeaponGun OnPool // Input: proper order of things // Anything not explicitly assigned a CannonBarrel defaults to the first CannonBarrel slot public bool AlignCannonBarrels(CannonBarrel[] m_CannonBarrels) { this.DebugPrint("<MPM> AlignCannonBarrels"); if (this.initOnBarrelFired != null && this.initOnBarrelFired.Count > 0) { this.onBarrelFired = new List <List <ParticleSystem> >(); this.onBarrelFired.Add(new List <ParticleSystem>()); // initialize the structures for (int i = 1; i < m_CannonBarrels.Length; i++) { this.onBarrelFired.Add(new List <ParticleSystem>()); } for (int i = 0; i < this.initOnBarrelFired.Count; i++) { CannonBarrel target_barrel = this.initCannonBarrelFiredList[i]; bool match = false; for (int j = 0; j < m_CannonBarrels.Length; j++) { if (target_barrel == m_CannonBarrels[j]) { this.DebugPrint(" entry [" + i.ToString() + "] has matched to barrel <" + j.ToString() + ">"); this.onBarrelFired[j].Add(this.initOnBarrelFired[i]); this.DebugPrint(" dump1"); match = true; break; } } if (!match) { this.onBarrelFired[0].Add(this.initOnBarrelFired[i]); this.DebugPrint(" dump1"); } } } if (this.initBeforeBarrelFired != null && this.initBeforeBarrelFired.Count > 0) { this.beforeBarrelFired = new List <List <ParticleSystem> >(); this.defaultTimeNeeded = new List <List <float> >(); this.beforeBarrelFired.Add(new List <ParticleSystem>()); this.defaultTimeNeeded.Add(new List <float>()); // initialize the structures for (int i = 1; i < m_CannonBarrels.Length; i++) { this.beforeBarrelFired.Add(new List <ParticleSystem>()); this.defaultTimeNeeded.Add(new List <float>()); } // we know they've been shoved in order. List <ParticleSystem> init_system_dump = this.initBeforeBarrelFired; List <float> init_float_dump = this.initTimeBeforeBarrelFired; // this.beforeBarrelFired[0] = new List<ParticleSystem>(); // this.defaultTimeNeeded[0] = new List<float>(); this.maxTimeNeeded = new float[m_CannonBarrels.Length]; this.adjStartDelay = new float[m_CannonBarrels.Length]; this.adjCycleDelay = new float[m_CannonBarrels.Length]; this.DebugPrint("Stuff was initialized (CannonBarrelAlign)"); // Identify proper barrel index, shove it in there. Shove into barrel 0 if no CannonBarrel provided for (int i = 0; i < init_system_dump.Count; i++) { this.DebugPrint("Begin init entry " + i.ToString()); CannonBarrel target_barrel = this.initCannonBarrelList[i]; bool match = false; for (int j = 0; j < m_CannonBarrels.Length; j++) { if (target_barrel == m_CannonBarrels[j]) { this.DebugPrint(" entry [" + i.ToString() + "] has matched to barrel <" + j.ToString() + ">"); this.beforeBarrelFired[j].Add(init_system_dump[i]); this.DebugPrint(" dump1"); this.defaultTimeNeeded[j].Add(init_float_dump[i]); this.DebugPrint(" dump2"); this.maxTimeNeeded[j] = Mathf.Max(this.maxTimeNeeded[j], init_float_dump[i]); this.DebugPrint(" dump3"); match = true; break; } } if (!match) { this.beforeBarrelFired[0].Add(init_system_dump[i]); this.DebugPrint(" dump1"); this.defaultTimeNeeded[0].Add(init_float_dump[i]); this.DebugPrint(" dump2"); this.maxTimeNeeded[0] = Mathf.Max(this.maxTimeNeeded[0], init_float_dump[i]); this.DebugPrint(" dump3"); } } return(true); } // no longer need, free up for GC this.initCannonBarrelList = null; return(false); }