Exemple #1
0
    private void ServerEvent(Client sender, string ev, object[] args)
    {
        if (ev == "QUERY_MODEL_RESPONSE")
        {
            int     model = (int)args[0];
            Vector3 max   = (Vector3)args[1];
            Vector3 min   = (Vector3)args[2];

            var mdims = new ModelDimensions()
            {
                Model = model,
                Max   = max,
                Min   = min
            };

            if (_callbacks.ContainsKey(model) && _callbacks[model] != null && _callbacks[model].Count > 0)
            {
                foreach (var callback in _callbacks[model])
                {
                    callback(mdims);
                }
            }

            _callbacks.Remove(model);

            if (!_cachedDims.ContainsKey(model))
            {
                _cachedDims.Add(model, mdims);
            }
        }
    }
Exemple #2
0
        private void SetupScaleAndPosition()
        {
            ModelDimensions dimensions = model.Dimensions;

            scale = 0f;
            float dx   = dimensions.Max.X - dimensions.Min.X;
            float dy   = dimensions.Max.Y - dimensions.Min.Y;
            float dz   = dimensions.Max.Z - dimensions.Min.Z;
            float size = (float)(75 / 10);

            CalcScale(dx, size);
            CalcScale(dy, size);
            CalcScale(dz, size);
            if (scale == 0f)
            {
                scale = 1f;
            }
            // Расчитать позицию (расположить модель посередине стола)
            position.X = -(dx / 2 + dimensions.Min.X) * scale;
            position.Y = -(dy / 2 + dimensions.Min.Y) * scale;
            position.Z = (-dimensions.Min.Z) * scale;
        }
Exemple #3
0
    private ModelDimensions RequestModelDimensions(int model)
    {
        if (_cachedDims.ContainsKey(model))
        {
            return(_cachedDims[model]);
        }

        var players = API.getAllPlayers();

        if (players.Count == 0)
        {
            return(null);
        }

        ModelDimensions dims = null;

        Action <ModelDimensions> callback = new Action <ModelDimensions>((m) =>
        {
            dims = m;
        });

        if (!_callbacks.ContainsKey(model))
        {
            _callbacks.Add(model, new List <Action <ModelDimensions> >());
        }
        _callbacks[model].Add(callback);

        players[0].triggerEvent("QUERY_MODEL_SIZE", model);


        DateTime start = DateTime.Now;

        while (dims == null && DateTime.Now.Subtract(start).TotalMilliseconds < 1000)
        {
            API.sleep(0);
        }

        return(dims);
    }