public void StartReplace() { Spine.Slot baseWQ = skeleton.FindSlot(slot); Spine.Attachment originalAttachment = baseWQ.Attachment; Spine.Attachment newAttachment = originalAttachment.GetRemappedClone (Img, originalAttachment.GetMaterial()); baseWQ.Bone.ScaleY = -thisSlotBaseData.ScaleY; baseWQ.Bone.Rotation = thisSlotBaseData.Rotation - 45; baseWQ.Bone.SetLocalPosition(new Vector2(0, -thisSlotBaseData.Y * 2)); baseWQ.Attachment = newAttachment; }
//[SpineAttachment(dataField: "DataAsset")] //public string attachment; private void Start() { skeletonAnimation = GetComponent <SkeletonAnimation>(); spineAnimationState = skeletonAnimation.AnimationState; skeleton = skeletonAnimation.Skeleton; // thisSlotBaseData = skeleton.FindSlot(slot).Bone.Data; }
public PathConstraint (PathConstraintData data, Skeleton skeleton) { if (data == null) throw new ArgumentNullException("data", "data cannot be null."); if (skeleton == null) throw new ArgumentNullException("skeleton", "skeleton cannot be null."); this.data = data; bones = new ExposedList<Bone>(data.Bones.Count); foreach (BoneData boneData in data.bones) bones.Add(skeleton.FindBone(boneData.name)); target = skeleton.FindSlot(data.target.name); position = data.position; spacing = data.spacing; rotateMix = data.rotateMix; translateMix = data.translateMix; }
static int FindSlot(IntPtr L) { try { ToLua.CheckArgsCount(L, 2); Spine.Skeleton obj = (Spine.Skeleton)ToLua.CheckObject <Spine.Skeleton>(L, 1); string arg0 = ToLua.CheckString(L, 2); Spine.Slot o = obj.FindSlot(arg0); ToLua.PushObject(L, o); return(1); } catch (Exception e) { return(LuaDLL.toluaL_exception(L, e)); } }
public static PolygonCollider2D AddBoundingBoxGameObject (Skeleton skeleton, string skinName, string slotName, string attachmentName, Transform parent, bool isTrigger = true) { Skin skin = string.IsNullOrEmpty(skinName) ? skeleton.data.defaultSkin : skeleton.data.FindSkin(skinName); if (skin == null) { Debug.LogError("Skin " + skinName + " not found!"); return null; } var attachment = skin.GetAttachment(skeleton.FindSlotIndex(slotName), attachmentName); if (attachment == null) { Debug.LogFormat("Attachment in slot '{0}' named '{1}' not found in skin '{2}'.", slotName, attachmentName, skin.name); return null; } var box = attachment as BoundingBoxAttachment; if (box != null) { var slot = skeleton.FindSlot(slotName); return AddBoundingBoxGameObject(box.Name, box, slot, parent, isTrigger); } else { Debug.LogFormat("Attachment '{0}' was not a Bounding Box.", attachmentName); return null; } }
public PathConstraint(PathConstraintData data, Skeleton skeleton) { if (data == null) { throw new ArgumentNullException("data", "data cannot be null."); } if (skeleton == null) { throw new ArgumentNullException("skeleton", "skeleton cannot be null."); } this.data = data; bones = new ExposedList <Bone>(data.Bones.Count); foreach (BoneData boneData in data.bones) { bones.Add(skeleton.FindBone(boneData.name)); } target = skeleton.FindSlot(data.target.name); position = data.position; spacing = data.spacing; mixRotate = data.mixRotate; mixX = data.mixX; mixY = data.mixY; }
void Start () { game = GameObject.Find ("Gui").GetComponent<GameHandler> (); boxCollider = GetComponent<BoxCollider2D> (); character = GetComponent<MeshRenderer> (); controller = GetComponent<Controller2D> (); anim = GetComponent<SkeletonAnimation> (); skeleton = anim.skeleton; arm = skeleton.FindBone ("RShoulder"); backArm = skeleton.FindBone ("LShoulder"); weap = skeleton.FindBone ("Weapon"); skelRend = GetComponent<SkeletonRenderer> (); skeleton.FindSlot ("WeaponImage").Attachment = null; anim.state.ClearTrack(1); controller.CatchPlayer (this); crouchTap = new TapInfo (.6f, int.MaxValue); dashTap = new TapInfo (.6f, int.MaxValue); //Initiate the width of the HP bar, this may need to be placed in the Update portion if window scaling is changed. width = healthbar.GetComponent<RectTransform>().rect.width; startMaxXPos = healthbar.GetComponent<RectTransform>().offsetMax.x; UpdateGravity(); }
void HeroCharacterSet() { Debug.Log("Hero_Character_Set"); string w0 = "wuqi"; string w1 = "R_wuqi"; weaponBaseData = skeleton.FindSlot(w0).Bone.Data; weaponBaseData2 = skeleton.FindSlot(w1).Bone.Data; // Material M = GetComponent <MeshRenderer>().material; if (skeleton.FindSlot(w0).Attachment != null) { M.shader = skeleton.FindSlot(w0).Attachment.GetMaterial().shader; } if (CMC.notShowWeaponSlot) { skeleton.FindSlot(w0).A = 0; skeleton.FindSlot(w1).A = 0; } else { skeleton.FindSlot(w0).A = 1; skeleton.FindSlot(w1).A = 1; // EquipItem weapon = SDDataManager.Instance.GetEquipItemById(CMC.weaponId); if (weapon == null) { return; } List <Sprite> allSprites = Resources.LoadAll <Sprite>("Spine/WeaponVision/").ToList(); weaponSprite = allSprites.Find(x => x.name == weapon.ID); if (weaponSprite == null) { return; } Spine.Slot baseWQ = skeleton.FindSlot(w0); string an = baseWQ.Data.AttachmentName; Spine.Attachment originalAttachment = baseWQ.Attachment; Spine.Attachment newAttachment = originalAttachment.GetRemappedClone(weaponSprite, M); if (weapon.WeaponRace.WeaponClass == SDConstants.WeaponClass.Sharp) { Spine.Slot otherWQ = skeleton.FindSlot(w1); string newWSName = weaponSprite.name + "_2"; weaponSprite2 = allSprites.Find(x => x.name == newWSName); if (weaponSprite2 != null) { Spine.Attachment oa1 = otherWQ.Attachment; Spine.Attachment newoa1 = oa1.GetRemappedClone(weaponSprite2, M); otherWQ.Attachment = newoa1; } } else if (weapon.WeaponRace.WeaponClass == SDConstants.WeaponClass.Claymore) { baseWQ.Bone.ScaleY = -weaponBaseData.ScaleY; baseWQ.Bone.Rotation = weaponBaseData.Rotation - 45; baseWQ.Bone.SetLocalPosition(new Vector2(0, -weaponBaseData.Y * 2)); } baseWQ.Attachment = newAttachment; } }
protected override void LoadContent() { skeletonRenderer = new SkeletonMeshRenderer(GraphicsDevice); skeletonRenderer.PremultipliedAlpha = true; // String name = "spineboy"; // String name = "goblins-mesh"; String name = "raptor"; Atlas atlas = new Atlas(assetsFolder + name + ".atlas", new XnaTextureLoader(GraphicsDevice)); SkeletonJson json = new SkeletonJson(atlas); if (name == "spineboy") { json.Scale = 0.6f; } if (name == "raptor") { json.Scale = 0.5f; } skeleton = new Skeleton(json.ReadSkeletonData(assetsFolder + name + ".json")); if (name == "goblins-mesh") { skeleton.SetSkin("goblin"); } // Define mixing between animations. AnimationStateData stateData = new AnimationStateData(skeleton.Data); state = new AnimationState(stateData); if (name == "spineboy") { stateData.SetMix("run", "jump", 0.2f); stateData.SetMix("jump", "run", 0.4f); // Event handling for all animations. state.Start += Start; state.End += End; state.Complete += Complete; state.Event += Event; state.SetAnimation(0, "test", false); TrackEntry entry = state.AddAnimation(0, "jump", false, 0); entry.End += End; // Event handling for queued animations. state.AddAnimation(0, "run", true, 0); } else if (name == "raptor") { state.SetAnimation(0, "walk", true); state.SetAnimation(1, "empty", false); state.AddAnimation(1, "gungrab", false, 2); } else { state.SetAnimation(0, "walk", true); } skeleton.X = 400; skeleton.Y = 590; skeleton.UpdateWorldTransform(); headSlot = skeleton.FindSlot("head"); }
protected override void LoadContent() { // Two color tint effect, comment line 80 to disable var spineEffect = Content.Load <Effect>("spine-xna-example-content\\SpineEffect"); spineEffect.Parameters["World"].SetValue(Matrix.Identity); spineEffect.Parameters["View"].SetValue(Matrix.CreateLookAt(new Vector3(0.0f, 0.0f, 1.0f), Vector3.Zero, Vector3.Up)); skeletonRenderer = new SkeletonRenderer(GraphicsDevice); skeletonRenderer.PremultipliedAlpha = false; skeletonRenderer.Effect = spineEffect; skeletonDebugRenderer = new SkeletonDebugRenderer(GraphicsDevice); skeletonDebugRenderer.DisableAll(); skeletonDebugRenderer.DrawClipping = true; // String name = "spineboy-ess"; // String name = "goblins-pro"; // String name = "raptor-pro"; // String name = "tank-pro"; String name = "coin-pro"; String atlasName = name.Replace("-pro", "").Replace("-ess", ""); if (name == "goblins-pro") { atlasName = "goblins-mesh"; } bool binaryData = false; Atlas atlas = new Atlas(assetsFolder + atlasName + ".atlas", new XnaTextureLoader(GraphicsDevice)); float scale = 1; if (name == "spineboy-ess") { scale = 0.6f; } if (name == "raptor-pro") { scale = 0.5f; } if (name == "tank-pro") { scale = 0.3f; } if (name == "coin-pro") { scale = 1; } SkeletonData skeletonData; if (binaryData) { SkeletonBinary binary = new SkeletonBinary(atlas); binary.Scale = scale; skeletonData = binary.ReadSkeletonData(assetsFolder + name + ".skel"); } else { SkeletonJson json = new SkeletonJson(atlas); json.Scale = scale; skeletonData = json.ReadSkeletonData(assetsFolder + name + ".json"); } skeleton = new Skeleton(skeletonData); if (name == "goblins-pro") { skeleton.SetSkin("goblin"); } // Define mixing between animations. AnimationStateData stateData = new AnimationStateData(skeleton.Data); state = new AnimationState(stateData); if (name == "spineboy-ess") { skeleton.SetAttachment("head-bb", "head"); stateData.SetMix("run", "jump", 0.2f); stateData.SetMix("jump", "run", 0.4f); // Event handling for all animations. state.Start += Start; state.End += End; state.Complete += Complete; state.Event += Event; state.SetAnimation(0, "run", true); TrackEntry entry = state.AddAnimation(0, "jump", false, 0); entry.End += End; // Event handling for queued animations. state.AddAnimation(0, "run", true, 0); } else if (name == "raptor-pro") { state.SetAnimation(0, "walk", true); state.AddAnimation(1, "gun-grab", false, 2); } else if (name == "coin-pro") { state.SetAnimation(0, "animation", true); } else if (name == "tank-pro") { skeleton.X += 300; state.SetAnimation(0, "drive", true); } else { state.SetAnimation(0, "walk", true); } skeleton.X += 400; skeleton.Y += GraphicsDevice.Viewport.Height; skeleton.UpdateWorldTransform(); headSlot = skeleton.FindSlot("head"); }
protected override void LoadContent() { // Two color tint effect, comment line 76 to disable var spineEffect = Content.Load <Effect>("Content\\SpineEffect"); spineEffect.Parameters["World"].SetValue(Matrix.Identity); spineEffect.Parameters["View"].SetValue(Matrix.CreateLookAt(new Vector3(0.0f, 0.0f, 1.0f), Vector3.Zero, Vector3.Up)); skeletonRenderer = new SkeletonRenderer(GraphicsDevice); skeletonRenderer.PremultipliedAlpha = true; skeletonRenderer.Effect = spineEffect; // String name = "spineboy"; // String name = "goblins-mesh"; // String name = "raptor"; // String name = "tank"; // String name = "coin"; String name = "TwoColorTest"; bool binaryData = true; Atlas atlas = new Atlas(assetsFolder + name + ".atlas", new XnaTextureLoader(GraphicsDevice)); float scale = 1; if (name == "spineboy") { scale = 0.6f; } if (name == "raptor") { scale = 0.5f; } if (name == "tank") { scale = 0.3f; } if (name == "TwoColorTest") { scale = 0.5f; } SkeletonData skeletonData; if (binaryData) { SkeletonBinary binary = new SkeletonBinary(atlas); binary.Scale = scale; skeletonData = binary.ReadSkeletonData(assetsFolder + name + ".skel"); } else { SkeletonJson json = new SkeletonJson(atlas); json.Scale = scale; skeletonData = json.ReadSkeletonData(assetsFolder + name + ".json"); } skeleton = new Skeleton(skeletonData); if (name == "goblins-mesh") { skeleton.SetSkin("goblin"); } // Define mixing between animations. AnimationStateData stateData = new AnimationStateData(skeleton.Data); state = new AnimationState(stateData); if (name == "spineboy") { stateData.SetMix("run", "jump", 0.2f); stateData.SetMix("jump", "run", 0.4f); // Event handling for all animations. state.Start += Start; state.End += End; state.Complete += Complete; state.Event += Event; state.SetAnimation(0, "test", false); TrackEntry entry = state.AddAnimation(0, "jump", false, 0); entry.End += End; // Event handling for queued animations. state.AddAnimation(0, "run", true, 0); } else if (name == "raptor") { state.SetAnimation(0, "walk", true); state.AddAnimation(1, "gungrab", false, 2); } else if (name == "coin") { state.SetAnimation(0, "rotate", true); } else if (name == "tank") { state.SetAnimation(0, "drive", true); } else if (name == "TwoColorTest") { state.SetAnimation(0, "animation", true); } else { state.SetAnimation(0, "walk", true); } skeleton.X = 400 + (name == "tank" ? 300: 0); skeleton.Y = 580 + (name == "TwoColorTest" ? -300 : 0); skeleton.UpdateWorldTransform(); headSlot = skeleton.FindSlot("head"); }
protected override void LoadContent() { skeletonRenderer = new SkeletonRenderer(GraphicsDevice); String name = "spineboy"; // "goblins"; Atlas atlas = new Atlas("data/" + name + ".atlas", new XnaTextureLoader(GraphicsDevice)); SkeletonJson json = new SkeletonJson(atlas); skeleton = new Skeleton(json.ReadSkeletonData("data/" + name + ".json")); if (name == "goblins") skeleton.SetSkin("goblingirl"); skeleton.SetSlotsToSetupPose(); // Without this the skin attachments won't be attached. See SetSkin. // Define mixing between animations. AnimationStateData stateData = new AnimationStateData(skeleton.Data); if (name == "spineboy") { stateData.SetMix("walk", "jump", 0.2f); stateData.SetMix("jump", "walk", 0.4f); } state = new AnimationState(stateData); if (true) { // Event handling for all animations. state.Start += new EventHandler(Start); state.End += new EventHandler(End); state.Complete += new EventHandler<CompleteArgs>(Complete); state.Event += new EventHandler<EventTriggeredArgs>(Event); state.SetAnimation("drawOrder", true); } else { state.SetAnimation("walk", false); QueueEntry entry = state.AddAnimation("jump", false); entry.End += new EventHandler(End); // Event handling for queued animations. state.AddAnimation("walk", true); } skeleton.X = 320; skeleton.Y = 440; skeleton.UpdateWorldTransform(); headSlot = skeleton.FindSlot("head"); }
public virtual void Reset () { if (meshFilter != null) meshFilter.sharedMesh = null; meshRenderer = GetComponent<MeshRenderer>(); if (meshRenderer != null) meshRenderer.sharedMaterial = null; if (mesh1 != null) { if (Application.isPlaying) Destroy(mesh1); else DestroyImmediate(mesh1); } if (mesh2 != null) { if (Application.isPlaying) Destroy(mesh2); else DestroyImmediate(mesh2); } lastState = new LastState(); mesh1 = null; mesh2 = null; vertices = null; colors = null; uvs = null; sharedMaterials = new Material[0]; submeshMaterials.Clear(); submeshes.Clear(); skeleton = null; valid = false; if (!skeletonDataAsset) { if (logErrors) Debug.LogError("Missing SkeletonData asset.", this); return; } SkeletonData skeletonData = skeletonDataAsset.GetSkeletonData(false); if (skeletonData == null) return; valid = true; meshFilter = GetComponent<MeshFilter>(); meshRenderer = GetComponent<MeshRenderer>(); mesh1 = newMesh(); mesh2 = newMesh(); vertices = new Vector3[0]; skeleton = new Skeleton(skeletonData); if (initialSkinName != null && initialSkinName.Length > 0 && initialSkinName != "default") skeleton.SetSkin(initialSkinName); submeshSeparatorSlots.Clear(); for (int i = 0; i < submeshSeparators.Length; i++) { submeshSeparatorSlots.Add(skeleton.FindSlot(submeshSeparators[i])); } CollectSubmeshRenderers(); LateUpdate(); if (OnReset != null) OnReset(this); }
protected override void LoadContent () { skeletonRenderer = new SkeletonMeshRenderer(GraphicsDevice); skeletonRenderer.PremultipliedAlpha = true; // String name = "spineboy"; // String name = "goblins-mesh"; String name = "raptor"; bool binaryData = true; Atlas atlas = new Atlas(assetsFolder + name + ".atlas", new XnaTextureLoader(GraphicsDevice)); float scale = 1; if (name == "spineboy") scale = 0.6f; if (name == "raptor") scale = 0.5f; SkeletonData skeletonData; if (binaryData) { SkeletonBinary binary = new SkeletonBinary(atlas); binary.Scale = scale; skeletonData = binary.ReadSkeletonData(assetsFolder + name + ".skel"); } else { SkeletonJson json = new SkeletonJson(atlas); json.Scale = scale; skeletonData = json.ReadSkeletonData(assetsFolder + name + ".json"); } skeleton = new Skeleton(skeletonData); if (name == "goblins-mesh") skeleton.SetSkin("goblin"); // Define mixing between animations. AnimationStateData stateData = new AnimationStateData(skeleton.Data); state = new AnimationState(stateData); if (name == "spineboy") { stateData.SetMix("run", "jump", 0.2f); stateData.SetMix("jump", "run", 0.4f); // Event handling for all animations. state.Start += Start; state.End += End; state.Complete += Complete; state.Event += Event; state.SetAnimation(0, "test", false); TrackEntry entry = state.AddAnimation(0, "jump", false, 0); entry.End += End; // Event handling for queued animations. state.AddAnimation(0, "run", true, 0); } else if (name == "raptor") { state.SetAnimation(0, "walk", true); state.SetAnimation(1, "empty", false); state.AddAnimation(1, "gungrab", false, 2); } else { state.SetAnimation(0, "walk", true); } skeleton.X = 400; skeleton.Y = 590; skeleton.UpdateWorldTransform(); headSlot = skeleton.FindSlot("head"); }
public void LoadContent(ContentManager content, GraphicsDevice graphicsDevice) { blankTex = content.Load<Texture2D>("blank"); skeletonRenderer = new SkeletonRenderer(graphicsDevice); Atlas atlas = new Atlas(graphicsDevice, "robo/robo.atlas", content); SkeletonJson json = new SkeletonJson(atlas); skeleton = new Skeleton(json.readSkeletonData("robo", File.ReadAllText(Path.Combine(content.RootDirectory, "robo/robo.json")))); skeleton.SetSkin("default"); skeleton.SetSlotsToBindPose(); //skeleton.FindSlot("melee-item").Attachment = itemAttach; //skeleton.SetAttachment("melee-item", "crowbar"); fistSound = AudioController.effects["fist"].CreateInstance(); fistSound.IsLooped = true; fistSound.Volume = 0f; fistSound.Pitch = -1f; fistSound.Play(); Animations.Add("walk", skeleton.Data.FindAnimation("walk")); Animations.Add("punch-hold", skeleton.Data.FindAnimation("punch-hold")); Animations.Add("punch-release", skeleton.Data.FindAnimation("punch-release")); Animations.Add("knockback", skeleton.Data.FindAnimation("knockback")); Animations.Add("pickup", skeleton.Data.FindAnimation("pickup")); Animations.Add("knockout", skeleton.Data.FindAnimation("knockout")); skeleton.RootBone.X = Position.X; skeleton.RootBone.Y = Position.Y; skeleton.RootBone.ScaleX = Scale; skeleton.RootBone.ScaleY = Scale; skeleton.UpdateWorldTransform(); Health = 121f; //ItemManager.Instance.Spawn(this); //skeleton.SetAttachment("melee-item", null); skeleton.FindSlot("fist-item").A = 0f; }
protected override void LoadContent() { bool useNormalmapShader = false; Effect spineEffect; if (!useNormalmapShader) { // Two color tint effect. Note that you can also use the default BasicEffect instead. spineEffect = Content.Load <Effect>("spine-xna-example-content\\SpineEffect"); } else { spineEffect = Content.Load <Effect>("spine-xna-example-content\\SpineEffectNormalmap"); spineEffect.Parameters["Light0_Direction"].SetValue(new Vector3(-0.5265408f, 0.5735765f, -0.6275069f)); spineEffect.Parameters["Light0_Diffuse"].SetValue(new Vector3(1, 0.9607844f, 0.8078432f)); spineEffect.Parameters["Light0_Specular"].SetValue(new Vector3(1, 0.9607844f, 0.8078432f)); spineEffect.Parameters["Light0_SpecularExponent"].SetValue(2.0f); } spineEffect.Parameters["World"].SetValue(Matrix.Identity); spineEffect.Parameters["View"].SetValue(Matrix.CreateLookAt(new Vector3(0.0f, 0.0f, 1.0f), Vector3.Zero, Vector3.Up)); skeletonRenderer = new SkeletonRenderer(GraphicsDevice); skeletonRenderer.PremultipliedAlpha = false; skeletonRenderer.Effect = spineEffect; skeletonDebugRenderer = new SkeletonDebugRenderer(GraphicsDevice); skeletonDebugRenderer.DisableAll(); skeletonDebugRenderer.DrawClipping = true; // String name = "spineboy-pro"; String name = "raptor-pro"; // String name = "tank-pro"; //String name = "coin-pro"; if (useNormalmapShader) { name = "raptor-pro"; // we only have normalmaps for raptor } String atlasName = name.Replace("-pro", "").Replace("-ess", ""); bool binaryData = false; Atlas atlas; if (!useNormalmapShader) { atlas = new Atlas(assetsFolder + atlasName + ".atlas", new XnaTextureLoader(GraphicsDevice)); } else { atlas = new Atlas(assetsFolder + atlasName + ".atlas", new XnaTextureLoader(GraphicsDevice, loadMultipleTextureLayers: true, textureSuffixes: new string[] { "", "_normals" })); } float scale = 1; if (name == "spineboy-pro") { scale = 0.6f; } if (name == "raptor-pro") { scale = 0.5f; } if (name == "tank-pro") { scale = 0.3f; } if (name == "coin-pro") { scale = 1; } SkeletonData skeletonData; if (binaryData) { SkeletonBinary binary = new SkeletonBinary(atlas); binary.Scale = scale; skeletonData = binary.ReadSkeletonData(assetsFolder + name + ".skel"); } else { SkeletonJson json = new SkeletonJson(atlas); json.Scale = scale; skeletonData = json.ReadSkeletonData(assetsFolder + name + ".json"); } skeleton = new Skeleton(skeletonData); if (name == "goblins-pro") { skeleton.SetSkin("goblin"); } // Define mixing between animations. AnimationStateData stateData = new AnimationStateData(skeleton.Data); state = new AnimationState(stateData); if (name == "spineboy-pro") { skeleton.SetAttachment("head-bb", "head"); stateData.SetMix("run", "jump", 0.2f); stateData.SetMix("jump", "run", 0.4f); // Event handling for all animations. state.Start += Start; state.End += End; state.Complete += Complete; state.Event += Event; state.SetAnimation(0, "run", true); TrackEntry entry = state.AddAnimation(0, "jump", false, 0); entry.End += End; // Event handling for queued animations. state.AddAnimation(0, "run", true, 0); } else if (name == "raptor-pro") { state.SetAnimation(0, "walk", true); state.AddAnimation(1, "gun-grab", false, 2); } else if (name == "coin-pro") { state.SetAnimation(0, "animation", true); } else if (name == "tank-pro") { skeleton.X += 300; state.SetAnimation(0, "drive", true); } else { state.SetAnimation(0, "walk", true); } skeleton.X += 400; skeleton.Y += GraphicsDevice.Viewport.Height; skeleton.UpdateWorldTransform(); headSlot = skeleton.FindSlot("head"); }
public virtual void Reset() { if (meshFilter != null) meshFilter.sharedMesh = null; if (renderer != null) renderer.sharedMaterial = null; mesh1 = null; mesh2 = null; lastVertexCount = 0; vertices = null; colors = null; uvs = null; sharedMaterials = new Material[0]; submeshMaterials.Clear(); submeshes.Clear(); skeleton = null; valid = false; if (!skeletonDataAsset) { if (logErrors) Debug.LogError("Missing SkeletonData asset.", this); return; } SkeletonData skeletonData = skeletonDataAsset.GetSkeletonData(false); if (skeletonData == null) return; valid = true; meshFilter = GetComponent<MeshFilter>(); mesh1 = newMesh(); mesh2 = newMesh(); vertices = new Vector3[0]; skeleton = new Skeleton(skeletonData); if (initialSkinName != null && initialSkinName.Length > 0 && initialSkinName != "default") skeleton.SetSkin(initialSkinName); submeshSeparatorSlots.Clear(); for (int i = 0; i < submeshSeparators.Length; i++) { submeshSeparatorSlots.Add(skeleton.FindSlot(submeshSeparators[i])); } if (OnReset != null) OnReset(this); }
public void LoadContent(SkeletonRenderer sr, Texture2D bt, Atlas atlas, string json) { blankTex = bt; skeletonRenderer =sr; SkeletonJson skjson = new SkeletonJson(atlas); skeleton = new Skeleton(skjson.readSkeletonData("robo", json)); tint = new Color(0.5f + ((float)rand.NextDouble() * 0.5f), 0.5f + ((float)rand.NextDouble() * 0.5f), 0.5f + ((float)rand.NextDouble() * 0.5f)); skeleton.R = tint.ToVector3().X; skeleton.G = tint.ToVector3().Y; skeleton.B = tint.ToVector3().Z; foreach (Slot s in skeleton.Slots) { if (s.Data.Name != "melee-item" && s.Data.Name != "projectile-item" && s.Data.Name != "fist-item") { s.Data.R = skeleton.R; s.Data.G = skeleton.G; s.Data.B = skeleton.B; } } skeleton.SetSkin("default"); skeleton.SetSlotsToBindPose(); Animations.Add("walk", skeleton.Data.FindAnimation("walk")); Animations.Add("punch-hold", skeleton.Data.FindAnimation("punch-hold")); Animations.Add("punch-release", skeleton.Data.FindAnimation("punch-release")); Animations.Add("knockback", skeleton.Data.FindAnimation("knockback")); Animations.Add("pickup", skeleton.Data.FindAnimation("pickup")); Animations.Add("knockout", skeleton.Data.FindAnimation("knockout")); skeleton.RootBone.X = Position.X; skeleton.RootBone.Y = Position.Y; skeleton.RootBone.ScaleX = Scale; skeleton.RootBone.ScaleY = Scale; skeleton.UpdateWorldTransform(); skeleton.FindSlot("fist-item").A = 0f; fistSound = AudioController.effects["fist"].CreateInstance(); fistSound.IsLooped = true; fistSound.Volume = 0f; fistSound.Pitch = -1f; fistSound.Play(); }