/// <param name="primFactory">The factory that will be used to interact with the world.</param>
        public MRMPrimCached(IMRMPrimFactory primFactory, string name, Vector3 pos = default(Vector3), Color colour = default(Color), Vector3 scale = default(Vector3), PrimType shape = PrimType.Unknown, Quaternion rotation = default(Quaternion))
        {
            _exists        = true;
            _factory       = primFactory;
            _name          = name;
            _colour        = colour.Equals(default(Color)) ? Color.White : colour;
            _defaultColour = colour.Equals(default(Color)) ? Color.White : colour;
            _pos           = pos.Equals(default(Vector3)) ? new Vector3(125f, 125f, 25f) : pos;
            _scale         = scale.Equals(default(Vector3)) ? new Vector3(.5f, .5f, .5f) : scale;
            _shape         = shape == PrimType.Unknown ? PrimType.Box : shape;
            _rotation      = rotation == default(Quaternion) ? Quaternion.Identity : rotation;

            _description = "";
            _touchText   = "";
            _glow        = 0d;

            //Create the primitive in world
            _obj = primFactory.RegisterPrim(this, Update);
            _id  = _obj.GlobalID;

            Editable = true;

            //Set up the primitive with the given values
            if (!InWorld)
            {
                throw new Exception("Primitive was not created correctly in world.");
            }
            UpdateNotEditable();
        }
        public MRMPrimCached(UUID id, IMRMPrimFactory primFactory)
        {
            _exists  = true;
            _id      = id;
            _obj     = primFactory.RegisterPrim(this, id);
            _exists  = _obj.Exists;
            _factory = primFactory;

            Editable = true;

            //Set up the primitive with the given values
            UpdateEditable();
        }