private IEnumerator WaitForNetInitialisation(SpriteHandlerManager.SpriteChange spriteChange) { yield return(null); if (NetworkIdentity.netId == 0) { Logger.LogError("ID hasn't been set for " + this.transform.parent); yield break; } if (SpriteHandlerManager.Instance.QueueChanges.ContainsKey(this)) { spriteChange.MergeInto(SpriteHandlerManager.Instance.QueueChanges[this]); } SpriteHandlerManager.Instance.QueueChanges[this] = spriteChange; }
public static void GenerateSerialisation(SpriteHandlerManager.SpriteChange spriteChange) { if (spriteChange.PresentSpriteSet != -1) { ToReturn.Append(">"); ToReturn.Append(spriteChange.PresentSpriteSet.ToString()); } if (spriteChange.VariantIndex != -1) { ToReturn.Append("<"); ToReturn.Append(spriteChange.VariantIndex.ToString()); } if (spriteChange.CataloguePage != -1) { ToReturn.Append("&"); ToReturn.Append(spriteChange.CataloguePage.ToString()); } if (spriteChange.AnimateOnce) { ToReturn.Append("#"); ToReturn.Append(spriteChange.CataloguePage.ToString()); } if (spriteChange.PushTexture) { ToReturn.Append(","); } if (spriteChange.Empty) { ToReturn.Append("?"); } if (spriteChange.PushClear) { ToReturn.Append("~"); } if (spriteChange.ClearPallet) { ToReturn.Append('^'); } if (spriteChange.SetColour != null) { ToReturn.Append("`"); ToReturn.Append(Convert.ToChar(Mathf.RoundToInt(spriteChange.SetColour.Value.r * 255))); ToReturn.Append(Convert.ToChar(Mathf.RoundToInt(spriteChange.SetColour.Value.g * 255))); ToReturn.Append(Convert.ToChar(Mathf.RoundToInt(spriteChange.SetColour.Value.b * 255))); ToReturn.Append(Convert.ToChar(Mathf.RoundToInt(spriteChange.SetColour.Value.a * 255))); } if (spriteChange.Pallet != null) { if (spriteChange.Pallet.Count < 1 || spriteChange.Pallet.Count > 255) { Logger.Log(string.Format("Pallet size must be between 1 and 255. It is currently {0}.", spriteChange.Pallet.Count)); ToReturn.Append("£"); return; } ToReturn.Append("%"); ToReturn.Append(Convert.ToChar(spriteChange.Pallet.Count)); foreach (Color Colour in spriteChange.Pallet) { ToReturn.Append(Convert.ToChar(Mathf.RoundToInt(Colour.r * 255))); ToReturn.Append(Convert.ToChar(Mathf.RoundToInt(Colour.g * 255))); ToReturn.Append(Convert.ToChar(Mathf.RoundToInt(Colour.b * 255))); ToReturn.Append(Convert.ToChar(Mathf.RoundToInt(Colour.a * 255))); } } ToReturn.Append("£"); }
private void NetUpdate( SpriteDataSO NewSpriteDataSO = null, int NewVariantIndex = -1, int NewCataloguePage = -1, bool NewPushTexture = false, bool NewEmpty = false, bool NewPushClear = false, bool NewClearPallet = false, Color?NewSetColour = null, List <Color> NewPalette = null) { if (NetworkThis == false) { return; } if (SpriteHandlerManager.Instance == null) { return; } if (NetworkIdentity == null) { if (this?.gameObject == null) { return; } var NetID = SpriteHandlerManager.GetRecursivelyANetworkBehaviour(this.gameObject); if (NetID == null) { Logger.LogError("Was unable to find A NetworkBehaviour for ", Category.SpriteHandler); return; } ; NetworkIdentity = NetID.netIdentity; if (NetworkIdentity == null) { var gamename = ""; if (this?.gameObject != null) { gamename = gameObject.name; } Logger.LogError("Was unable to find A NetworkBehaviour for " + gamename, Category.SpriteHandler); } } if (CustomNetworkManager.Instance._isServer == false) { return; } SpriteHandlerManager.SpriteChange spriteChange = null; if (SpriteHandlerManager.Instance.QueueChanges.ContainsKey(this)) { spriteChange = SpriteHandlerManager.Instance.QueueChanges[this]; } else { spriteChange = SpriteHandlerManager.GetSpriteChange(); } if (NewSpriteDataSO != null) { if (NewSpriteDataSO.setID == -1) { Logger.Log("NewSpriteDataSO NO ID!" + NewSpriteDataSO.name); } if (spriteChange.Empty) { spriteChange.Empty = false; } spriteChange.PresentSpriteSet = NewSpriteDataSO.setID; } if (NewVariantIndex != -1) { spriteChange.VariantIndex = NewVariantIndex; } if (NewCataloguePage != -1) { spriteChange.CataloguePage = NewCataloguePage; } if (NewPushTexture) { if (spriteChange.PushClear) { spriteChange.PushClear = false; } spriteChange.PushTexture = NewPushTexture; } if (NewEmpty) { if (spriteChange.PresentSpriteSet != -1) { spriteChange.PresentSpriteSet = -1; } spriteChange.Empty = NewEmpty; } if (NewPushClear) { if (spriteChange.PushTexture) { spriteChange.PushTexture = false; } spriteChange.PushClear = NewPushClear; } if (NewClearPallet) { if (spriteChange.Pallet != null) { spriteChange.Pallet = null; } spriteChange.ClearPallet = NewClearPallet; } if (NewSetColour != null) { spriteChange.SetColour = NewSetColour; } if (NewPalette != null) { if (spriteChange.ClearPallet) { spriteChange.ClearPallet = false; } spriteChange.Pallet = NewPalette; } if (NetworkIdentity.netId == 0) { //Logger.Log("ID hasn't been set for " + this.transform.parent); StartCoroutine(WaitForNetInitialisation(spriteChange)); } else { SpriteHandlerManager.Instance.QueueChanges[this] = spriteChange; } }
public static void GenerateSerialisation(SpriteHandlerManager.SpriteChange spriteChange) { if (spriteChange.PresentSpriteSet != -1) { ToReturn.Append(">"); ToReturn.Append(spriteChange.PresentSpriteSet.ToString()); } if (spriteChange.VariantIndex != -1) { ToReturn.Append("<"); ToReturn.Append(spriteChange.VariantIndex.ToString()); } if (spriteChange.CataloguePage != -1) { ToReturn.Append("&"); ToReturn.Append(spriteChange.CataloguePage.ToString()); } if (spriteChange.PushTexture) { ToReturn.Append(","); } if (spriteChange.Empty) { ToReturn.Append("?"); } if (spriteChange.PushClear) { ToReturn.Append("~"); } if (spriteChange.ClearPallet) { ToReturn.Append('^'); } if (spriteChange.SetColour != null) { ToReturn.Append("`"); ToReturn.Append(Convert.ToChar(Mathf.RoundToInt(spriteChange.SetColour.Value.r * 255))); ToReturn.Append(Convert.ToChar(Mathf.RoundToInt(spriteChange.SetColour.Value.g * 255))); ToReturn.Append(Convert.ToChar(Mathf.RoundToInt(spriteChange.SetColour.Value.b * 255))); ToReturn.Append(Convert.ToChar(Mathf.RoundToInt(spriteChange.SetColour.Value.a * 255))); } if (spriteChange.Pallet != null) { if (spriteChange.Pallet.Count != 8) { Logger.Log("Pallet Is not the right length has to be eight it is " + spriteChange.Pallet.Count); ToReturn.Append("£"); return; } ToReturn.Append("%"); foreach (var Colour in spriteChange.Pallet) { ToReturn.Append(Convert.ToChar(Mathf.RoundToInt(Colour.r * 255))); ToReturn.Append(Convert.ToChar(Mathf.RoundToInt(Colour.g * 255))); ToReturn.Append(Convert.ToChar(Mathf.RoundToInt(Colour.b * 255))); ToReturn.Append(Convert.ToChar(Mathf.RoundToInt(Colour.a * 255))); } } ToReturn.Append("£"); }