// public static PeEntity CreateNetRandTerDoodadWithPlayerId(int entityId, int protoId, Vector3 pos, Vector3 scl, Quaternion rot, int townId = -1, int campId = SceneDoodadDesc.c_neutralCamp, int damageId = SceneDoodadDesc.c_neutralDamage,int playerId = -1) // { // return CreateDoodad(true, new AgentInfo(townId, true, campId, damageId), protoId, pos, scl, rot, entityId); // } public static PeEntity CreateStoryDoodadNet(int assetId, int entityId) { SceneDoodadDesc doodad = StoryDoodadMap.Get(assetId); if (null == doodad) { return(null); } AgentInfo spInfo = new AgentInfo(doodad._id, doodad._isShown, doodad._campId, doodad._damageId); return(CreateDoodad(true, spInfo, doodad._protoId, doodad._pos, doodad._scl, doodad._rot, entityId));; }
public static void LoadData() { SqliteDataReader reader = LocalDatabase.Instance.ReadFullTable("sceneAssetList"); int idxId = reader.GetOrdinal("ID"); int idxType = reader.GetOrdinal("type"); int idxShown = reader.GetOrdinal("IsProduce"); int idxDamagable = reader.GetOrdinal("IsDamage"); int idxProtoId = reader.GetOrdinal("PrototypeDoodad_Id"); int idxPos = reader.GetOrdinal("PosXYZ"); int idxRot = reader.GetOrdinal("RotXYZW"); int idxScl = reader.GetOrdinal("ScaleXYZ"); while (reader.Read()) { SceneDoodadDesc desc = new SceneDoodadDesc(); desc._id = reader.GetInt32(idxId); desc._type = reader.GetInt32(idxType); // save or not desc._protoId = reader.GetInt32(idxProtoId); desc._isShown = 0 != reader.GetInt32(idxShown); SceneDoodadDesc.GetCampDamageId(0 != reader.GetInt32(idxDamagable), out desc._campId, out desc._damageId); string[] strPos = reader.GetString(idxPos).Split(','); string[] strRot = reader.GetString(idxRot).Split(','); string[] strScl = reader.GetString(idxScl).Split(','); desc._pos = new Vector3( Convert.ToSingle(strPos[0]), Convert.ToSingle(strPos[1]), Convert.ToSingle(strPos[2])); desc._rot = new Quaternion( Convert.ToSingle(strRot[0]), Convert.ToSingle(strRot[1]), Convert.ToSingle(strRot[2]), Convert.ToSingle(strRot[3])); if (desc._rot.w > 2) //Quaternion should be normalized { desc._rot.eulerAngles = new Vector3(desc._rot.x, desc._rot.y, desc._rot.z); } desc._scl = new Vector3( Convert.ToSingle(strScl[0]), Convert.ToSingle(strScl[1]), Convert.ToSingle(strScl[2])); s_dicDoodadData.Add(desc._id, desc); } }
protected override void OnPEInstantiate(uLink.NetworkMessageInfo info) { objType = (DoodadType)info.networkView.initialData.Read <int>(); int playerId = info.networkView.initialData.Read <int>(); _teamId = info.networkView.initialData.Read <int>(); _assetId = info.networkView.initialData.Read <int>(); _id = info.networkView.initialData.Read <int>(); _protoTypeId = info.networkView.initialData.Read <int>(); Vector3 scale = info.networkView.initialData.Read <Vector3>(); string param = info.networkView.initialData.Read <string>(); SceneDoodadDesc doodad = null; _pos = transform.position; rot = transform.rotation; if (null == ParentTrans) { ParentTrans = new GameObject("DoodadNetworkMgr").transform; } transform.parent = ParentTrans; if (PeGameMgr.IsMultiStory) { doodad = StoryDoodadMap.Get(_assetId); } if (objType == DoodadType.DoodadType_Drop || objType == DoodadType.DoodadType_Dead) { itemBox = ItemBoxMgr.Instance.AddItemMultiPlay(OwnerView.viewID.id, playerId, _pos, this); } else if (objType == DoodadType.DoodadType_SceneBox) { if (doodad != null) { entity = DoodadEntityCreator.CreateStoryDoodadNet(_assetId, Id); } else { entity = DoodadEntityCreator.CreateDoodadNet(_protoTypeId, _pos, scale, rot, Id); } if (entity != null) { WareHouseObject script = entity.gameObject.GetComponent <WareHouseObject>(); if (script != null) { script._id = _assetId; } } } else if (objType == DoodadType.DoodadType_SceneItem) { string[] str = param.Split('|'); if (str.Length != 2) { return; } _sceneItemName = str[1]; if (_sceneItemName == "ash_box") { itemBox = ItemBoxMgr.Instance.AddItemMultiPlay(OwnerView.viewID.id, _assetId, _pos, this); } else if (_sceneItemName == "ash_ball") { itemBox = ItemBoxMgr.Instance.AddItemMultiPlay(OwnerView.viewID.id, _assetId, _pos, this); } else { RequestItemList(); } } else if (objType == DoodadType.DoodadType_Repair) { if (doodad != null) { entity = DoodadEntityCreator.CreateStoryDoodadNet(_assetId, Id); } else { entity = DoodadEntityCreator.CreateDoodadNet(_protoTypeId, _pos, scale, rot, Id); } } else if (objType == DoodadType.DoodadType_Power) { if (doodad != null) { entity = DoodadEntityCreator.CreateStoryDoodadNet(_assetId, Id); } else { entity = DoodadEntityCreator.CreateDoodadNet(_protoTypeId, _pos, scale, rot, Id); } } else if (objType == DoodadType.DoodadType_RandomBuilding || objType == DoodadType.DoodadType_RandomBuilding_Repair || objType == DoodadType.DoodadType_RandomBuilding_Power) { ExtractParam(param, out townId, out _campId, out _damageId, out _dPlayerId); if (doodad != null) { entity = DoodadEntityCreator.CreateStoryDoodadNet(_assetId, Id); } else { entity = DoodadEntityCreator.CreateNetRandTerDoodad(Id, _protoTypeId, _pos, scale, rot, townId, _campId, _damageId, _dPlayerId); } } else { if (doodad != null) { entity = DoodadEntityCreator.CreateStoryDoodadNet(_assetId, Id); } else { entity = DoodadEntityCreator.CreateDoodadNet(_protoTypeId, _pos, scale, rot, Id); } } if (entity != null) { OnSpawned(entity.gameObject); } mapObjNetworkMgr.Add(this); gameObject.name = string.Format("Mapobj assetId:{0}, protoTypeId:{1}, objType:{2}, entityId:{3}", _assetId, _protoTypeId, objType, _id); }