Esempio n. 1
0
        }                          // 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];
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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;
            }
        }
Esempio n. 4
0
 internal int neighborTypeCount(NodeList <string> neighborList, GeoObjType value)
 {
     return(neighborList.Where(element => element.mytransform.GetComponent <AbstractGeoObj>().figType == value).Count());
 }
Esempio n. 5
0
        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);
            }
        }
Esempio n. 6
0
 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;
 }
Esempio n. 7
0
 public GeoObj(string name, Vector3 position, Quaternion rotation, figData.prism prismData, GeoObjDef def, GeoObjType type) : this(name, position, rotation, def, type)
 {
     this.prismData = prismData;
 }
Esempio n. 8
0
 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;
 }
Esempio n. 9
0
 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;
 }
Esempio n. 10
0
 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;
 }
Esempio n. 11
0
 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;
 }
Esempio n. 12
0
 public GeoObj(string name, Vector3 position, Quaternion rotation, GeoObjDef def, GeoObjType type) : this(name, position, def, type)
 {
     this.rotation = rotation;
 }
Esempio n. 13
0
        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);
            }
        }