Exemplo n.º 1
0
Arquivo: Part.cs Projeto: ext0/Flex
        private void LoadMaterials(bool forceUpdate = false)
        {
            if (_baseMaterialPtr == null || forceUpdate)
            {
                _baseMaterialPtr = _material.GetMaterial().Clone(_UUID + "/DynamicMesh/" + Guid.NewGuid());
            }
            if (_frontMaterialPtr == null || forceUpdate)
            {
                _frontMaterialPtr = _baseMaterialPtr.Clone(_baseMaterialPtr.Name + "/Front");
            }
            if (_backMaterialPtr == null || forceUpdate)
            {
                _backMaterialPtr = _baseMaterialPtr.Clone(_baseMaterialPtr.Name + "/Back");
            }
            if (_leftMaterialPtr == null || forceUpdate)
            {
                _leftMaterialPtr = _baseMaterialPtr.Clone(_baseMaterialPtr.Name + "/Left");
            }
            if (_rightMaterialPtr == null || forceUpdate)
            {
                _rightMaterialPtr = _baseMaterialPtr.Clone(_baseMaterialPtr.Name + "/Right");
            }
            if (_topMaterialPtr == null || forceUpdate)
            {
                _topMaterialPtr = _baseMaterialPtr.Clone(_baseMaterialPtr.Name + "/Top");
            }
            if (_bottomMaterialPtr == null || forceUpdate)
            {
                _bottomMaterialPtr = _baseMaterialPtr.Clone(_baseMaterialPtr.Name + "/Bottom");
            }

            _textureScale = _material.TextureScaling();

            _frontMaterialPtr.SetAmbient(new ColourValue(_color.r / 255f, _color.g / 255f, _color.b / 255f, _color.transparency / 255f));
            //_frontMaterialPtr.SetDiffuse(_color.r / 255f, _color.g / 255f, _color.b / 255f, _color.transparency / 255f);
            //_frontMaterialPtr.SetSpecular(_color.r / 255f, _color.g / 255f, _color.b / 255f, _color.transparency / 255f);
            _frontMaterialPtr.GetTechnique(0).GetPass(0).GetTextureUnitState(0).SetTextureScale(_textureScale.x / size.x, _textureScale.y / size.y);

            _backMaterialPtr.SetAmbient(new ColourValue(_color.r / 255f, _color.g / 255f, _color.b / 255f, _color.transparency / 255f));
            //_backMaterialPtr.SetDiffuse(_color.r / 255f, _color.g / 255f, _color.b / 255f, _color.transparency / 255f);
            //_backMaterialPtr.SetSpecular(_color.r / 255f, _color.g / 255f, _color.b / 255f, _color.transparency / 255f);
            _backMaterialPtr.GetTechnique(0).GetPass(0).GetTextureUnitState(0).SetTextureScale(_textureScale.x / size.x, _textureScale.y / size.y);

            _leftMaterialPtr.SetAmbient(new ColourValue(_color.r / 255f, _color.g / 255f, _color.b / 255f, _color.transparency / 255f));
            //_leftMaterialPtr.SetDiffuse(_color.r / 255f, _color.g / 255f, _color.b / 255f, _color.transparency / 255f);
            //_leftMaterialPtr.SetSpecular(_color.r / 255f, _color.g / 255f, _color.b / 255f, _color.transparency / 255f);
            _leftMaterialPtr.GetTechnique(0).GetPass(0).GetTextureUnitState(0).SetTextureScale(_textureScale.x / size.y, _textureScale.y / size.z);

            _rightMaterialPtr.SetAmbient(new ColourValue(_color.r / 255f, _color.g / 255f, _color.b / 255f, _color.transparency / 255f));
            //_rightMaterialPtr.SetDiffuse(_color.r / 255f, _color.g / 255f, _color.b / 255f, _color.transparency / 255f);
            //_rightMaterialPtr.SetSpecular(_color.r / 255f, _color.g / 255f, _color.b / 255f, _color.transparency / 255f);
            _rightMaterialPtr.GetTechnique(0).GetPass(0).GetTextureUnitState(0).SetTextureScale(_textureScale.x / size.y, _textureScale.y / size.z);

            _topMaterialPtr.SetAmbient(new ColourValue(_color.r / 255f, _color.g / 255f, _color.b / 255f, _color.transparency / 255f));
            //_topMaterialPtr.SetDiffuse(_color.r / 255f, _color.g / 255f, _color.b / 255f, _color.transparency / 255f);
            //_topMaterialPtr.SetSpecular(_color.r / 255f, _color.g / 255f, _color.b / 255f, _color.transparency / 255f);
            _topMaterialPtr.GetTechnique(0).GetPass(0).GetTextureUnitState(0).SetTextureScale(_textureScale.x / size.x, _textureScale.y / size.z);

            _bottomMaterialPtr.SetAmbient(new ColourValue(_color.r / 255f, _color.g / 255f, _color.b / 255f, _color.transparency / 255f));
            //_bottomMaterialPtr.SetDiffuse(_color.r / 255f, _color.g / 255f, _color.b / 255f, _color.transparency / 255f);
            //_bottomMaterialPtr.SetSpecular(_color.r / 255f, _color.g / 255f, _color.b / 255f, _color.transparency / 255f);
            _bottomMaterialPtr.GetTechnique(0).GetPass(0).GetTextureUnitState(0).SetTextureScale(_textureScale.x / size.x, _textureScale.y / size.z);
        }