示例#1
0
        /// -----------------------------------------------------------------
        /// <summary>
        /// </summary>
        // -----------------------------------------------------------------
        public Dispatcher.Messages.ResponseBase CreateObjectHandler(Dispatcher.Messages.RequestBase irequest)
        {
            if (irequest.GetType() != typeof(CreateObjectRequest))
            {
                return(OperationFailed("wrong type of request object"));
            }

            CreateObjectRequest request = (CreateObjectRequest)irequest;

            if (request.AssetID == UUID.Zero)
            {
                return(OperationFailed("missing asset id"));
            }

            SceneObjectGroup sog = null;

            try
            {
                m_log.DebugFormat("[ObjectHandlers] create object \"{0}\" from asset {1}", request.Name, request.AssetID);

                sog = GetRezReadySceneObject(request.AssetID, request.Name, request.Description,
                                             request._UserAccount.PrincipalID, UUID.Zero);
                if (sog == null)
                {
                    return(OperationFailed("unable to create object from asset"));
                }

                if (request.ObjectID != UUID.Zero)
                {
                    sog.UUID = request.ObjectID;
                }

                if (!String.IsNullOrEmpty(request.StartParameter))
                {
                    if (m_jsonstore != null)
                    {
                        // really should register an event handler on the scene to destroy this
                        // store when we are done
                        UUID storeID = sog.UUID;
                        m_jsonstore.CreateStore(request.StartParameter, ref storeID);
                    }
                }

                if (!m_scene.AddNewSceneObject(sog, false, request.Position, request.Rotation, request.Velocity))
                {
                    return(OperationFailed("failed to add the object to the scene"));
                }

                sog.CreateScriptInstances(0, true, m_scene.DefaultScriptEngine, 3);
                sog.ScheduleGroupForFullUpdate();
            }
            catch (Exception e)
            {
                m_log.WarnFormat("[ObjectHandlers] exception thrown in CreateObjectHandler; {0}", e.ToString());
                return(OperationFailed(e.Message));
            }

            return(new CreateObjectResponse(sog.UUID));
        }
示例#2
0
        public UUID JsonCreateStore(UUID hostID, UUID scriptID, string value)
        {
            UUID uuid = UUID.Zero;

            if (!m_store.CreateStore(value, ref uuid))
            {
                GenerateRuntimeError("Failed to create Json store");
            }

            return(uuid);
        }
        public UUID JsonCreateStore(UUID hostID, UUID scriptID, string value)
        {
            UUID uuid = UUID.Zero;

            if (!m_store.CreateStore(value, ref uuid))
            {
                GenerateRuntimeError("Failed to create Json store");
            }

            lock (m_scriptStores)
            {
                if (!m_scriptStores.ContainsKey(scriptID))
                {
                    m_scriptStores[scriptID] = new HashSet <UUID>();
                }

                m_scriptStores[scriptID].Add(uuid);
            }
            return(uuid);
        }