public static bool Prefix(RagdollManager __instance, Vector3 pos, Quaternion rot, int classId, PlayerStats.HitInfo ragdollInfo, bool allowRecall, string ownerID, string ownerNick, int playerId) { if (Configs.ragdoll_cleanup < 0) { return(true); } Log.Debug($"[RagdollCleanupPatch] {Enum.Parse(typeof(RoleType), classId.ToString())}{pos} Time:{Time.time} Cleanuptimes:{Configs.ragdoll_cleanup}"); Role role = __instance.ccm.Classes.SafeGet(classId); if (role.model_ragdoll != null) { GameObject gameObject = UnityEngine.Object.Instantiate(role.model_ragdoll, pos + role.ragdoll_offset.position, Quaternion.Euler(rot.eulerAngles + role.ragdoll_offset.rotation)); NetworkServer.Spawn(gameObject); gameObject.GetComponent <Ragdoll>().Networkowner = new Ragdoll.Info(ownerID, ownerNick, ragdollInfo, role, playerId); gameObject.GetComponent <Ragdoll>().NetworkallowRecall = allowRecall; ragdolls.Add(gameObject, Time.time); } if (ragdollInfo.GetDamageType().isScp || ragdollInfo.GetDamageType() == DamageTypes.Pocket) { __instance.RegisterScpFrag(); } else if (ragdollInfo.GetDamageType() == DamageTypes.Grenade) { RoundSummary.kills_by_frag++; } return(false); }
/// <summary> /// setup projectile for fireing /// </summary> public virtual void setup() { OnHit = () => { if (hitInfo.hitObject) { RagdollManager ragMan = null; ragMan = hitInfo.hitObject.GetComponent <RagdollManager>(); if (!ragMan) { #if DEBUG_INFO Debug.LogError("Ball::OnHit cannot find RagdollManager component on " + hitInfo.hitObject.name + "."); #endif return; } if (!ragMan.acceptHit) { return; } Vector3 force = hitInfo.hitDirection * CurrentHitStrength; ragMan.startHitReaction(hitInfo.bodyPartIndices, force); } }; }
public void Update() { if (!base.isLocalPlayer) { return; } string text = string.Empty; RaycastHit raycastHit; if (Physics.Raycast(new Ray(this.cam.position, this.cam.forward), out raycastHit, 3f, this.inspectionMask)) { Ragdoll componentInParent = raycastHit.transform.GetComponentInParent <Ragdoll>(); if (componentInParent != null) { text = TranslationReader.Get("Death_Causes", 12); text = text.Replace("[user]", componentInParent.owner.steamClientName); text = text.Replace("[cause]", RagdollManager.GetCause(componentInParent.owner.deathCause, false)); text = text.Replace("[class]", string.Concat(new string[] { "<color=", this.GetColor(this.ccm.klasy[componentInParent.owner.charclass].classColor), ">", this.ccm.klasy[componentInParent.owner.charclass].fullName, "</color>" })); } } this.txt.text = text; }
public Turret(Vector2 farseerLoc, World w, RagdollManager r, Fixture f) { DebugMaterial gray = new DebugMaterial(MaterialType.Blank) { Color = Color.DarkGray }; body = new Body(w); pivot = FixtureFactory.AttachCircle(.9f, 1, body, gray); FixtureFactory.AttachRectangle(barrelLength, .5f, 1, new Vector2(barrelLength / 2, 0), body, gray); body.Position = farseerLoc; body.BodyType = BodyType.Dynamic; //b.CollidesWith = Category.None; if (f == null) { motor = JointFactory.CreateFixedRevoluteJoint(w, body, Vector2.Zero, farseerLoc); } else { motor = new RevoluteJoint(body, f.Body, Vector2.Zero, f.Body.GetLocalPoint(farseerLoc)); w.AddJoint(motor); } motor.MotorEnabled = true; motor.MaxMotorTorque = 5000; Init(w, r); }
private static bool Prefix(RagdollManager __instance, ref Vector3 pos, ref Quaternion rot, ref int classId, ref PlayerStats.HitInfo ragdollInfo, ref bool allowRecall, ref string ownerID, ref string ownerNick, ref int playerId) { var ev = new SpawningRagdollEventArgs( ragdollInfo.PlayerId == 0 ? null : API.Features.Player.Get(ragdollInfo.PlayerId), API.Features.Player.Get(__instance.gameObject), pos, rot, (RoleType)classId, ragdollInfo, allowRecall, ownerID, ownerNick, playerId); Player.OnSpawningRagdoll(ev); pos = ev.Position; rot = ev.Rotation; classId = (int)ev.RoleType; ragdollInfo = ev.HitInformations; allowRecall = ev.IsRecallAllowed; ownerID = ev.DissonanceId; ownerNick = ev.PlayerNickname; playerId = ev.PlayerId; return(ev.IsAllowed); }
private static bool Prefix(RagdollManager __instance, ref Vector3 pos, ref Quaternion rot, ref Vector3 velocity, ref int classId, ref PlayerStats.HitInfo ragdollInfo, ref bool allowRecall, ref string ownerID, ref string ownerNick, ref int playerId) { try { var ev = new SpawningRagdollEventArgs( ragdollInfo.PlayerId == 0 ? null : API.Features.Player.Get(ragdollInfo.PlayerId), API.Features.Player.Get(__instance.gameObject), pos, rot, velocity, (RoleType)classId, ragdollInfo, allowRecall, ownerID, ownerNick, playerId); Player.OnSpawningRagdoll(ev); pos = ev.Position; rot = ev.Rotation; velocity = ev.Velocity; classId = (int)ev.RoleType; ragdollInfo = ev.HitInformations; allowRecall = ev.IsRecallAllowed; ownerID = ev.DissonanceId; ownerNick = ev.PlayerNickname; playerId = ev.PlayerId; return(ev.IsAllowed); } catch (Exception e) { Exiled.API.Features.Log.Error($"Exiled.Events.Patches.Events.Player.SpawningRagdoll: {e}\n{e.StackTrace}"); return(true); } }
void Start() { if (GetComponent <PlayerController>()) { if (!GetComponent <PlayerController>().isActiveAndEnabled) { enemy = true; playerControlled = false; } else { playerControlled = true; } } playerController = GetComponent <PlayerController>(); capCol = GetComponent <CapsuleCollider>(); rigidbody = GetComponent <Rigidbody>(); anim = GetComponent <Animator>(); ragMan = GetComponent <RagdollManager>(); wepMan = GetComponent <WeaponManager>(); arMan = GetComponent <ArmorManager>(); gamMan = GetComponent <GameManager>(); if (playerControlled && playerController.isEnabled) { camLook = GameObject.FindGameObjectWithTag("CameraHolder").GetComponent <FreeCameraLook>(); } }
void Awake() { rb = GetComponent <Rigidbody2D>(); myRagdoll = GetComponentInParent <RagdollManager>(); footStartXRight = RightFoot.transform.localPosition.x; footStartXLeft = LeftFoot.transform.localPosition.x; rightLegLimits = RightLeg.limits; leftLegLimits = LeftLeg.limits; rightArmLimits = RightArm.limits; leftArmLimits = LeftArm.limits; //Player Specific Movement added by Kate if (transform.parent.CompareTag("PlayerOne")) { playerInt = 1; } else if (transform.parent.CompareTag("PlayerTwo")) { playerInt = 2; } if (playerInt < 1) { throw new SystemException("Player Missing Correct Tag: " + transform.name); } //Gun Control added by Kate gunLocation = gunLocationRight.transform; }
public KinectRagdollGame() { Main = this; graphics = new GraphicsDeviceManager(this); graphics.PreferredBackBufferWidth = WIDTH; graphics.PreferredBackBufferHeight = HEIGHT; Content.RootDirectory = "Content"; FarseerTextures.Init(); FarseerTextures.SetGame(this); kinectManager = new KinectManager(); farseerManager = new FarseerManager(true, this); ragdollManager = new RagdollManager(); actionCenter = new ActionCenter(this); inputManager = new InputManager(this); //spriteHelper = new SpriteHelper(); objectiveManager = new ObjectiveManager(this); powerupManager = new PowerupManager(ragdollManager, farseerManager); jukebox = new Jukebox(); hazardManager = new HazardManager(farseerManager, ragdollManager); particleEffectManager = new ParticleEffectManager(graphics, ref farseerProjection); toolbox = new Toolbox(this); this.IsMouseVisible = true; bkColor = Color.CornflowerBlue; }
bool _createRagdollManager() { RagdollManager ragMan = character.GetComponent <RagdollManager>(); if (!ragMan) { //ragMan = character.AddComponent<RagdollManager>(); ragMan = Undo.AddComponent <RagdollManager>(character); } if (useHumanoidSetupForRagdollBones) { Animator anim = character.GetComponent <Animator>(); if (!anim) { Debug.LogError("Cannot find 'animator' component." + " < " + this.ToString() + ">"); return(false); } ragdollCreator.pelvis = anim.GetBoneTransform(HumanBodyBones.Hips); ragdollCreator.leftHips = anim.GetBoneTransform(HumanBodyBones.LeftUpperLeg); ragdollCreator.leftKnee = anim.GetBoneTransform(HumanBodyBones.LeftLowerLeg); ragdollCreator.leftFoot = anim.GetBoneTransform(HumanBodyBones.LeftFoot); ragdollCreator.rightHips = anim.GetBoneTransform(HumanBodyBones.RightUpperLeg); ragdollCreator.rightKnee = anim.GetBoneTransform(HumanBodyBones.RightLowerLeg); ragdollCreator.rightFoot = anim.GetBoneTransform(HumanBodyBones.RightFoot); ragdollCreator.leftArm = anim.GetBoneTransform(HumanBodyBones.LeftUpperArm); ragdollCreator.leftElbow = anim.GetBoneTransform(HumanBodyBones.LeftLowerArm); ragdollCreator.rightArm = anim.GetBoneTransform(HumanBodyBones.RightUpperArm); ragdollCreator.rightElbow = anim.GetBoneTransform(HumanBodyBones.RightLowerArm); ragdollCreator.middleSpine = anim.GetBoneTransform(HumanBodyBones.Chest); ragdollCreator.head = anim.GetBoneTransform(HumanBodyBones.Head); ragdollCreator.totalMass = totalMass; ragdollCreator.CheckConsistency(); ragdollCreator.CalculateAxes(); ragdollCreator.Create(); ragMan.RagdollBones = new Transform[(int)BodyParts.BODY_PART_COUNT]; ragMan.RagdollBones[(int)BodyParts.Spine] = ragdollCreator.pelvis; ragMan.RagdollBones[(int)BodyParts.Chest] = ragdollCreator.middleSpine; ragMan.RagdollBones[(int)BodyParts.Head] = ragdollCreator.head; ragMan.RagdollBones[(int)BodyParts.LeftShoulder] = ragdollCreator.leftArm; ragMan.RagdollBones[(int)BodyParts.LeftElbow] = ragdollCreator.leftElbow; ragMan.RagdollBones[(int)BodyParts.RightShoulder] = ragdollCreator.rightArm; ragMan.RagdollBones[(int)BodyParts.RightElbow] = ragdollCreator.rightElbow; ragMan.RagdollBones[(int)BodyParts.LeftHip] = ragdollCreator.leftHips; ragMan.RagdollBones[(int)BodyParts.LeftKnee] = ragdollCreator.leftKnee; ragMan.RagdollBones[(int)BodyParts.RightHip] = ragdollCreator.rightHips; ragMan.RagdollBones[(int)BodyParts.RightKnee] = ragdollCreator.rightKnee; RagdollManager.AddBodyColliderScripts(ragMan); ragdollCreator = null; } return(true); }
// Use this for initialization void Start() { ragdoll = GetComponent <RagdollManager>(); ragdoll.setRagdollActive(false); col = GetComponent <Collider>(); Alive = true; }
public override void Init(World w, RagdollManager r) { world = w; target = r.ragdoll; body.setWorld(w); IsOperational = true; state = State.Scanning; }
internal Pickup(Body b, RagdollManager ragdollManager, FarseerManager farseerManager) : this(ragdollManager, farseerManager) { this.Body = b; foreach (Fixture f in b.FixtureList) { f.BeforeCollision += new BeforeCollisionEventHandler(f_BeforeCollision); } ApplyTexture(); }
protected override IEnumerator OnDeathFeedBack() { foreach (Component componet in componentstoRemoveOnDeath) { Destroy(componet); } RagdollManager ragdollManager = GetComponent <RagdollManager>(); ragdollManager.EnableRagdoll(); ragdollManager.ApplyRagdollForce(lastCollisionPoint, lastCollisionImpactforce); yield return(StartCoroutine(OnHitDrops(minOnDeathDrop, maxOnDeathDrop))); uiCanvas.gameObject.SetActive(false); playerUi.StopTrackingStatus(); this.enabled = false; }
public static bool Prefix(RagdollManager __instance, ref Vector3 pos, ref Quaternion rot, ref int classId, ref PlayerStats.HitInfo ragdollInfo, ref bool allowRecall, ref string ownerID, ref string ownerNick, ref int playerId) { try { bool allow = true; Events.InvokeSpawnRagdoll(__instance.gameObject, ref pos, ref rot, ref classId, ref ragdollInfo, ref allowRecall, ref ownerID, ref ownerNick, ref playerId, ref allow); return(allow); } catch (Exception exception) { Log.Error($"SpawnRagdollEvent error: {exception}"); return(true); } }
private static bool Prefix(RagdollManager __instance, ref Vector3 pos, ref Quaternion rot, ref Vector3 velocity, ref int classId, ref PlayerStats.HitInfo ragdollInfo, ref bool allowRecall, ref string ownerID, ref string ownerNick, ref int playerId) { try { var ev = new SpawningRagdollEventArgs( ragdollInfo.PlayerId == 0 ? null : API.Features.Player.Get(ragdollInfo.PlayerId), API.Features.Player.Get(playerId), pos, rot, velocity, (RoleType)classId, ragdollInfo, allowRecall, ownerID, ownerNick, playerId); Player.OnSpawningRagdoll(ev); pos = ev.Position; rot = ev.Rotation; velocity = ev.Velocity; classId = (int)ev.RoleType; ragdollInfo = ev.HitInformations; allowRecall = ev.IsRecallAllowed; ownerID = ev.DissonanceId; ownerNick = ev.PlayerNickname; playerId = ev.PlayerId; if (!ev.IsAllowed) { return(false); } Role role = __instance.hub.characterClassManager.Classes.SafeGet(classId); if (role.model_ragdoll == null) { return(false); } GameObject gameObject = UnityEngine.Object.Instantiate(role.model_ragdoll, pos + role.ragdoll_offset.position, Quaternion.Euler(rot.eulerAngles + role.ragdoll_offset.rotation)); Ragdoll component = gameObject.GetComponent <Ragdoll>(); component.Networkowner = new Ragdoll.Info(ownerID, ownerNick, ragdollInfo, role, playerId); component.NetworkallowRecall = allowRecall; component.NetworkPlayerVelo = velocity; Exiled.API.Features.Ragdoll ragdoll = new Exiled.API.Features.Ragdoll(component); Mirror.NetworkServer.Spawn(ragdoll.GameObject); Exiled.API.Features.Map.RagdollsValue.Add(ragdoll); return(false); } catch (Exception e) { Exiled.API.Features.Log.Error($"Exiled.Events.Patches.Events.Player.SpawningRagdoll: {e}\n{e.StackTrace}"); return(true); } }
public WallPopper(Vector2 farseerLoc, World w, RagdollManager r) { DebugMaterial gray = new DebugMaterial(MaterialType.Blank) { Color = Color.DarkGray }; body = new Body(w); body.Rotation = -(float)Math.PI / 2; Vertices popperShape = new Vertices(new Vector2[] { new Vector2(-1.2f, .8f), new Vector2(-1.2f, -.8f), new Vector2(1.2f, -.4f), new Vector2(1.2f, .4f) }); FixtureFactory.AttachPolygon(popperShape, 1, body, gray); body.Position = farseerLoc; body.BodyType = BodyType.Dynamic; body.IsBullet = true; //b.CollidesWith = Category.None; Init(w, r); }
private static bool Prefix(RagdollManager __instance, Vector3 pos, Quaternion rot, Vector3 velocity, int classId, global::PlayerStats.HitInfo ragdollInfo, bool allowRecall, string ownerID, string ownerNick, int playerId) { Role role = __instance.hub.characterClassManager.Classes.SafeGet(classId); if (role.model_ragdoll == null) { return(false); } var gameObject = Object.Instantiate(role.model_ragdoll, pos + role.ragdoll_offset.position, Quaternion.Euler(rot.eulerAngles + role.ragdoll_offset.rotation)); NetworkServer.Spawn(gameObject); Ragdoll component = gameObject.GetComponent <Ragdoll>(); component.Networkowner = new Ragdoll.Info(ownerID, ownerNick, ragdollInfo, role, playerId); component.NetworkallowRecall = allowRecall; component.NetworkPlayerVelo = velocity; var synapseragdoll = new Synapse.Api.Ragdoll(component); Map.Get.Ragdolls.Add(synapseragdoll); return(false); }
public void Start() { game = GameManager.instance; navigation = GetComponent<EnemyNavigation>(); enemyManager = EnemyManager.instance; ragdolls = RagdollManager.instance; GameObject player = GameObject.Find("playerFocus"); GameObject treasureObj = game.treasure.gameObject; GameObject focusPoint = treasureObj.transform.FindChild("treasureFocus").gameObject; treasureTransform = focusPoint.transform; playerTransform = player.transform; enemyTransform = this.transform; // if treasure is on ground and enemy can loot, set first target as treasure if (game.treasure.OnGround() && canLoot){ target = focusTarget.TRESAURE; navigation.target = treasureTransform; } else { target = focusTarget.PLAYER; navigation.target = playerTransform; } }
public void RegisterManager(RagdollManager rm) { _rm = rm; }
public Powerup(Body b, RagdollManager ragdollManager, FarseerManager farseerManager) : base(b, ragdollManager, farseerManager) { }
public RocketTurret(Vector2 farseerLoc, World w, RagdollManager r, Fixture f) : base(farseerLoc, w, r, f) { }
protected Pickup(RagdollManager r, FarseerManager f) { this.ragdollManager = r; this.farseerManager = f; }
public RocketTurret(Vector2 farseerLoc, World w, RagdollManager r) : base(farseerLoc, w, r) { }
public Powerup(RagdollManager r, FarseerManager f) : base(r, f) { }
private void initParams(GameObject targetObj) { ragdollManager = targetObj.GetComponent <RagdollManager>(); if (useDismember) { dismember = targetObj.GetComponent <Dismemberment>(); if (dismember == null) { return; } dismemberNum = dismember.BoomParamsNum; limbTransRoot = dismember.LimbRoot; var boomParam = dismember.boomParam; //init nums dismemberTarget = new GameObject[dismemberParamNum]; bodyPart = new Dismemberment.BodyPartHint[dismemberParamNum]; dismemberColliders = new Collider[dismemberParamNum]; dismemberRigidbodys = new Rigidbody[dismemberParamNum]; particleNum = new int[dismemberParamNum]; particleNames = new string[particleParamNum]; particleRoot = new Transform[particleParamNum]; initPos = new Vector3[particleParamNum]; initEurler = new Vector3[particleParamNum]; initScale = new Vector3[particleParamNum]; //forceParam forceNum = new int[particleParamNum]; drag = new float[particleParamNum]; angleDrag = new float[particleParamNum]; force = new Vector3[particleParamNum]; torque = new Vector3[particleParamNum]; for (int i = 0; i < particleParamNum; i++) { initScale[i] = Vector3.one; } //ignoreRagdollNum = new int[dismemberParamNum]; //ignoreRagdollTrans = new Transform[particleParamNum]; for (int i = 0; i < dismemberNum; i++) { var temp = boomParam[i]; dismemberTarget[i] = temp.targetObj; dismemberColliders[i] = temp.collider; dismemberRigidbodys[i] = temp.rigidbody; bodyPart[i] = temp.bodyPart; //particle particleNum[i] = temp.ParticleNum; for (int j = 0; j < particleNum[i]; j++) { var particleParm = temp.particles[j]; particleNames[dismemberParamNum * i + j] = particleParm.ParticleName; particleRoot[dismemberParamNum * i + j] = particleParm.particleRoot; initPos[dismemberParamNum * i + j] = particleParm.initPos; initScale[dismemberParamNum * i + j] = particleParm.initScale; initEurler[dismemberParamNum * i + j] = particleParm.initEurler; } //force forceNum[i] = temp.ForceNum; for (int j = 0; j < forceNum[i]; j++) { var forceParam = temp.forceParams[j]; drag[dismemberParamNum * i + j] = forceParam.drag; angleDrag[dismemberParamNum * i + j] = forceParam.angleDrag; force[dismemberParamNum * i + j] = forceParam.force; torque[dismemberParamNum * i + j] = forceParam.torque; } ////ignore ragdoll //ignoreRagdollNum[i] = temp.IgnoreRagdollEffectNum; //for (int k = 0; k < ignoreRagdollNum[i]; k++) //{ // ignoreRagdollTrans[dismemberParamNum * i + k] = temp.ignoreRagdollTrans[k]; //} } } }
void Awake() { RagdollManager.instance = this; }
// unity OnInspectorGUI method public override void OnInspectorGUI() { RagdollManager ragMan = (RagdollManager)target; DrawDefaultInspector(); if (ragMan.hitInterval == RagdollManager.HitIntervals.Timed) { float hitInterval = (float)EditorGUILayout.FloatField("Hit Interval", ragMan.hitTimeInterval); ragMan.hitTimeInterval = hitInterval; } bool enableGetUp = (bool)EditorGUILayout.Toggle("Enable Get Up Animation", ragMan.enableGetUpAnimation); ragMan.enableGetUpAnimation = enableGetUp; string text = (string)EditorGUILayout.TextField("Name Of Get Up From Back State", ragMan.nameOfGetUpFromBackState); ragMan.nameOfGetUpFromBackState = text; text = (string)EditorGUILayout.TextField("Name Of Get Up From Front State", ragMan.nameOfGetUpFromFrontState); ragMan.nameOfGetUpFromFrontState = text; bool ragdollWizard = GUILayout.Button("Ragdoll Wizard"); if (ragdollWizard) { RagdollCreatorWizard builderWizard = RagdollCreatorWizard.DisplayWizard(); RagdollCreator builder = builderWizard.ragdollCreator; builder.OnWizardCreateCallback = () => { ragMan.RagdollBones = new Transform[(int)BodyParts.BODY_PART_COUNT]; ragMan.RagdollBones[(int)BodyParts.Spine] = builder.pelvis; ragMan.RagdollBones[(int)BodyParts.Chest] = builder.middleSpine; ragMan.RagdollBones[(int)BodyParts.Head] = builder.head; ragMan.RagdollBones[(int)BodyParts.LeftShoulder] = builder.leftArm; ragMan.RagdollBones[(int)BodyParts.LeftElbow] = builder.leftElbow; ragMan.RagdollBones[(int)BodyParts.RightShoulder] = builder.rightArm; ragMan.RagdollBones[(int)BodyParts.RightElbow] = builder.rightElbow; ragMan.RagdollBones[(int)BodyParts.LeftHip] = builder.leftHips; ragMan.RagdollBones[(int)BodyParts.LeftKnee] = builder.leftKnee; ragMan.RagdollBones[(int)BodyParts.RightHip] = builder.rightHips; ragMan.RagdollBones[(int)BodyParts.RightKnee] = builder.rightKnee; EditorUtility.SetDirty(ragMan); serializedObject.ApplyModifiedProperties(); RagdollManager.AddBodyColliderScripts(ragMan); builder.OnWizardCreateCallback = null; }; } bool removeRagdoll = GUILayout.Button("Remove Ragoll"); if (removeRagdoll) { if (ragMan.RagdollBones.Length == (int)BodyParts.BODY_PART_COUNT) { for (int i = 0; i < (int)BodyParts.BODY_PART_COUNT; i++) { Transform t = ragMan.RagdollBones[i]; if (!t) { continue; } CharacterJoint[] t_joints = t.GetComponents <CharacterJoint>(); Collider[] t_cols = t.GetComponents <Collider>(); Rigidbody[] t_rbs = t.GetComponents <Rigidbody>(); BodyColliderScript[] t_bcs = t.GetComponents <BodyColliderScript>(); foreach (CharacterJoint cj in t_joints) { DestroyImmediate(cj); } foreach (Collider c in t_cols) { DestroyImmediate(c); } foreach (Rigidbody rb in t_rbs) { DestroyImmediate(rb); } foreach (BodyColliderScript b in t_bcs) { DestroyImmediate(b); } ragMan.RagdollBones[i] = null; } ragMan.RagdollBones = null; EditorUtility.SetDirty(ragMan); serializedObject.ApplyModifiedProperties(); } } bool addColSc = GUILayout.Button("Add Collider Scripts"); if (addColSc) { RagdollManager.AddBodyColliderScripts(ragMan); } if (GUI.changed) { EditorUtility.SetDirty(ragMan); serializedObject.ApplyModifiedProperties(); } }
void SetRagdollManager() { RagdollManager = GetComponent <RagdollManager>(); }
public Turret(Vector2 farseerLoc, World w, RagdollManager r) : this(farseerLoc, w, r, null) { }
public LaserTurret(Vector2 farseerLoc, World w, RagdollManager r, Fixture f) : base(farseerLoc, w, r, f) { reloadTime = 50; }
void OnGUI() { if (normalStyle == null) { normalStyle = new GUIStyle(); normalStyle.normal.textColor = Color.red; } if (particleStyle == null) { particleStyle = new GUIStyle(); particleStyle.normal.textColor = Color.green; } if (ragdollStyle == null) { ragdollStyle = new GUIStyle(); ragdollStyle.normal.textColor = Color.white; } targetObj = (GameObject)EditorGUILayout.ObjectField("目标角色", targetObj, typeof(GameObject), true); if (targetObj != null) { ////init if (orignObj == null) { initParams(targetObj); orignObj = targetObj; return; } if (targetObj != orignObj) { EditorGUILayout.BeginHorizontal(); if (GUILayoutEx.Button("更换模型", Color.red)) { initParams(targetObj); orignObj = targetObj; } if (GUILayoutEx.Button("恢复模型", Color.green)) { targetObj = orignObj; } EditorGUILayout.EndHorizontal(); return; } useDismember = EditorGUILayout.Toggle("是否使用Dismember", useDismember); if (useDismember) { //////init components if (dismember == null) { if (targetObj.GetComponent <Dismemberment>() == null) { dismember = targetObj.AddComponent <Dismemberment>(); CreateWithDefaultParam(); } else { dismember = targetObj.GetComponent <Dismemberment>(); } initParams(targetObj); } } if (ragdollManager == null) { //todo:动物布娃娃不初始化,只进行操作 if (targetObj.GetComponent <RagdollManagerGen>() != null) { ragdollManager = targetObj.GetComponent <RagdollManagerGen>(); } else { if (targetObj.GetComponent <RagdollManagerHum>() == null) { ragdollManager = targetObj.AddComponent <RagdollManagerHum>(); ragdollManager.onCreateCompeleted = CreateWithDefaultParam; ((RagdollManagerHum)ragdollManager).DefaultInitialize(); } else { ragdollManager = targetObj.GetComponent <RagdollManagerHum>(); } } initParams(targetObj); } //Copy from copyTarget copyTarget = (GameObject)EditorGUILayout.ObjectField("拷贝角色", copyTarget, typeof(GameObject), true); if (copyTarget != null && copyTarget.GetComponent <Dismemberment>() != null && copyTarget.GetComponent <RagdollManagerHum>() != null && isCopying == false) { if (GUILayoutEx.Button("拷贝参数", Color.yellow)) { isCopying = true; } } if (isCopying == true) { EditorGUILayout.BeginHorizontal(); if (GUILayoutEx.Button("确认拷贝", Color.red)) { CopyParamFromTarget(targetObj, copyTarget); initParams(targetObj); copyParam = true; isCopying = false; } if (GUILayoutEx.Button("恢复", Color.green)) { isCopying = false; } EditorGUILayout.EndHorizontal(); return; } scrollPos = EditorGUILayout.BeginScrollView(scrollPos); if (useDismember) { //////Dismember GUILayout.Label("肢解设置", EditorStyles.boldLabel); limbTransRoot = (Transform)EditorGUILayout.ObjectField("肢解根节点:", limbTransRoot, typeof(Transform), true); dismember.LimbRoot = limbTransRoot; dismemberNum = EditorGUILayout.IntField("肢解方案个数:", dismemberNum); if (dismemberNum != dismember.BoomParamsNum && !copyParam) { EditorGUILayout.BeginHorizontal(); if (GUILayoutEx.Button("确定更改方案数", Color.red)) { dismember.BoomParamsNum = dismemberNum; } if (GUILayoutEx.Button("恢复方案数", Color.green)) { dismemberNum = dismember.BoomParamsNum; } EditorGUILayout.EndHorizontal(); } //Scroll Dismember else { copyParam = false; if (dismemberNum > 0) { var boomParam = dismember.boomParam; for (int i = 0; i < dismemberNum; i++) { string normalText = string.Format("-------------------------方案{0}-------------------------", i + 1); EditorGUILayout.LabelField(normalText, normalStyle); var temp = boomParam[i]; dismemberTarget[i] = (GameObject)EditorGUILayout.ObjectField("被肢解目标:", dismemberTarget[i], typeof(GameObject), true); temp.targetObj = dismemberTarget[i]; dismemberColliders[i] = (Collider)EditorGUILayout.ObjectField("肢解碰撞体:", dismemberColliders[i], typeof(Collider), true); temp.collider = dismemberColliders[i]; dismemberRigidbodys[i] = (Rigidbody)EditorGUILayout.ObjectField("被肢解目标:", dismemberRigidbodys[i], typeof(Rigidbody), true); temp.rigidbody = dismemberRigidbodys[i]; bodyPart[i] = (Dismemberment.BodyPartHint)EditorGUILayout.EnumPopup("肢解部位:", bodyPart[i]); temp.bodyPart = (Dismemberment.BodyPartHint)bodyPart[i]; ////ignore Ragdoll Effect //ignoreRagdollNum[i] = EditorGUILayout.IntField("忽略布娃娃效果个数:", ignoreRagdollNum[i]); //if (ignoreRagdollNum[i] != temp.IgnoreRagdollEffectNum) //{ // EditorGUILayout.BeginHorizontal(); // if (GUILayoutEx.Button("确定更改", Color.red)) temp.IgnoreRagdollEffectNum = ignoreRagdollNum[i]; // if (GUILayoutEx.Button("恢复", Color.green)) ignoreRagdollNum[i] = temp.IgnoreRagdollEffectNum; // EditorGUILayout.EndHorizontal(); //} //else //{ // copyParam = false; // if (ignoreRagdollNum[i] > 0) // { // for (int j = 0; j < ignoreRagdollNum[i]; j++) // { // string particleText = string.Format("-------------------------忽略{0}-------------------------", j + 1); // var ignoreRagdollParam = temp.ignoreRagdollTrans[j]; // ignoreRagdollTrans[dismemberParamNum * i + j] = (Transform)EditorGUILayout.ObjectField("忽略布娃娃效果:", ignoreRagdollTrans[dismemberParamNum * i + j], typeof(Transform), true); // ignoreRagdollParam = ignoreRagdollTrans[dismemberParamNum * i + j]; // } // } //} //particle particleNum[i] = EditorGUILayout.IntField("特效个数:", particleNum[i]); if (particleNum[i] != temp.ParticleNum && !copyParam) { EditorGUILayout.BeginHorizontal(); if (GUILayoutEx.Button("确定更改特效数", Color.red)) { temp.ParticleNum = particleNum[i]; } if (GUILayoutEx.Button("恢复特效数", Color.green)) { particleNum[i] = temp.ParticleNum; } EditorGUILayout.EndHorizontal(); } else { copyParam = false; if (particleNum[i] > 0) { for (int j = 0; j < particleNum[i]; j++) { string particleText = string.Format("-------------------------特效{0}-------------------------", j + 1); EditorGUILayout.LabelField(particleText, particleStyle); var particleParm = temp.particles[j]; particleNames[dismemberParamNum * i + j] = EditorGUILayout.TextField("特效名称", particleNames[dismemberParamNum * i + j]); particleParm.ParticleName = particleNames[dismemberParamNum * i + j]; particleRoot[dismemberParamNum * i + j] = (Transform)EditorGUILayout.ObjectField("特效起始位置父节点:", particleRoot[dismemberParamNum * i + j], typeof(Transform), true); particleParm.particleRoot = particleRoot[dismemberParamNum * i + j]; initPos[dismemberParamNum * i + j] = EditorGUILayout.Vector3Field("特效初始位置:", initPos[dismemberParamNum * i + j]); particleParm.initPos = initPos[dismemberParamNum * i + j]; initEurler[dismemberParamNum * i + j] = EditorGUILayout.Vector3Field("特效初始旋转位置:", initEurler[dismemberParamNum * i + j]); particleParm.initEurler = initEurler[dismemberParamNum * i + j]; initScale[dismemberParamNum * i + j] = EditorGUILayout.Vector3Field("特效初始缩放:", initScale[dismemberParamNum * i + j]); particleParm.initScale = initScale[dismemberParamNum * i + j]; } } } //forceParam forceNum[i] = EditorGUILayout.IntField("力参数个数:", forceNum[i]); if (forceNum[i] != temp.ForceNum && !copyParam) { EditorGUILayout.BeginHorizontal(); if (GUILayoutEx.Button("确定更改特效数", Color.red)) { temp.ForceNum = forceNum[i]; } if (GUILayoutEx.Button("恢复特效数", Color.green)) { forceNum[i] = temp.ForceNum; } EditorGUILayout.EndHorizontal(); } else { if (forceNum[i] > 0) { for (int j = 0; j < forceNum[i]; j++) { string forceParamText = string.Format("-------------------------力参数{0}-------------------------", j + 1); EditorGUILayout.LabelField(forceParamText, particleStyle); var forceParam = temp.forceParams[j]; drag[dismemberParamNum * i + j] = EditorGUILayout.FloatField("摩擦力:", drag[dismemberParamNum * i + j]); forceParam.drag = drag[dismemberParamNum * i + j]; angleDrag[dismemberParamNum * i + j] = EditorGUILayout.FloatField("角动量摩擦力:", angleDrag[dismemberParamNum * i + j]); forceParam.angleDrag = angleDrag[dismemberParamNum * i + j]; force[dismemberParamNum * i + j] = EditorGUILayout.Vector3Field("速度:", force[dismemberParamNum * i + j]); forceParam.force = force[dismemberParamNum * i + j]; torque[dismemberParamNum * i + j] = EditorGUILayout.Vector3Field("角速度:", torque[dismemberParamNum * i + j]); forceParam.torque = torque[dismemberParamNum * i + j]; } } } EditorGUILayout.BeginHorizontal(); forceMethod = EditorGUILayout.IntField("肢解力方案选择:1~10:", forceMethod); if (GUILayoutEx.Button("测试肢解", Color.yellow)) { dismember.TestDismember(i * 10 + forceMethod - 1); } //if (GUILayoutEx.Button("恢复", Color.green)) dismember.ReCoverOne(i * 10 + forceMethod - 1); EditorGUILayout.EndHorizontal(); } } } } //////Ragdoll string ragdollText = string.Format("-------------------------布娃娃系统-------------------------"); EditorGUILayout.LabelField(ragdollText, ragdollStyle); ragdollId = EditorGUILayout.IntField("布娃娃受力点:", ragdollId); ragdollForce = EditorGUILayout.Vector3Field("布娃娃受力方向:", ragdollForce); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("测试布娃娃")) { ragdollManager.DisableCustomRagdoll(); var anim = targetObj.GetComponent <Animation>(); if (anim != null) { anim.enabled = false; } var characterControl = targetObj.GetComponent <CharacterController>(); if (characterControl != null) { characterControl.enabled = false; } ragdollManager.CustomRagdoll(ragdollId, ragdollForce); } if (GUILayout.Button("恢复布娃娃")) { ragdollManager.DisableCustomRagdoll(); var anim = targetObj.GetComponent <Animation>(); if (anim != null) { anim.enabled = true; anim.Play("idle"); } var characterControl = targetObj.GetComponent <CharacterController>(); if (characterControl != null) { characterControl.enabled = true; } } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); //综合方案 method = EditorGUILayout.IntField("方案选择 : 11~90:", method); if (GUILayout.Button("走你")) { ragdollManager.DisableCustomRagdoll(); var anim = targetObj.GetComponent <Animation>(); if (anim != null) { anim.enabled = false; } var characterControl = targetObj.GetComponent <CharacterController>(); if (characterControl != null) { characterControl.enabled = false; } dismember.TestDismember(Mathf.Clamp(method - 10 - 1, 0, 79)); ragdollManager.CustomRagdoll(ragdollId, ragdollForce); } if (GUILayout.Button("恢复")) { ragdollManager.DisableCustomRagdoll(); var anim = targetObj.GetComponent <Animation>(); if (anim != null) { anim.enabled = true; anim.Play("idle"); } var characterControl = targetObj.GetComponent <CharacterController>(); if (characterControl != null) { characterControl.enabled = true; } } EditorGUILayout.EndHorizontal(); EditorGUILayout.EndScrollView(); } }
void Start() { game = GameManager.instance; ragdolls = RagdollManager.instance; tr = transform; landingPoint = GameObject.Find("PointInGround").transform.position; playerTransform = GameObject.Find("playerFocus").transform; cameraTransform = GameObject.Find("Main Camera").transform; grabTransform = GameObject.Find("DragonGrab").transform; headTransform = GameObject.Find("head").transform; }