private void CheckExplosionEffect(ClientEffectEntity entity) { PlayerEntity player = AllContexts.player.flagSelfEntity; Vector3 playerPos = player.position.Value; Vector3 pos = entity.position.Value; Transform tran; if (player.appearanceInterface.Appearance.IsFirstPerson) { var root = player.RootGo(); tran = BoneMount.FindChildBoneFromCache(root, BoneName.CharacterHeadBoneName); } else { var root = player.RootGo(); tran = BoneMount.FindChildBoneFromCache(root, BoneName.CharacterHeadBoneName); } if (null != tran) { playerPos = tran.position; } //距离 float dis = Vector3.Distance(playerPos, pos); if (dis < 9) { player.AudioController().PlayDizzyAudio(dis, 9); } }
public static void OnDestroy(ClientEffectEntity entity) { if (entity.hasEffectType && entity.effectType.Value == (int)EClientEffectType.BulletDrop) { _bulletDropEntities.Remove(entity); } }
public static void CreateDecalVolume(ClientEffectEntity entity, Contexts contexts, Vector3 position, Vector3 forward, Vector3 head, int sprayPrintSpriteId) { CreateDebugGameObject(); _decal = GameObject.CreatePrimitive(PrimitiveType.Cube); MeshRenderer meshRen = _decal.GetComponent <MeshRenderer>(); meshRen.enabled = false; _decal.GetComponent <BoxCollider>().enabled = false; _decal.transform.localScale = Vector3.one; DecalVolume dv = _decal.AddComponent <DecalVolume>(); dv.Volume.m_origin = Vector3.zero; dv.Volume.m_size = new Vector3(1.2f, 1.2f, 1.2f); _decal.transform.position = position; _decal.transform.Rotate(head, Space.Self); var bundleName = AssetBundleConstant.Icon_Spray; var assetName = string.Format("Spray_{0}", sprayPrintSpriteId); _logger.DebugFormat(assetName); var assetManager = contexts.session.commonSession.AssetManager; AssetInfo assetInfo = new AssetInfo(bundleName, assetName); assetManager.LoadAssetAsync(assetName, assetInfo, (source, unityObj) => { DecalVolumeParam param = new DecalVolumeParam(); param.meshRen = meshRen; if (unityObj != null && unityObj.AsObject != null) { if (unityObj.AsObject is Texture2D) { param.texture = unityObj.AsObject as Texture2D; } else if (unityObj.AsObject is Sprite) { Sprite sprite = unityObj.AsObject as Sprite; param.texture = sprite.texture; } else { _logger.DebugFormat("unityObj.AsObject is null !"); return; } assetManager.LoadAssetAsync(param, new AssetInfo("shaders", "MaterialForDecal"), OnDecalMaterialLoadSus); dv.Create(forward, 0); } else { _logger.DebugFormat("bundleName : " + bundleName + " assetName : " + assetName); } }); entity.assets.LoadedAssets.Add(assetInfo, new UnityObject(_decal, assetInfo)); }
public void Initialize(ClientEffectEntity entity) { var go = (GameObject)entity.assets.FirstAsset; go.transform.localScale = Ssjj2AssetsUtility.LocalScale; go.transform.position = entity.position.Value; if (entity.hasAttachParent) { var player = _contexts.player.GetEntityWithEntityKey(entity.attachParent.ParentKey); if (null != player && player.hasBones) { go.transform.parent = player.bones.Spine; go.transform.position = player.position.Value + entity.attachParent.Offset; if (!go.activeSelf) { go.SetActive(true); } } else { go.SetActive(false); Logger.ErrorFormat("no player with key {0}, or the player has no bones", entity.attachParent); } } }
public override void Initialize(ClientEffectEntity entity) { var clip = (GameObject)entity.assets.LoadedAssets[Asset]; var position = entity.position.Value; var yaw = entity.effectRotation.Yaw; clip.transform.position = position; clip.transform.rotation = Quaternion.Euler(new Vector3(0, yaw + 90, 0)); clip.transform.localScale = Vector3.one; clip.SetActive(true); }
public override void Initialize(ClientEffectEntity entity) { base.Initialize(entity); var go = (GameObject)entity.assets.LoadedAssets[Asset]; try { // go.SendMessage("ApplyTriggerMask", _layerMask); } catch (Exception e) { Debug.LogFormat("ApplyTrigger error {0}", e.Message); } }
public virtual void Initialize(ClientEffectEntity entity) { var go = (GameObject)entity.assets.LoadedAssets[Asset]; var position = entity.position.Value; if (entity.hasEffectRotation) { var yaw = entity.effectRotation.Yaw; } go.transform.position = position; go.transform.rotation = Quaternion.identity; go.transform.localScale = Vector3.one; if (!go.activeSelf) { go.SetActive(true); } }
public override void Initialize(ClientEffectEntity entity) { base.Initialize(entity); var go = (GameObject)entity.assets.LoadedAssets[Asset]; if (null != go && entity.hasAttachParent) { var owner = AllContexts.player.GetEntityWithEntityKey(entity.attachParent.ParentKey); if (null == owner) { Logger.ErrorFormat("on player with entity key {0} !", entity.attachParent.ParentKey); return; } if (!owner.hasAppearanceInterface) { Logger.Error("owner has no appearance interface !"); return; } var appearance = owner.appearanceInterface.Appearance; var characterBone = owner.characterBoneInterface.CharacterBone; var muzzleTrans = characterBone.GetLocation(SpecialLocation.MuzzleEffectPosition, appearance.IsFirstPerson ? CharacterView.FirstPerson : CharacterView.ThirdPerson); if (null != muzzleTrans) { go.transform.parent = muzzleTrans; go.transform.localPosition = Vector3.zero; go.transform.forward = muzzleTrans.forward; } else { Logger.Error("muzzle effect anchor transform doesn't exist !"); } } else { if (null == go) { Logger.ErrorFormat("no {0} in loadedassets : load fialed ?", Asset); } else { Logger.Error("entity has no parent component"); } } }
public static void CreateBasicDecal(ClientEffectEntity entity, Contexts contexts, Vector3 position, Vector3 forward, Vector3 head, int sprayPrintSpriteId) { CreateDebugGameObject(); var assetManager = contexts.session.commonSession.AssetManager; string bundleNameSpray = AssetBundleConstant.Prefab_Spray; DecalParam decalParam = new DecalParam(); AssetInfo assetInfo = new AssetInfo(bundleNameSpray, "Decal-Combined"); decalParam.entity = entity; decalParam.contexts = contexts; decalParam.position = position; decalParam.forward = forward; decalParam.head = head; decalParam.sprayPrintSpriteId = sprayPrintSpriteId; decalParam.assetInfo = assetInfo; _logger.DebugFormat("CreateBasicDecal"); assetManager.LoadAssetAsync(decalParam, assetInfo, OnLoadSuccess); }
public BatchLoadHandler(ClientEffectEntity entity, AssetInfo[] assetInfos) { _entity = entity; _assetInfos = assetInfos; }
public virtual void Render(ClientEffectEntity entity) { }
private void CheckFlash(ClientEffectEntity entity) { PlayerEntity player = AllContexts.player.flagSelfEntity; //闪光弹位置 Vector3 pos = entity.position.Value; //水里1米 if (SingletonManager.Get <MapConfigManager>().InWater(pos)) { float wy = SingletonManager.Get <MapConfigManager>().WaterSurfaceHeight(pos); if (!float.IsNaN(wy) && wy - pos.y > 1) { return; } } bool isShow = false; float alpha = 0, keepTime = 0, decayTime = 0; Vector3 playerPos = player.position.Value; //位置稍上抬 pos.y += 0.1f; //玩家头部位置 Transform tran; if (player.appearanceInterface.Appearance.IsFirstPerson) { var root = player.RootGo(); tran = BoneMount.FindChildBoneFromCache(root, BoneName.CharacterHeadBoneName); } else { var root = player.RootGo(); tran = BoneMount.FindChildBoneFromCache(root, BoneName.CharacterHeadBoneName); } if (null != tran) { playerPos = tran.position; } //距离 float dis = Vector3.Distance(playerPos, pos); if (dis >= 40) { return; } float diffAngle = 0; //判断是否手上爆炸 bool isHandBomb = entity.hasEffectRotation && entity.effectRotation.Yaw > 0; if (!(entity.ownerId.Value == player.entityKey.Value && isHandBomb)) { //遮挡 Vector3 hitPoint; bool isHit = CommonMathUtil.Raycast(playerPos, pos, dis, _layerMask, out hitPoint); if (isHit) { return; } //角度 float yaw = CommonMathUtil.TransComAngle(player.orientation.Yaw); float angle = CommonMathUtil.GetAngle(new Vector2(pos.x, pos.z), new Vector2(playerPos.x, playerPos.z)); diffAngle = Mathf.Abs(angle - yaw); diffAngle = Mathf.Min(360 - diffAngle, diffAngle); } if (diffAngle <= 60) { if (dis < 20) { isShow = true; alpha = 1; keepTime = Mathf.Max(1.2f, 3 * Mathf.Pow(0.4f, dis / 30)); decayTime = alpha / 0.4f; } else if (dis < 40) { isShow = true; alpha = 1 - dis * 0.00025f; keepTime = 0; decayTime = alpha / 0.4f; } } else if (diffAngle <= 90) { if (dis <= 20) { isShow = true; alpha = Mathf.Max(0, 1 - dis * 0.00025f); keepTime = 0; decayTime = alpha / 0.4f; } } else if (diffAngle <= 180) { if (dis <= 10) { isShow = true; alpha = Mathf.Max(0, 0.8f - dis * 0.00025f); keepTime = 0; decayTime = alpha / 0.5f; } } if (isShow) { ScreenFlashInfo screenFlashInfo = new ScreenFlashInfo(); screenFlashInfo.IsShow = true; screenFlashInfo.Alpha = alpha; screenFlashInfo.KeepTime = keepTime; screenFlashInfo.DecayTime = decayTime; AllContexts.ui.uI.ScreenFlashInfo = screenFlashInfo; player.AudioController().PlayDizzyAudio(dis, 40); // GameAudioMedia.PlayFlashDizzyAudio(pos,Math.Min(0,40-dis)); } }
public override void Initialize(ClientEffectEntity entity) { base.Initialize(entity); CheckFlash(entity); }
public override void Initialize(ClientEffectEntity entity) { base.Initialize(entity); CheckExplosionEffect(entity); }
public override void Initialize(ClientEffectEntity entity) { var offset = 0.001f; var normal = entity.normal.Value; var go = entity.assets.FirstAsset; if (!go) { return; } go.transform.SetPositionAndRotation(entity.position.Value + offset * normal, Quaternion.FromToRotation(Vector3.forward, normal)); go.transform.localScale = GlobalConst.LocalScale; if (entity.hasAttachParent) { switch ((EEntityType)entity.attachParent.ParentKey.EntityType) { case EEntityType.Vehicle: var vehicle = AllContexts.vehicle.GetEntityWithEntityKey(entity.attachParent.ParentKey); if (vehicle != null && vehicle.hasGameObject && null != vehicle.gameObject.UnityObject) { go.transform.SetParent(vehicle.gameObject.UnityObject.AsGameObject.transform, false); go.transform.localPosition = entity.attachParent.Offset; } else { Logger.Error("vehicle gameobject does not exist"); } break; // case EEntityType.Player: // var player = AllContexts.player.GetEntityWithEntityKey(entity.attachParent.ParentKey); // if (player !=null && player.hasBones && null != player.bones.Spine) // { // go.transform.SetParent(player.bones.Spine.transform, false); // go.transform.localPosition = entity.attachParent.Offset; // } // else // { // Logger.Error("player sprine bones doesn't exist !"); // } // // break; // case EEntityType.SceneObject: // var trunkId = entity.attachParent.FragmentId; // var sceneObj = AllContexts.sceneObject.GetEntityWithEntityKey(entity.attachParent.ParentKey); // if (null == sceneObj) // { // entity.isFlagDestroy = true; // } // else // { // if (sceneObj.hasRawGameObject && null != sceneObj.rawGameObject) // { // var fracturedObject = sceneObj.rawGameObject.Value.GetComponent<FracturedObject>(); // if (trunkId > -1 && trunkId < fracturedObject.ListFracturedChunks.Count) // { // var trunk = fracturedObject.ListFracturedChunks[trunkId]; // if (null != trunk) // { // var transform = trunk.transform; // go.transform.SetParent(transform, false); // go.transform.localPosition = entity.attachParent.Offset + normal * 0.01f; // } // } // } // else // { // Logger.Error("target scene object has no rawgameobject"); // } // } // // break; } } go.SetActive(true); }