private void SetManagerDirty(IKManager2D manager) { if (manager && manager.isActiveAndEnabled) { m_DirtyManagers.Add(manager); } }
public void Setup() { go = new GameObject(); var childGO = new GameObject(); childGO.transform.parent = go.transform; var targetGO = new GameObject(); targetGO.transform.parent = childGO.transform; go.transform.position = Vector3.zero; childGO.transform.position = new Vector3(1.0f, 0.0f, 0.0f); targetGO.transform.position = new Vector3(3.0f, 0.0f, 0.0f); ikGO = new GameObject(); manager = ikGO.AddComponent <IKManager2D>(); var lsGO = new GameObject(); solver = lsGO.AddComponent <LimbSolver2D>(); lsGO.transform.parent = ikGO.transform; effectorGO = new GameObject(); effectorGO.transform.parent = solver.transform; chain = solver.GetChain(0); chain.target = targetGO.transform; chain.effector = effectorGO.transform; solver.Initialize(); manager.AddSolver(solver); }
private void StoreSolverPositionOverrides(Solver2D solver) { Debug.Assert(solver.allChainsHaveTargets == false); m_ChainPositionOverrides.Clear(); IKManager2D manager = IKEditorManager.instance.FindManager(solver); foreach (Solver2D l_solver in manager.solvers) { if (l_solver == null || l_solver.allChainsHaveTargets) { continue; } for (int i = 0; i < l_solver.chainCount; ++i) { var chain = l_solver.GetChain(i); if (chain.effector != null) { m_ChainPositionOverrides[chain] = chain.effector.position; } } } }
private void OnEnable() { m_Manager = target as IKManager2D; m_SolverTypes = GetDerivedTypes <Solver2D>(); m_SolversProperty = serializedObject.FindProperty("m_Solvers"); m_WeightProperty = serializedObject.FindProperty("m_Weight"); SetupReordeableList(); }
public void DoSolverGUI(Solver2D solver) { if (solver == null || !solver.isValid) { return; } IKManager2D manager = IKEditorManager.instance.FindManager(solver); if (!solver.isActiveAndEnabled || manager == null || !manager.isActiveAndEnabled) { return; } var solverData = manager.GetSolverEditorData(solver); if (!solverData.showGizmo) { return; } DrawSolver(solver, solverData); var allChainsHaveTargets = solver.allChainsHaveTargets; for (int i = 0; i < solver.chainCount; ++i) { var chain = solver.GetChain(i); if (chain == null) { continue; } if (allChainsHaveTargets) { if (!IsTargetTransformSelected(chain)) { DoTargetGUI(solver, chain); } } else if (chain.target == null) { DoIkPoseGUI(solver, chain); } } if (GUIUtility.hotControl == 0) { isDragging = false; } }
public void Setup() { editorManager = IKEditorManager.instance; go = new GameObject(); var child1GO = new GameObject(); child1GO.transform.parent = go.transform; var child2GO = new GameObject(); child2GO.transform.parent = child1GO.transform; var child3GO = new GameObject(); child3GO.transform.parent = child2GO.transform; targetGO = new GameObject(); targetGO.transform.parent = child3GO.transform; go.transform.position = Vector3.zero; child1GO.transform.position = new Vector3(1.0f, 0.0f, 0.0f); child2GO.transform.position = new Vector3(3.0f, 0.0f, 0.0f); child3GO.transform.position = new Vector3(6.0f, 0.0f, 0.0f); targetGO.transform.position = new Vector3(10.0f, 0.0f, 0.0f); ikGO = new GameObject(); manager = ikGO.AddComponent <IKManager2D>(); var lsGO = new GameObject(); solver = lsGO.AddComponent <FabrikSolver2D>(); lsGO.transform.parent = ikGO.transform; effectorGO = new GameObject(); effectorGO.transform.parent = solver.transform; effectorGO.transform.position = new Vector3(10.0f, 0.0f, 0.0f); chain = solver.GetChain(0); chain.target = targetGO.transform; chain.effector = effectorGO.transform; chain.transformCount = 5; solver.Initialize(); manager.AddSolver(solver); editorManager.Initialize(); }
protected virtual void Awake() { anim = GetComponent <Animator>(); chrTransform = transform; rb2D = GetComponent <Rigidbody2D>(); feet = GetComponentInChildren <CharacterFeet>(); manager = GetComponent <IKManager2D>(); self = gameObject; gunSlot = Instantiate <Gun>(weapon); gunSlot.name = weapon.name; gunSlot.Initialize(this, weaponArm, weaponPosition.localPosition); itemSlot = Instantiate <Item>(item); itemSlot.name = item.name; itemSlot.Initialize(this); }
public void Setup() { go = new GameObject(); var child1GO = new GameObject(); child1GO.transform.parent = go.transform; var child2GO = new GameObject(); child2GO.transform.parent = child1GO.transform; var child3GO = new GameObject(); child3GO.transform.parent = child2GO.transform; targetGO = new GameObject(); targetGO.transform.parent = child3GO.transform; go.transform.position = Vector3.zero; child1GO.transform.position = new Vector3(1.0f, 0.0f, 0.0f); child2GO.transform.position = new Vector3(3.0f, 0.0f, 0.0f); child3GO.transform.position = new Vector3(6.0f, 0.0f, 0.0f); targetGO.transform.position = new Vector3(10.0f, 0.0f, 0.0f); ikGO = new GameObject(); manager = ikGO.AddComponent <IKManager2D>(); var lsGO = new GameObject(); // Using FABRIKSolver2D here, but tests are generalised for all Solver2Ds solver = lsGO.AddComponent <FabrikSolver2D>(); lsGO.transform.parent = ikGO.transform; effectorGO = new GameObject(); effectorGO.transform.parent = solver.transform; var chain = solver.GetChain(0); chain.target = targetGO.transform; chain.effector = effectorGO.transform; chain.transformCount = 5; chain.Initialize(); manager.AddSolver(solver); }
private void DrawSolver(Solver2D solver) { if (Event.current.type != EventType.Repaint) { return; } IKManager2D manager = IKEditorManager.instance.FindManager(solver); bool isManagerDisabled = !solver.isActiveAndEnabled || manager == null || !manager.isActiveAndEnabled; for (int i = 0; i < solver.chainCount; ++i) { var chain = solver.GetChain(i); if (chain != null) { DrawChain(chain, isManagerDisabled, solver.allChainsHaveTargets); } } }
public void UpdateManagerImmediate(IKManager2D manager, bool recordRootLoops) { SetManagerDirty(manager); UpdateDirtyManagers(recordRootLoops); }
private void DoUndo(IKManager2D manager, string undoName, bool record) { foreach (var solver in manager.solvers) { if (solver == null || !solver.isActiveAndEnabled) { continue; } if (!solver.isValid) { solver.Initialize(); } if (!solver.isValid) { continue; } for (int i = 0; i < solver.chainCount; ++i) { var chain = solver.GetChain(i); if (record) { foreach (var t in chain.transforms) { if (m_IgnoreTransformsOnUndo.Contains(t)) { continue; } Undo.RecordObject(t, undoName); } if (chain.effector && !m_IgnoreTransformsOnUndo.Contains(chain.effector)) { Undo.RecordObject(chain.effector, undoName); } } else { foreach (var t in chain.transforms) { if (m_IgnoreTransformsOnUndo.Contains(t)) { continue; } Undo.RegisterCompleteObjectUndo(t, undoName); } if (chain.effector && !m_IgnoreTransformsOnUndo.Contains(chain.effector)) { Undo.RegisterCompleteObjectUndo(chain.effector, undoName); } } } m_IgnorePostProcessModifications = true; } }
public void RegisterUndo(IKManager2D manager, string undoName) { DoUndo(manager, undoName, false); }
public void Record(IKManager2D manager, string undoName) { DoUndo(manager, undoName, true); }
public void Setup() { ikGO = new GameObject(); manager = ikGO.AddComponent <IKManager2D>(); }