} // default constructor needed to keep XMLSerialization working. DO NOT REMOVE public GeoObj(string figName, Vector3 position, GeoObjDef def, GeoObjType type) { this.figName = figName; this.position = position; this.definition = def; this.type = type; this.constructionIndex = int.Parse(new string (figName.ToCharArray().Where(c => Char.IsDigit(c)).ToArray())); this.currTime = System.DateTime.Now; if (alphabetLabel.firstLabelMade && alphabetLabel.labelDict.ContainsKey(figName)) { this.label = alphabetLabel.labelDict[figName]; } }
internal void addComponent(AbstractGeoObj geoComp) { //set index GeoObjType type = geoComp.figType; geoComp.figIndex = currentIndex; string newmyNAME = type.ToString() + _currentIndex.ToString("000");//changed to include padding for ordering the objects nicely geoComp.figName = newmyNAME; geoComp.gameObject.name = newmyNAME; geomanager.AddNode(newmyNAME); // set transform reference for graph node to make reactionManager more efficient. geomanager.SetTransformRef(geomanager.findGraphNode(newmyNAME), geoComp.transform); }
public void replaceDepentVar(Transform parent, Transform oldObj, Transform newObj) { GeoObjType type = parent.transform.GetComponent <AbstractGeoObj>().figType; switch (type) { case GeoObjType.point: break; case GeoObjType.line: if (parent.transform.GetComponent <InteractableLineSegment>().point1 == oldObj.transform.GetComponent <InteractablePoint>()) { parent.transform.GetComponent <InteractableLineSegment>().point1 = newObj.transform.GetComponent <InteractablePoint>(); } else if (parent.transform.GetComponent <InteractableLineSegment>().point2 == oldObj.transform.GetComponent <InteractablePoint>()) { parent.transform.GetComponent <InteractableLineSegment>().point2 = newObj.transform.GetComponent <InteractablePoint>(); } break; case GeoObjType.polygon: GeoObjType oldType = oldObj.transform.GetComponent <AbstractGeoObj>().figType; switch (oldType) { case GeoObjType.point: if (parent.transform.GetComponent <AbstractPolygon>().pointList.Contains(oldObj.GetComponent <AbstractPoint>())) { int idx = parent.transform.GetComponent <AbstractPolygon>().pointList.IndexOf(oldObj.GetComponent <AbstractPoint>()); parent.transform.GetComponent <AbstractPolygon>().pointList[idx] = newObj.GetComponent <AbstractPoint>(); } break; case GeoObjType.line: if (parent.transform.GetComponent <AbstractPolygon>().lineList.Contains(oldObj.GetComponent <AbstractLineSegment>())) { int idx = parent.transform.GetComponent <AbstractPolygon>().lineList.IndexOf(oldObj.GetComponent <AbstractLineSegment>()); parent.transform.GetComponent <AbstractPolygon>().pointList[idx] = newObj.GetComponent <AbstractPoint>(); } break; } break; case GeoObjType.circle: Debug.Log("Rebuild This: Arc Case for ObjManHelper reassign"); //if (parent.transform.GetComponent<AbstractCircle>().attachedPoint.transform == oldObj.transform) //{ // parent.transform.GetComponent<ArcBehave>().attachedPoint = newObj.transform; //} break; case GeoObjType.revolvedsurface: // only dependent on a line. Debug.Log("Rebuild This: RevolvedSurface Case for ObjManHelper reassign"); //if (parent.transform.GetComponent<AbstractRevolvedSurface>().transform == oldObj.transform) //{ // parent.transform.GetComponent<AbstractRevolvedSurface>().attachedLine = newObj.transform; //} break; } }
internal int neighborTypeCount(NodeList <string> neighborList, GeoObjType value) { return(neighborList.Where(element => element.mytransform.GetComponent <AbstractGeoObj>().figType == value).Count()); }
internal void checkLifeRequirements(AbstractGeoObj geoComp) { //add case for clones. bool killorder = false; NodeList <string> neighborList = geoComp.FindGraphNode().Neighbors; GeoObjType type = geoComp.figType; int pointCount = 0; switch (type) { case GeoObjType.point: //degree == 0 killorder = false; break; case GeoObjType.line: pointCount = neighborTypeCount(neighborList, GeoObjType.point); //Debug.Log(geoComp.gameObject.name+" has "+pointCount+" points."); if (pointCount < 2) { killorder = true; } else { killorder = false; } break; case GeoObjType.polygon: pointCount = neighborTypeCount(neighborList, GeoObjType.point); //TOFIX: add cycle check if (pointCount < 3) { killorder = true; } else { killorder = false; } break; case GeoObjType.circle: pointCount = neighborTypeCount(neighborList, GeoObjType.point); if (pointCount < 1) //|| geoComp.GetComponent<DependentCircle>().Radius <= 0.00000000001f) { killorder = true; } else { killorder = false; } break; case GeoObjType.revolvedsurface: //pointCount = neighborTypeCount (neighborList, "Point"); //arcCount = neighborTypeCount (neighborList, "Arc"); pointCount = neighborTypeCount(neighborList, GeoObjType.point); if (pointCount < 2) { killorder = true; } else { killorder = false; } break; case GeoObjType.sphere: pointCount = neighborTypeCount(neighborList, GeoObjType.point); if (pointCount < 2 || geoComp.GetComponent <DependentSphere>().radius <= 0.00000001f) { killorder = true; } else { killorder = false; } break; default: break; } if (killorder) { removeComponent(geoComp); } }
public GeoObj(string name, Vector3 position, Quaternion rotation, figData.revSurf revSurf, GeoObjDef def, List <string> dependencyList, GeoObjType type) : this(name, position, rotation, def, type) { this.revSurfData = revSurf; this.dependencies = dependencyList; }
public GeoObj(string name, Vector3 position, Quaternion rotation, figData.prism prismData, GeoObjDef def, GeoObjType type) : this(name, position, rotation, def, type) { this.prismData = prismData; }
public GeoObj(string name, Vector3 position, Quaternion rotation, figData.sphere sphere, GeoObjDef def, List <string> dependencyList, GeoObjType type) : this(name, position, rotation, def, type) { this.sphereData = sphere; this.dependencies = dependencyList; this.type = type; }
public GeoObj(string name, Vector3 position, Quaternion rotation, figData.pyramid pyramid, GeoObjDef def, List <string> dependencyList, GeoObjType type) : this(name, position, rotation, def, type) { this.pyramidData = pyramid; this.dependencies = dependencyList; this.type = type; }
public GeoObj(string name, Vector3 position, Quaternion rotation, figData.polygon polygon, GeoObjDef def, List <string> dependencyList, GeoObjType type) : this(name, position, rotation, def, type) { this.polygonData = polygon; this.dependencies = dependencyList; }
public GeoObj(string name, Vector3 position, Quaternion rotation, figData.line line, GeoObjDef def, List <string> dependencyList, GeoObjType type) : this(name, position, def, type) { this.rotation = rotation; this.dependencies = dependencyList; this.lineData = line; }
public GeoObj(string name, Vector3 position, Quaternion rotation, GeoObjDef def, GeoObjType type) : this(name, position, def, type) { this.rotation = rotation; }
private GeoObjDef determineDef(AbstractGeoObj obj, GeoObjType figType) { switch (figType) { case GeoObjType.point: if (obj.GetComponent <InteractablePoint>() != null) { return(GeoObjDef.Interactable); } else if (obj.GetComponent <DependentPoint>() != null) { return(GeoObjDef.Dependent); } else if (obj.GetComponent <StaticPoint>() != null) { return(GeoObjDef.Static); } else { return(GeoObjDef.Abstract); } case GeoObjType.line: if (obj.GetComponent <InteractableLineSegment>() != null) { return(GeoObjDef.Interactable); } else if (obj.GetComponent <DependentLineSegment>() != null) { return(GeoObjDef.Dependent); } else if (obj.GetComponent <StaticLineSegment>() != null) { return(GeoObjDef.Static); } else { return(GeoObjDef.Abstract); } case GeoObjType.polygon: if (obj.GetComponent <InteractablePolygon>() != null) { return(GeoObjDef.Interactable); } else if (obj.GetComponent <DependentPolygon>() != null) { return(GeoObjDef.Dependent); } else if (obj.GetComponent <StaticPolygon>() != null) { return(GeoObjDef.Static); } else { return(GeoObjDef.Abstract); } case GeoObjType.prism: if (obj.GetComponent <InteractablePrism>() != null) { return(GeoObjDef.Interactable); } else if (obj.GetComponent <DependentPrism>() != null) { return(GeoObjDef.Dependent); } else if (obj.GetComponent <StaticSolid>() != null) { return(GeoObjDef.Static); } else { return(GeoObjDef.Abstract); } case GeoObjType.pyramid: if (obj.GetComponent <DependentPyramid>() != null) //Case doesn't exist yet //{ // return GeoObjDef.Interactable; //} //else if (obj.GetComponent<DependentPyramid>() != null) { return(GeoObjDef.Dependent); } //else if (obj.GetComponent<staticPyramid>() != null) //Case doesn't exist yet //{ // return GeoObjDef.Static; //} else { return(GeoObjDef.none); } case GeoObjType.circle: if (obj.GetComponent <InteractableCircle>() != null) { return(GeoObjDef.Interactable); } else if (obj.GetComponent <DependentCircle>() != null) { return(GeoObjDef.Dependent); } else if (obj.GetComponent <StaticCircle>() != null) { return(GeoObjDef.Static); } else { return(GeoObjDef.Abstract); } case GeoObjType.sphere: //if (obj.GetComponent<AbstractSphere>() != null) //{ // return GeoObjDef.Interactable; //Case doesn't exist yet //} if (obj.GetComponent <DependentSphere>() != null) { return(GeoObjDef.Dependent); } //else if (obj.GetComponent<StaticSphere>() != null) //{ // return GeoObjDef.Static; //Case doesn't exist yet //} else { return(GeoObjDef.Abstract); } case GeoObjType.revolvedsurface: if (obj.GetComponent <InteractableRevolvedSurface>() != null) { return(GeoObjDef.Interactable); } else if (obj.GetComponent <DependentRevolvedSurface>() != null) { return(GeoObjDef.Dependent); } else if (obj.GetComponent <StaticRevolvedSurface>() != null) { return(GeoObjDef.Static); } else { return(GeoObjDef.Abstract); } case GeoObjType.torus: //if (obj.GetComponent<InteractableTorus>() != null) //{ // return GeoObjDef.Interactable; //} //else if (obj.GetComponent<DependentTorus>() != null) //{ // return GeoObjDef.Dependent; //Cases do not exist yet //} //else if (obj.GetComponent<StaticTorus>() != null) //{ // return GeoObjDef.Static; //} //else //{ // return GeoObjDef.Abstract; //} return(GeoObjDef.none); case GeoObjType.flatface: return(GeoObjDef.none); case GeoObjType.straightedge: return(GeoObjDef.none); default: Debug.Log("Object type not supported within XMLManager! " + obj.figType + " was attempted and failed to serialize."); return(GeoObjDef.none); } }