public void LoadCharactor(int id) { posMng = GetComponent <PoseStatusDebug>(); owner = GetComponent <MeteorUnitDebug>(); CharacterIdx = id; Skin = new GameObject(); Skin.transform.SetParent(transform); Skin.transform.localRotation = Quaternion.identity; Skin.transform.localScale = Vector3.one; Skin.transform.localPosition = Vector3.zero; SkcFile skc = SkcLoader.Instance.Load(id); BncFile bnc = BncLoader.Instance.Load(id); Skin.name = skc.Skin; rend = Skin.AddComponent <SkinnedMeshRenderer>(); rend.localBounds = skc.mesh.bounds; rend.materials = skc.Material(id, owner.Camp); rend.sharedMesh = skc.mesh; rend.sharedMesh.RecalculateBounds(); bo = new List <Transform>(); dummy = new List <Transform>(); List <Matrix4x4> bindPos = new List <Matrix4x4>(); bnc.GenerateBone(transform, ref bo, ref dummy, ref bindPos, ref rootBone); rend.bones = bo.ToArray(); rend.sharedMesh.bindposes = bindPos.ToArray(); rend.rootBone = rootBone; RootPos = rootBone.localPosition; RootQuat = rootBone.localRotation; AmbLoader.Ins.LoadCharacterAmb(id); LoadBoxDef(id); }
public void LoadCharactor(int id) { owner = GetComponent <Entity>(); CharacterIndex = id; Skin = new GameObject(); Skin.transform.SetParent(transform); Skin.transform.localRotation = Quaternion.identity; Skin.transform.localScale = Vector3.one; Skin.transform.localPosition = Vector3.zero; //load skin SkcFile skc = SkcLoader.Instance.Load(id); Skin.name = skc.Skin; rend = Skin.AddComponent <SkinnedMeshRenderer>(); BncFile bnc = BncLoader.Instance.Load(id); rend.localBounds = skc.mesh.bounds; rend.materials = skc.Material(id); rend.sharedMesh = skc.mesh; rend.sharedMesh.RecalculateBounds(); bone = new List <Transform>(); dummy = new List <Transform>(); List <Matrix4x4> bindPos = new List <Matrix4x4>(); if (owner.IsHero) { Skin.layer = LayerMask.NameToLayer("LocalPlayer"); } else { Skin.layer = LayerMask.NameToLayer("Monster"); } bnc.GenerateBone(transform, ref bone, ref dummy, ref bindPos, ref rootBone); rend.bones = bone.ToArray(); rend.sharedMesh.bindposes = bindPos.ToArray(); rend.rootBone = rootBone; rootPosition = rootBone.localPosition; rootQuat = rootBone.localRotation; AmbLoader.Ins.LoadCharacterAmb(id); AmbLoader.Ins.LoadCharacterAmb(); LoadBoxDef(id); }
public SkcFile Load(string file) { if (SkcFile.ContainsKey(file)) { return(SkcFile[file]); } SkcFile f = new SkcFile(); f.Load(file); if (f.error) { return(null); } SkcFile[file] = f; return(f); }
public void LoadCharactor(int id) { owner = GetComponent <MeteorUnit>(); posMng = owner.posMng; CharacterIdx = id; Skin = new GameObject(); Skin.transform.SetParent(transform); Skin.transform.localRotation = Quaternion.identity; Skin.transform.localScale = Vector3.one; Skin.transform.localPosition = Vector3.zero; SkcFile skc = SkcLoader.Instance.Load(id); BncFile bnc = BncLoader.Instance.Load(id); Skin.name = skc.Skin; rend = Skin.AddComponent <SkinnedMeshRenderer>(); rend.localBounds = skc.mesh.bounds; rend.materials = skc.Material(id, owner.Camp); rend.sharedMesh = skc.mesh; rend.sharedMesh.RecalculateBounds(); bo = new List <Transform>(); dummy = new List <Transform>(); List <Matrix4x4> bindPos = new List <Matrix4x4>(); if (owner.Attr.IsPlayer) { Skin.layer = LayerMask.NameToLayer("LocalPlayer"); } else { Skin.layer = LayerMask.NameToLayer("Monster"); } bnc.GenerateBone(transform, ref bo, ref dummy, ref bindPos, ref rootBone); WsGlobal.SetObjectLayer(gameObject, Skin.layer); rend.bones = bo.ToArray(); rend.sharedMesh.bindposes = bindPos.ToArray(); rend.rootBone = rootBone; RootPos = rootBone.localPosition; RootQuat = rootBone.localRotation; AmbLoader.Ins.LoadCharacterAmb(id); //GenerateBounds(skc.mesh, bo); LoadBoxDef(id); }
} //当前动作特效,用于飞镖/飞轮的挂点查询 public void LoadCharactor(int id, Transform Tri) { Target = Tri; Owner = Target.GetComponent <MeteorUnit>(); posMng = Owner.ActionMgr; Skin = new GameObject(); Skin.transform.SetParent(Target); Skin.transform.localRotation = Quaternion.identity; Skin.transform.localScale = Vector3.one; Skin.transform.localPosition = Vector3.zero; SkcFile skc = SkcLoader.Ins.Load(id); BncFile bnc = BncLoader.Ins.Load(id); Skin.name = skc.Skin; render = Skin.AddComponent <SkinnedMeshRenderer>(); render.localBounds = skc.mesh.bounds; render.materials = skc.Material(id, Owner.Camp); //这个方式无法分别子网格 //if (Owner.Attr.IsPlayer) { // for (int i = 0; i < render.materials.Length; i++) { // render.materials[i].shader = Shader.Find("MainPlayer"); // } //} render.sharedMesh = skc.mesh; render.sharedMesh.RecalculateBounds(); bo = new List <Transform>(); dummy = new List <Transform>(); List <Matrix4x4> bindPos = new List <Matrix4x4>(); Skin.layer = LayerManager.Player; bnc.GenerateBone(Target, ref bo, ref dummy, ref bindPos, ref rootBone); //Utility.SetObjectLayer(Target.gameObject, Skin.layer); render.bones = bo.ToArray(); render.sharedMesh.bindposes = bindPos.ToArray(); render.rootBone = rootBone; RootPos = rootBone.localPosition; RootQuat = rootBone.localRotation; AmbLoader.Ins.LoadCharacterAmb(id); //GenerateBounds(skc.mesh, bo); LoadBoxDef(id); }
//0-19内的材质是3个,20-27的是单个 public Material[] Material(int roleIdx, EUnitCamp camp) { if (roleIdx >= CombatData.Ins.MaxModel) { Material[] ret = new Material[materials.Length]; for (int i = 0; i < materials.Length; i++) { ret[i] = new Material(ShaderMng.Find("AlphaTexture")); ret[i].SetTexture("_MainTex", SkcFile.GetTexrtureFromPlugin(roleIdx, materials[i].Texture)); } return(ret); } else { if (GamePool.Instance != null && GamePool.Instance.SkcMng != null) { return(GamePool.Instance.SkcMng.GetPlayerMat(roleIdx, camp)); } return(null); } }
public ManifestDiff GetManifestDiff(Manifest other) { var ret = new ManifestDiff(); if (SkcVersion != other.SkcVersion) { ret.NewVersion = SkcVersion; ret.OldVersion = other.SkcVersion; } if (SkcFile != other.SkcFile) { ret.NewVersion = SkcFile.ToString(); ret.OldVersion = other.SkcFile == null ? "" : other.SkcFile.ToString(); } if (DefinedSymbols != other.DefinedSymbols) { ret.NewDefines = DefinedSymbols; ret.OldDefines = other.DefinedSymbols; } var sourceDiffs = new CollectionDiff <ManifestFile>(SourceFiles, other.SourceFiles); ret.AddedSourceFilenames = sourceDiffs.NewItems.ToList(); if (ret.AddedSourceFilenames.Count == 0) { ret.AddedSourceFilenames = null; } ret.RemovedSourceFilenames = sourceDiffs.RemovedItems.ToList(); if (ret.RemovedSourceFilenames.Count == 0) { ret.RemovedSourceFilenames = null; } var contentDiffs = new CollectionDiff <ManifestFile>(ExternalFiles, other.ExternalFiles); ret.AddedExternalFiles = contentDiffs.NewItems.ToList(); if (ret.AddedExternalFiles.Count == 0) { ret.AddedExternalFiles = null; } ret.RemovedExternalFiles = contentDiffs.RemovedItems.ToList(); if (ret.RemovedExternalFiles.Count == 0) { ret.RemovedExternalFiles = null; } //var contentDiffs = new CollectionDiff<ManifestFile>(ContentFiles, other.ContentFiles); //ret.AddedContentFiles = contentDiffs.NewItems.ToList(); //if (ret.AddedContentFiles.Count == 0) // ret.AddedContentFiles = null; //ret.RemovedContentFiles = contentDiffs.RemovedItems.ToList(); //if (ret.RemovedContentFiles.Count == 0) // ret.RemovedContentFiles = null; var referenceDiffs = new CollectionDiff <ManifestFile>(ReferencedFiles, other.ReferencedFiles); ret.AddedReferences = referenceDiffs.NewItems.ToList(); if (ret.AddedReferences.Count == 0) { ret.AddedReferences = null; } ret.RemovedReferences = referenceDiffs.RemovedItems.ToList(); if (ret.RemovedReferences.Count == 0) { ret.RemovedReferences = null; } //var outputFileDiff = new CollectionDiff<string>(this.OutputFiles, other.OutputFiles); //ret.NewOutputFiles = referenceDiffs.NewItems.ToList(); //if (ret.NewOutputFiles.Count == 0) // ret.NewOutputFiles = null; //ret.OldOutputFiles = referenceDiffs.RemovedItems.ToList(); //if (ret.OldOutputFiles.Count == 0) // ret.OldOutputFiles = null; return(ret); }
//0-19内的材质是3个,20-27的是单个 public Material[] Material(int roleIdx, EUnitCamp camp) { if (roleIdx >= Main.Ins.CombatData.MaxModel) { Material[] ret = new Material[materials.Length]; for (int i = 0; i < materials.Length; i++) { ret[i] = new Material(ShaderMng.Find("AlphaTexture")); ret[i].SetTexture("_MainTex", SkcFile.GetTexrtureFromPlugin(roleIdx, materials[i].Texture)); ret[i].SetColor("_Color", materials[i].Diffuse); } return(ret); } else { if (GamePool.Instance != null && GamePool.Instance.SkcMng != null) { return(GamePool.Instance.SkcMng.GetPlayerMat(roleIdx, camp)); } //使用预先设置好的材质球,降低DC和Batch Material[] ret = new Material[materials.Length]; string strTexture = ""; string strIndex = ""; //if (camp == EUnitCamp.EUC_KILLALL) // strIndex = "01"; //if (camp == EUnitCamp.EUC_FRIEND) strIndex = "01"; //非联机模式,只有1皮肤 //else //strIndex = "01"; //else if (camp == EUnitCamp.EUC_ENEMY) // strIndex = "03"; for (int i = 0; i < materials.Length; i++) { //if (materials[i].TwoSide) // ret[i] = new Material(Shader.Find("Shader Forge/DoubleSideTexture")); //else ret[i] = new Material(ShaderMng.Find("AlphaTexture")); //根据阵营决定贴图序号 if (roleIdx > 19) { ret[i].SetTexture("_MainTex", Resources.Load <Texture>(materials[i].Texture)); } else { string[] str = materials[i].Texture.Split('b'); if (str.Length == 2) { strTexture = str[0] + "b" + strIndex; } else { strTexture = materials[i].Texture; } ret[i].SetTexture("_MainTex", Resources.Load <Texture>(strTexture)); } ret[i].SetColor("_Color", materials[i].Diffuse); } return(ret); } }