Ejemplo n.º 1
0
 public Vector3Value(Vector3Parameter parameter)
 {
     value = new float[3] {
         parameter.value[0], parameter.value[1], parameter.value[2]
     };
     overrideState = parameter.overrideState;
 }
Ejemplo n.º 2
0
    public static Vector3 GetVector3(this AIRuntimeController controller, string name)
    {
        NamedParameter param = controller.GetParameter(name);

        if (param is GameObjectParameter)
        {
            return(((GameObjectParameter)param).Value.transform.position);
        }
        Vector3Parameter v = (Vector3Parameter)controller.GetParameter(name);

        return(v != null ? v.Value : Vector3.zero);
    }
Ejemplo n.º 3
0
 public void Fill(Vector3Parameter parameter)
 {
     parameter.value         = new Vector3(value[0], value[1], value[2]);
     parameter.overrideState = overrideState;
 }
Ejemplo n.º 4
0
        private List <ConstantBuffer> ReflectConstantBuffers(ShaderReflection reflection)
        {
            var constantBuffers = new List <ConstantBuffer>();

            for (int cBufferIndex = 0; cBufferIndex < reflection.Description.ConstantBuffers; cBufferIndex++)
            {
                var cb             = reflection.GetConstantBuffer(cBufferIndex);
                var bindingDesc    = reflection.GetResourceBindingDescription(cb.Description.Name);
                var buf            = new Buffer(renderer.Device, cb.Description.Size, ResourceUsage.Dynamic, BindFlags.ConstantBuffer, CpuAccessFlags.Write, ResourceOptionFlags.None, sizeof(float));
                var constantBuffer = new ConstantBuffer(buf, bindingDesc.BindPoint);
                for (int i = 0; i < cb.Description.VariableCount; i++)
                {
                    var refVar = cb.GetVariable(i);
                    var type   = refVar.GetVariableType();
                    switch (type.Description.Type)
                    {
                    case ShaderVariableType.Float:
                        if (type.Description.RowCount == 4 && type.Description.ColumnCount == 4)
                        {
                            var matParam = new MatrixParameter(refVar.Description.StartOffset);
                            if (matParam.Size != refVar.Description.Size)
                            {
                                throw CargoEngineException.Create("Error ConstantBufferParamtersize");
                            }
                            constantBuffer.AddParameter(refVar.Description.Name, matParam);
                        }
                        if (type.Description.RowCount == 1)
                        {
                            switch (type.Description.ColumnCount)
                            {
                            case 2:
                                var vec2Param = new Vector2Parameter(refVar.Description.StartOffset);
                                if (vec2Param.Size != refVar.Description.Size)
                                {
                                    throw CargoEngineException.Create("Error ConstantBufferParamtersize");
                                }
                                constantBuffer.AddParameter(refVar.Description.Name, vec2Param);
                                break;

                            case 3:
                                var vec3Param = new Vector3Parameter(refVar.Description.StartOffset);
                                if (vec3Param.Size != refVar.Description.Size)
                                {
                                    throw CargoEngineException.Create("Error ConstantBufferParamtersize");
                                }
                                constantBuffer.AddParameter(refVar.Description.Name, vec3Param);
                                break;

                            case 4:
                                var vec4Param = new Vector4Parameter(refVar.Description.StartOffset);
                                if (vec4Param.Size != refVar.Description.Size)
                                {
                                    throw CargoEngineException.Create("Error ConstantBufferParamtersize");
                                }
                                constantBuffer.AddParameter(refVar.Description.Name, vec4Param);
                                break;
                            }
                        }
                        break;
                    }
                    constantBuffers.Add(constantBuffer);
                }
            }
            return(constantBuffers);
        }
Ejemplo n.º 5
0
 public static Vector3 GetValue(this AIRuntimeController controller, Vector3Parameter param)
 {
     return(string.IsNullOrEmpty(param.Name) ? param.Value : controller.GetVector3(param.Name));
 }
Ejemplo n.º 6
0
    public static void SetVector3(this AIRuntimeController controller, string name, Vector3 value)
    {
        Vector3Parameter param = (Vector3Parameter)controller.GetParameter(name);

        param.Value = value;
    }