private static void OnLoadSuccess(DecalParam arg1, UnityObject arg2) { _logger.DebugFormat("Decal-Combined OnLoadSuccess !"); if (arg2 == null || arg2.AsObject == null) { _logger.DebugFormat("arg2 == null || arg2.AsObject == null !"); return; } _debugGameObject = arg2.AsObject as GameObject; arg1.entity.assets.LoadedAssets.Add(arg1.assetInfo, arg2); Decal decal = _debugGameObject.AddComponent <Decal>(); _debugGameObject.transform.localEulerAngles = Vector3.zero; Vector3 forward = arg1.forward; float multiplyingpower = forward.y / Math.Max(Math.Max(forward.x, forward.z), 0.01f); bool ground = (multiplyingpower > 0.577f); arg1.head.x = FreeMathUtility.yRoundx(forward); if (ground) { decal.transform.position = arg1.position; } else { arg1.head.y = 0; arg1.head.z = FreeMathUtility.yRoundz(forward); decal.transform.position = arg1.position - forward * 0.3f; } _debugGameObject.transform.localScale = new Vector3(0.75f, ground ? 0.06f : 0.64f, 0.75f); decal.transform.Rotate(arg1.head, Space.World); float result = Vector3.Dot(forward, decal.transform.forward); if (Math.Abs(result) > 0.1f) { Vector3 localEulerAngles = decal.transform.localEulerAngles; localEulerAngles.x = -localEulerAngles.x; localEulerAngles.z = -localEulerAngles.z; decal.transform.localEulerAngles = localEulerAngles; } if (arg1.contexts == null) { return; } var bundleName = AssetBundleConstant.Icon_Spray; var assetName = string.Format("Spray_{0}", arg1.sprayPrintSpriteId); _logger.DebugFormat(assetName); var assetManager = arg1.contexts.session.commonSession.AssetManager; assetManager.LoadAssetAsync(assetName, new AssetInfo(bundleName, assetName), (source, unityObj) => { if (unityObj != null && unityObj.AsObject != null) { if (unityObj.AsObject is Texture2D) { Texture2D texture = unityObj.AsObject as Texture2D; assetManager.LoadAssetAsync(texture, new AssetInfo("shaders", "New Material"), OnMaterialLoadSus); } else if (unityObj.AsObject is Sprite) { Sprite sprite = unityObj.AsObject as Sprite; #if UNITY_EDITOR Material m = new Material(Shader.Find("Decalicious/Deferred Spray")); decal.Material = m; m.mainTexture = sprite.texture; _debugGameObject.GetComponent <MeshRenderer>().enabled = true; #else assetManager.LoadAssetAsync(sprite.texture, new AssetInfo("shaders", "New Material"), OnMaterialLoadSus); #endif } else { _logger.DebugFormat("LoadAssetAsync failed !"); GameObject.Destroy(_debugGameObject); } } else { _logger.DebugFormat("bundleName : " + bundleName + " assetName : " + assetName); } }); }
public Object Frame(int frameTime) { var v = new Vector3(); // var battleModel = GameModelLocator.getInstance().gameModel; // // var ce = battleModel.getClientEntityFormId(id); // // if (ce == null) // { // ce = battleModel.getCurrentSelfClientEntity(); // } // // var angle = ce.lerpAngle.x + battleModel.shakeAngleOffect.x; var battleModel = GameModelLocator.GetInstance().GameModel; PlayerEntity player = SingletonManager.Get <FreeUiManager>().Contexts1.player.GetEntityWithEntityKey(new EntityKey(id, (int)EEntityType.Player)); FreeMoveEntity move = SingletonManager.Get <FreeUiManager>().Contexts1.freeMove.GetEntityWithEntityKey(new EntityKey(id, (int)EEntityType.FreeMove)); //if (player == null && move == null) //{ // player = SingletonManager.Get<FreeUiManager>().Contexts1.player.flagSelfEntity; //} var angle = this._angle; if (player != null) { angle = player.orientation.Yaw + this._angle + battleModel.shakeAngleOffect.x; } var dir = new Vector3(); var end = new Vector3(); FreeMathUtility.AnglesToVector(angle, pitch, ref dir); PositionComponent pos = null; if (player != null) { pos = player.position; } if (move != null) { if (move.hasPosition) { pos = move.position; } } if (pos != null) { FreeMathUtility.Vector3DMA(pos.Value, distance, dir, ref end); v.x = end.x; v.y = end.y + height; v.z = end.z; } else { return(null); } return(v); }
public Object Frame(int frameTime) { var v = new Vector3(); // var battleModel:BattleModel = GameModelLocator.getInstance().gameModel; // var ceS:ClientEntity = battleModel.getClientEntityFormId(source); // var ceT:ClientEntity = battleModel.getClientEntityFormId(target); // // if(ceS == null){ // ceS = battleModel.getCurrentSelfClientEntity(); // } // // if(ceT == null){ // ceT = battleModel.getCurrentSelfClientEntity(); // } var ceS = SingletonManager.Get <FreeUiManager>().Contexts1.player.GetEntityWithEntityKey(new EntityKey(source, (int)EEntityType.Player)); if (ceS == null) { ceS = SingletonManager.Get <FreeUiManager>().Contexts1.player.flagSelfEntity; } var ceT = SingletonManager.Get <FreeUiManager>().Contexts1.player.GetEntityWithEntityKey(new EntityKey(target, (int)EEntityType.Player)); if (ceT == null) { ceT = SingletonManager.Get <FreeUiManager>().Contexts1.player.flagSelfEntity; } var sub = ceT.position.Value - ceS.position.Value; if (toSource) { sub = ceS.position.Value - ceT.position.Value; } var av = new Vector3(); FreeMathUtility.VectorToAngles(sub, ref av); var angle = av.x; var dir = new Vector3(); var end = new Vector3(); var mins = new Vector3(); var maxs = new Vector3(); mins.Set(-10, -10, -10); maxs.Set(10, 10, 10); FreeMathUtility.AnglesToVector(angle, 0, ref dir); if (toSource) { FreeMathUtility.Vector3DMA(ceS.position.Value, distance, dir, ref end); } else { FreeMathUtility.Vector3DMA(ceT.position.Value, distance, dir, ref end); } v.x = end.x; v.y = end.y + height; v.z = end.z; return(v); }