void RefreshPallet() { SpriteRenderer r = this.SpriteRender; if (r == null) { return; } Material mat = r.sharedMaterial; if (mat == null) { return; } var imageRes = StageMgr.GetInstance().ImageRes; if (imageRes != null && imageRes.LoadOk) { var frame = imageRes.GetImageFrame((PlayerState)m_Group, m_Image); if (frame != null) { StageMgr.GetInstance().LinkImageFramePalletLastLink(frame); var palletTex = frame.LocalPalletTex; mat.SetTexture("_PalletTex", palletTex); m_IsPalletNull = palletTex == null; } } }
public void InitStatic(BgStaticInfo bgInfo) { if (bgInfo == null) { return; } layerno = bgInfo.layerno; var imageRes = StageMgr.GetInstance().ImageRes; if (imageRes != null && imageRes.LoadOk) { m_Group = bgInfo.srpiteno_Group; m_Image = bgInfo.spriteno_Image; m_MaskType = bgInfo.mask; m_SceneType = SceneLayerType.Static; m_TransType = bgInfo.transType; InitSpriteRender(bgInfo.transType); var frame = imageRes.GetImageFrame((PlayerState)bgInfo.srpiteno_Group, bgInfo.spriteno_Image); UpdateImageFrame(frame, ActionFlip.afNone, ActionDrawMode.adNone, bgInfo.mask == MaskType.none); m_IsInited = true; } }
public void InitAnimated(BgAniInfo anInfo) { if (anInfo == null) { return; } layerno = anInfo.layerno; var imageRes = StageMgr.GetInstance().ImageRes; if (imageRes != null && imageRes.LoadOk) { // 处理动画层 m_Group = anInfo.actionno; m_MaskType = anInfo.mask; m_SceneType = SceneLayerType.Animation; m_TransType = anInfo.transType; InitSpriteRender(anInfo.transType); m_IsInited = true; if (StageMgr.GetInstance().HasBeginAction(m_Group)) { // 初始化动画 var ani = this.ImageAni; if (ani != null) { ani.Type = ImageAnimation.ImageAnimationType.Scene; if (ani.PlayerPlayerAni((PlayerState)m_Group, true)) { RefreshCurFrame(ani); } } } } }
void UpdateMove(float deltaTime) { if (Mathf.Abs(Vec.x) <= float.Epsilon && Mathf.Abs(Vec.y) <= float.Epsilon) { if (m_Display == null || m_Display.Attribe.StandType != Cns_Type.A) { return; } } // 按照毫秒算速度 float d = deltaTime * 1000f; if (m_Display != null && m_Display.Attribe.StandType == Cns_Type.A) { float gg = (-g + A.y) / (PlayerDisplay._cVelPerUnit * PlayerDisplay._cAPerUnit); //float gg = -g/1000000f * 6.5f; Vec.y += gg * d; } float Ax = IsFlipX ? -A.x: A.x; Vector2 vv = new Vector2(Vec.x * (IsFlipX? -1:1), Vec.y); if (m_Display != null && m_Display.Attribe.StandType != Cns_Type.A && (Mathf.Abs(vv.x) > float.Epsilon || Mathf.Abs(Ax) > float.Epsilon)) { float oldVx = vv.x; // 动态摩擦因子 float u = AppConfig.GetInstance().u *StageMgr.GetInstance().u; // 摩擦力的向下地面fn float aX = u / 100f * g; if (vv.x > 0) { aX = -aX; } aX += Ax; vv.x = aX * deltaTime + vv.x; if (oldVx * vv.x < 0) { vv.x = 0; } } Vector2 org = this.OffsetPos; org += vv * d; if (org.y < 0) { //Vec.y = 0; org.y = 0; } this.OffsetPos = org; if (m_Display != null) { m_Display.InternalUpdatePos(); //Debug.LogError (m_Display.transform.localPosition.z.ToString ()); } }
public bool HasImage(PlayerState group, int index) { if (group == PlayerState.psNone) { return(false); } if (Type == ImageAnimationType.Player) { PlayerDisplay displayer = this.CacheDisplayer; if (displayer == null) { return(false); } var loaderPlayer = displayer.LoaderPlayer; if (loaderPlayer == null) { return(false); } var imgRes = loaderPlayer.ImageRes; if (imgRes == null) { return(false); } var imgLib = imgRes.ImgLib; if (imgLib == null) { imgRes.Init(); imgLib = imgRes.ImgLib; if (imgLib == null) { return(false); } } var frame = imgLib.GetImageFrame(group, index); if (frame != null && frame.Data != null) { return(true); } } else if (Type == ImageAnimationType.Scene) { var frame = StageMgr.GetInstance().ImageRes.GetImageFrame(group, index); if (frame != null && frame.Data != null) { return(true); } } return(false); }
internal bool SetStateFrameList(PlayerState state) { if (Type == ImageAnimationType.Player) { PlayerDisplay displayer = this.CacheDisplayer; if (displayer == null) { return(false); } var loaderPlayer = displayer.LoaderPlayer; if (loaderPlayer == null) { return(false); } var imgRes = loaderPlayer.ImageRes; if (imgRes == null) { return(false); } var imgLib = imgRes.ImgLib; if (imgLib == null) { imgRes.Init(); imgLib = imgRes.ImgLib; if (imgLib == null) { return(false); } } m_FrameList = imgLib.GetAnimationNodeList(state); return(true); } else if (Type == ImageAnimationType.Scene) { m_FrameList = StageMgr.GetInstance().ImageRes.GetAnimationNodeList(state); return(true); } else { return(false); } }
public void InitStatic(BgStaticInfo bgInfo) { if (bgInfo == null) { return; } layerno = bgInfo.layerno; var imageRes = StageMgr.GetInstance().ImageRes; if (imageRes != null && imageRes.LoadOk) { var frame = imageRes.GetImageFrame((PlayerState)bgInfo.srpiteno_Group, bgInfo.spriteno_Image); UpdateImageFrame(bgInfo.srpiteno_Group, frame); m_Group = bgInfo.srpiteno_Group; m_Image = bgInfo.spriteno_Image; m_IsInited = true; } }
public ImageFrame GetImageFrame(int group, int image) { if (Type == ImageAnimationType.Player) { PlayerDisplay displayer = this.CacheDisplayer; if (displayer == null) { return(null); } var loaderPlayer = displayer.LoaderPlayer; if (loaderPlayer == null) { return(null); } var imgRes = loaderPlayer.ImageRes; if (imgRes == null) { return(null); } var imgLib = imgRes.ImgLib; if (imgLib == null) { imgRes.Init(); imgLib = imgRes.ImgLib; if (imgLib == null) { return(null); } } return(imgLib.GetImageFrame((PlayerState)group, image)); } else if (Type == ImageAnimationType.Scene) { return(StageMgr.GetInstance().ImageRes.GetImageFrame((PlayerState)group, image)); } else { return(null); } }
private void UpdateImageFrame(int group, ImageFrame frame) { SpriteRenderer r = this.SpriteRender; if (r == null) { return; } if (frame == null) { r.sprite = null; var m1 = r.sharedMaterial; if (m1 != null) { m1.SetTexture("_PalletTex", null); m1.SetTexture("_MainTex", null); m_IsPalletNull = true; } return; } var flip = ActionFlip.afNone; r.sprite = frame.Data; if (r.sprite != null) { Transform trans = r.transform; Quaternion quat = trans.localRotation; switch (flip) { case ActionFlip.afH: quat.eulerAngles += new Vector3(0, 180, 0); break; case ActionFlip.afV: quat.eulerAngles += new Vector3(180, 0, 0); break; case ActionFlip.afHV: quat.eulerAngles += new Vector3(180, 180, 0); break; default: quat.eulerAngles = Vector3.zero; break; } trans.localRotation = quat; } Material mat = r.sharedMaterial; if (mat != null) { var palletTex = frame.LocalPalletTex; if (palletTex == null) { string sceneFileName = StageMgr.GetInstance().LoadedSceneFileName; // 再尝试额外加载一个文件 if (frame.LoadSceneExtLocalPalletTex(sceneFileName, group)) { palletTex = frame.LocalPalletTex; // int saveGroup = (int)ImageLibrary.SceneGroupToSaveGroup(group); // StageMgr.GetInstance().SetLastPalletLink(saveGroup, frame.Image); StageMgr.GetInstance().SetLastPalletLink(group, frame.Image); } else { StageMgr.GetInstance().LinkImageFramePalletLastLink(frame); palletTex = frame.LocalPalletTex; } } mat.SetTexture("_PalletTex", palletTex); mat.SetTexture("_MainTex", frame.Data.texture); m_IsPalletNull = palletTex == null; } }
public void SwitchPlayer(InputPlayerType playerType, PlayerDisplay display) { float x = 0f; switch (playerType) { case InputPlayerType._1p: m_1P = display; x = 100.0f; break; case InputPlayerType._2p: m_2P = display; x = ((float)Screen.width) - 100.0f; if (m_2P != null) { m_2P.IsFlipX = true; } break; case InputPlayerType._3p: m_3P = display; x = 0f; break; case InputPlayerType._4p: m_4P = display; x = 0f; break; case InputPlayerType._5p: m_5P = display; x = 0f; break; case InputPlayerType._6p: m_6P = display; x = 0f; break; case InputPlayerType._7p: m_7P = display; x = 0f; break; case InputPlayerType._8p: m_8P = display; x = 0f; break; case InputPlayerType._9p: m_9P = display; x = 0f; break; case InputPlayerType._10p: m_10P = display; x = 0f; break; case InputPlayerType._11p: m_11P = display; x = 0f; break; case InputPlayerType._12p: m_12P = display; x = 0f; break; } var cam = AppConfig.GetInstance().m_Camera; if (display != null && cam != null) { var stage = StageMgr.GetInstance(); Vector2 stayPos; if (stage.GetStayPos(playerType, out stayPos)) { var pt = cam.ScreenToWorldPoint(new Vector3(stayPos.x, stayPos.y, 0)); display.m_OffsetPos.x = pt.x; //display.m_OffsetPos.y = pt.y - 0.5f; } else { var pt = cam.ScreenToWorldPoint(new Vector3(x, 0, 0)); display.m_OffsetPos.x = pt.x; } display.InternalUpdatePos(); } if (display != null) { display.SwitchPallet((int)playerType - 1); } if (display != null && display.AnimationState == PlayerState.psNone) { if (display.LuaPly == null) { display.PlayAni(PlayerState.psStand1); } } }