public Rocket InitiateLaunch(Player initiator, RocketType rocketName, Vector3 direction) { RocketParameters parameters = GM.RocketTypes.GetRocketParameters(rocketName); Rocket newRocket = GameObject.Instantiate(parameters.prefab, initiator.transform.position + direction * initiator.transform.localScale.x, Quaternion.LookRotation(direction, Vector3.back)).AddComponent <Rocket>(); newRocket.OverwriteProperties(parameters); newRocket.LauncherPlanet = initiator.gameObject; return(newRocket); }
//need decorator public void OverwriteProperties(RocketParameters parameters) { if (!parameters) { return; } //Set available properies values foreach (RocketPropertyEntry entry in parameters.properties) { Parameters[entry.property] = entry.value; } }