protected Utils.VisualPrimitive GetVisualPrimitive( string name ) { Utils.VisualPrimitive primitive = null; if ( m_visualPrimitives.TryGetValue( name, out primitive ) ) return primitive; return null; }
protected void RemoveVisualPrimitive(Utils.VisualPrimitive primitive) { if (m_visualPrimitives.ContainsValue(primitive)) { RemoveVisualPrimitive(m_visualPrimitives.First(kvp => kvp.Value == primitive).Key); } }
protected void RemoveVisualPrimitive( string name ) { Utils.VisualPrimitive primitive = null; if ( m_visualPrimitives.TryGetValue( name, out primitive ) ) { primitive.Destruct(); m_visualPrimitives.Remove( name ); } }
protected Utils.VisualPrimitive GetVisualPrimitive(string name) { Utils.VisualPrimitive primitive = null; if (m_visualPrimitives.TryGetValue(name, out primitive)) { return(primitive); } return(null); }
public ShapeUtils.Direction GetDirection(Utils.VisualPrimitive primitive) { foreach (ShapeUtils.Direction direction in Enum.GetValues(typeof(ShapeUtils.Direction))) { if (GetVisual(direction) == primitive) { return(direction); } } throw new AGXUnity.Exception("Direction not found."); }
private void UpdateVisualPrimitive(Utils.VisualPrimitive vp, ShapeInitializationData shapeInitData, ShapeInitializationData.AxisData axisData) { if (vp == null) { return; } vp.Visible = shapeInitData != null && axisData != null; if (!vp.Visible) { return; } if (vp is Utils.VisualPrimitiveMesh) { vp.Node.transform.localScale = shapeInitData.Filter.transform.lossyScale; vp.Node.transform.position = shapeInitData.Filter.transform.position; vp.Node.transform.rotation = shapeInitData.Filter.transform.rotation; } else { vp.Node.transform.localScale = Vector3.one; vp.Node.transform.position = shapeInitData.WorldCenter; #if UNITY_2018_1_OR_NEWER vp.Node.transform.rotation = shapeInitData.Rotation * Quaternion.FromToRotation(Vector3.up, axisData.Direction).normalized; #else vp.Node.transform.rotation = shapeInitData.Rotation * Quaternion.FromToRotation(Vector3.up, axisData.Direction).Normalize(); #endif } if (vp is Utils.VisualPrimitiveBox) { (vp as Utils.VisualPrimitiveBox).SetSize(shapeInitData.LocalExtents); } else if (vp is Utils.VisualPrimitiveCylinder) { (vp as Utils.VisualPrimitiveCylinder).SetSize(axisData.Radius, axisData.Height); } else if (vp is Utils.VisualPrimitiveCapsule) { (vp as Utils.VisualPrimitiveCapsule).SetSize(axisData.Radius, axisData.Height); } else if (vp is Utils.VisualPrimitiveSphere) { (vp as Utils.VisualPrimitiveSphere).SetSize(axisData.Radius); } else if (vp is Utils.VisualPrimitiveMesh) { (vp as Utils.VisualPrimitiveMesh).SetSourceObject(shapeInitData.Filter.sharedMesh); } }
/// <summary> /// Callback when the edge has been picked. /// </summary> private void OnEdgeClick(Utils.Raycast.Result result, Utils.VisualPrimitive primitive) { m_collectedData.SelectedEdge = m_collectedData.CurrentEdge; EdgeVisual.Pickable = false; NodeVisual.Pickable = false; if (OnEdgeSelect != null && m_collectedData.SelectedEdge.Valid) { OnEdgeSelect(new EdgeSelectResult() { Target = m_collectedData.Target, Edge = m_collectedData.SelectedEdge }); } }
private Utils.VisualPrimitive GetSelectedButtonVisualPrimitive() { Utils.VisualPrimitive vp = GetVisualPrimitive(m_visualPrimitiveName); if (m_buttons.Selected == null || m_buttons.Selected.State.Axis == ShapeInitializationData.Axes.None) { RemoveVisualPrimitive(m_visualPrimitiveName); return(null); } var desiredType = Type.GetType("AGXUnityEditor.Utils.VisualPrimitive" + m_buttons.Selected.State.ShapeType.ToString() + ", AGXUnityEditor"); // Desired type doesn't exist - remove current visual primitive if it exists. if (desiredType == null) { RemoveVisualPrimitive(m_visualPrimitiveName); return(null); } // New visual primitive type. Remove old one. if (vp != null && vp.GetType() != desiredType) { RemoveVisualPrimitive(m_visualPrimitiveName); vp = null; } // Same type as selected button shape type. if (vp != null) { return(vp); } MethodInfo genericMethod = GetType().GetMethod("GetOrCreateVisualPrimitive", BindingFlags.NonPublic | BindingFlags.Instance).MakeGenericMethod(desiredType); vp = (Utils.VisualPrimitive)genericMethod.Invoke(this, new object[] { m_visualPrimitiveName, VisualPrimitiveShader }); if (vp == null) { return(null); } vp.Pickable = false; vp.Color = VisualPrimitiveColor; return(vp); }
private void OnClick(Utils.Raycast.Result result, Utils.VisualPrimitive primitive) { Selected = true; }
private void OnClick(AgXUnity.Utils.Raycast.Hit hit, Utils.VisualPrimitive primitive) { Selected = true; }
/// <summary> /// Callback when the node/position has been picked. /// </summary> private void OnPointClick(Raycast.Hit hit, Utils.VisualPrimitive primitive) { m_collectedData.PointOnEdgeGiven = true; }
/// <summary> /// Callback when the edge has been picked. /// </summary> private void OnEdgeClick(Raycast.Hit hit, Utils.VisualPrimitive primitive) { m_collectedData.SelectedEdge = m_collectedData.CurrentEdge; EdgeVisual.Pickable = false; NodeVisual.Pickable = false; }
private void OnPrimitiveClick(Raycast.Hit hit, Utils.VisualPrimitive primitive) { OnSelect(Position, GetRotation(Vector3.forward, GetDirection(primitive))); PerformRemoveFromParent(); }
/// <summary> /// Callback when the node/position has been picked. /// </summary> private void OnPointClick(Utils.Raycast.Result result, Utils.VisualPrimitive primitive) { m_collectedData.PointOnEdgeGiven = true; }