Jump to content

DanceTweety

Members
  • Posts

    41
  • Joined

  • Last visited

Posts posted by DanceTweety

  1. The program I am making is using the physics engine so making a program to follow the ball using SetPosition() and SetRotation() would be us less.

     

    Why cant I like Macklebee is saying set the Collision respons becouse it seems to do notthing at the moment.

  2. Yeah it will generate the Character Controller cylinder physics which is unwanted in many cases including this one most likely.

     

    A work around is to move your entity and then make an invisible entity with character physics that will follow it (using SetPosition() and SetRotation()). Give your entity Debris collisiontype to avoid collisions with the invisible entity(with Character Controller physics) following it.

    Might not be perfect but that is what I am doing until I can make custom collision responses and it works pretty good.

     

    I have try that now Trigger will work it change its Physics Mode from Rigid Body to Character Controller.

    But then it does not roll off course.

    When you make object and make that a child of the ball all kinds of strange things happen. I get a giant ball in the scene and it will not detect any way.

     

    So seams is no way to get a ball to be detected.

  3. No did not change Physics Mode from Rigid Body to Character need it to be ball shaped.

     

    Yeah it will generate the Character Controller cylinder physics which is unwanted in many cases including this one most likely.

     

    A work around is to move your entity and then make an invisible entity with character physics that will follow it (using SetPosition() and SetRotation()). Give your entity Debris collisiontype to avoid collisions with the invisible entity(with Character Controller physics) following it.

    Might not be perfect but that is what I am doing until I can make custom collision responses and it works pretty good.

     

    This maybe a option I wonder what will happen when I shoot it in a hole though.

  4. I have tried making the ball a character instead of a prop allready did not help.

    Still would not detect it.

    There must be something in Player prefab that makes it different becouse it is the only thing that is detected.

  5. This is how the script in the ball looks it is linked in flowchart editor to out of CollisionTrigger.lua script.

     

    Script.score = "0"
    Script.hit_test1 = false
    Script.hit_test2 = false
    
    function Script:Ball_hit1()--in
    self.hit_test1 = true
     if self.hit_test1 == true then
     self.score = "50"
     end
    end
    
    --[[function Script:Ball_hit2()--in
     self.hit_test2 = true
     end
    ]]--
    
    function Script:PostRender(context)
    context:SetBlendMode(Blend.Alpha)
    	 if self.hit_test1 == true or self.hit_test2 == true then
    local context=Context:GetCurrent()
     context:SetBlendMode(Blend.Alpha) --Set blend to alpha so only letters will show
    		 context:DrawText("Score: ".. self.score .."",5,150) --Set text and position of text
     else
    local context=Context:GetCurrent()
    		 context:SetBlendMode(Blend.Alpha) --Set blend to alpha so only letters will show
    		 context:DrawText("Score: ".. self.score .."",5,150) --Set text and position of text
     end
    end
    

     

    If I put in Player in the CollisionTrigger.lua script instead of ball it works fine.

    Also try Name instead of name in CollisionTrigger.lua script but then script did not work any more when I tested it with Player.

  6. This is how it is looking now:

     

     

    --[[This script will make any entity act as a collision trigger.  It works best when you set the
    entity's collision type to "Trigger".  This will continuously detect collisions without causing
    any physical reaction.
    ]]--
    
    function Script:Start()
       self.enabled=true
    end
    
    function Script:Collision(entity, position, normal, speed)
       if self.enabled and entity:GetKeyValue("Name") == "ball"
     	  then
     	  self.component:CallOutputs("Collision")
       end
    end
    
    function Script:Enable()--in
       if self.enabled==false then
        self.enabled=true
           self:CallOutputs("Enable")
       end
    end
    
    function Script:Disable()--in
       if self.enabled then
        self.enabled=false
        self:CallOutputs("Disable")
       end
    end
    

     

     

    It does not react on Player what is good but also does not react on ball (this is what the entity is called in the scene).

    It seem it will not react on a prop.

    Same happens in the Selective Collision Trigger 1.0 script.

  7. I am trying to make a trigger box to detect a ball using CollisionTrigger.lua.

    But it only detects the player.

     

    How can I change this the ball is a prop and has a phy file.

     

    Any help is welcome smile.png

     

     

    I also tried the Selective Collision Trigger 1.0 but it does also not detect the ball

     

    I also dont see how I can put a Entity in the box and even it I place it in the script it does not show up in the input box.

  8. What I did to have control over the shininess is make a range of shaders for 20% 30% 40% 50% 60% 70%

    By changing the line "outcolor = mix(outcolor,texture(texture4,cubecoord),0.5); //mix diffuse with cubemap reflection 50%" to that values.

     

    Works great :)

    • Upvote 2
  9. I tested on the 3.1 steam indie version to and same error.

     

    What happens is that the last texture file you add the meta files are ruined the moment you press save.

     

    You all so will see that the meta files are 1k after that. It only happens to the last file you put in the material.

     

    I can send you the files if you need them?

     

    I hope some one will look at this soon sad.png

  10. I seam to have same problem in 3.1 beta steam ind version

     

    This are errors I get:

     

    Error: Texture file header not found.

    Failed to load thumbnail 6 for D:/leadwerks/RescueDrYoung/Materials/Metal/brushed_metal_dirty_normal.tex

    Saving thumbnail D:/leadwerks/RescueDrYoung/Materials/Metal/brushed_metal_dirty_normal.tex

  11. Reinstalled leadwerks

     

    And I have the same error now no matter what texture or shader I use when I try to make a material in the material editor:

     

    Error: Texture file header not found.

    Error: Failed to load texture "D:/leadwerks/RescueDrYoung/Materials/Metal/diamondsteel_spec.tex"

    Failed to load thumbnail 6 for D:/leadwerks/RescueDrYoung/Materials/Metal/diamondsteel_spec.tex

    Loading texture "D:/leadwerks/RescueDrYoung/Materials/Metal/diamondsteel_spec.tex..."

     

    This looks like a bug in the material editor to me?

  12. @DanceTweety :

    It's perhaps not the shader the problem.

    Could you try to choose simple shader like normal map and see if the problem is occuring ?

    (It could be some bug with Material editor)

     

    Yes I will reinstall leadwerks just to besure

  13. Hi Shadmar,

     

    I have edited the diffuse.shader to make it a reflective cubemap shader. But I have a problem every time I put a cubemap file in to the shader it seems like it is changed. It seem to work in material editor till I save it them the cubemap turns drank in the material editor and the cubemap file it self turns dark to.

     

    This is how the Vertex part looks:

     

    #version 400
    #define MAX_INSTANCES 256
    //Uniforms
    //uniform mat4 entitymatrix;
    uniform vec4 materialcolordiffuse;
    uniform mat4 projectioncameramatrix;
    uniform mat4 camerainversematrix;
    uniform instancematrices { mat4 matrix[MAX_INSTANCES];} entity;
    //Attributes
    in vec3 vertex_position;
    in vec4 vertex_color;
    in vec2 vertex_texcoords0;
    in vec3 vertex_normal;
    in vec3 vertex_binormal;
    in vec3 vertex_tangent;
    //Outputs
    out vec4 ex_color;
    out vec2 ex_texcoords0;
    out float ex_selectionstate;
    out vec3 ex_VertexCameraPosition;
    out vec3 ex_normal;
    out vec3 ex_tangent;
    out vec3 ex_binormal;
    out vec4 ex_vertexposition;
    void main()
    {
    mat4 entitymatrix = entity.matrix[gl_InstanceID];
    mat4 entitymatrix_=entitymatrix;
    entitymatrix_[0][3]=0.0;
    entitymatrix_[1][3]=0.0;
    entitymatrix_[2][3]=0.0;
    entitymatrix_[3][3]=1.0;
    
    vec4 modelvertexposition = entitymatrix_ * vec4(vertex_position,1.0);
    ex_VertexCameraPosition = vec3(camerainversematrix * modelvertexposition);
    gl_Position = projectioncameramatrix * modelvertexposition;
    ex_vertexposition = modelvertexposition;  //we need this position the fragment shader
    mat3 nmat = mat3(camerainversematrix);//[0].xyz,camerainversematrix[1].xyz,camerainversematrix[2].xyz);//39
    nmat = nmat * mat3(entitymatrix[0].xyz,entitymatrix[1].xyz,entitymatrix[2].xyz);//40
    ex_normal = normalize(nmat * vertex_normal);
    ex_tangent = normalize(nmat * vertex_tangent);
    ex_binormal = normalize(nmat * vertex_binormal);
    
    ex_texcoords0 = vertex_texcoords0;
    
    ex_color = vec4(entitymatrix[0][3],entitymatrix[1][3],entitymatrix[2][3],entitymatrix[3][3]);
    
    //If an object is selected, 10 is subtracted from the alpha color.
    //This is a bit of a hack that packs a per-object boolean into the alpha value.
    ex_selectionstate = 0.0;
    if (ex_color.a<-5.0)
    {
     ex_color.a += 10.0;
     ex_selectionstate = 1.0;
    }
    
    ex_color *= vec4(1.0-vertex_color.r,1.0-vertex_color.g,1.0-vertex_color.b,vertex_color.a) * materialcolordiffuse;
    }
    

     

    This is how the Fragment part looks:

     

    #version 400
    #define BFN_ENABLED 1
    //Uniforms
    uniform sampler2D texture0;//diffuse map
    uniform samplerCube texture15;//BFN map
    uniform vec4 materialcolorspecular;
    uniform vec4 lighting_ambient;
    uniform samplerCube texture4; //cube map for reflection texture from material
    uniform mat3 cameranormalmatrix;  //need normalmatrix from camera for correct reflection in relation to camera rotation
    uniform vec3 cameraposition; //need camera position so we know the distance from the fragment. (pixel)
    //Lighting
    uniform vec3 lightdirection[4];
    uniform vec4 lightcolor[4];
    uniform vec4 lightposition[4];
    uniform float lightrange[4];
    uniform vec3 lightingcenter[4];
    uniform vec2 lightingconeanglescos[4];
    uniform vec4 lightspecular[4];
    //Inputs
    in vec2 ex_texcoords0;
    in vec4 ex_color;
    in float ex_selectionstate;
    in vec3 ex_VertexCameraPosition;
    in vec3 ex_normal;
    in vec3 ex_tangent;
    in vec3 ex_binormal;
    in vec4 ex_vertexposition;
    out vec4 fragData0;
    out vec4 fragData1;
    out vec4 fragData2;
    out vec4 fragData3;
    void main(void)
    {
    vec4 outcolor = ex_color;
    vec4 color_specular = materialcolorspecular;
    vec3 normal = ex_normal;
    //Modulate blend with diffuse map
    outcolor *= texture(texture0,ex_texcoords0);
    vec3 cubecoord = reflect( normalize( ex_vertexposition.xyz - cameraposition ) , normalize(cameranormalmatrix * normal).xyz );  //this is industy standard cubecoordinates for reflection..
    outcolor = mix(outcolor,texture(texture4,cubecoord),0.5); //mix diffuse with cubemap reflection 50%
    
    //Blend with selection color if selected
    fragData0 = outcolor;// * (1.0-ex_selectionstate) + ex_selectionstate * (outcolor*0.5+vec4(0.5,0.0,0.0,0.0));
    
    #if BFN_ENABLED==1
    //Best-fit normals
    fragData1 = texture(texture15,normalize(vec3(normal.x,-normal.y,normal.z)));
    #else
    //Low-res normals
    fragData1 = vec4(normalize(normal)*0.5+0.5,1.0);
    #endif
    fragData1.a = materialcolorspecular.r * 0.299 + materialcolorspecular.g * 0.587 + materialcolorspecular.b * 0.114;
    int materialflags=1;
    if (ex_selectionstate>0.0) materialflags += 2;
    fragData2 = vec4(0.0,0.0,0.0,materialflags/255.0);
    }
    

     

    Maybe I did something wrong?

     

    b.t.w I use 3.1 indi version

  14. Thanks for people that try to help. Was not much that worked but I figured it out my self in the end. This is how the code looks right now handy to know maybe for others:

     

     

    Script.enabled = true --bool "Enabled"
    Script.gravity = false --bool "Gravity"
    Script.movespeed = 1 --Define self.movespeed
    Script.originPosition = nil --Define self.originPosition
    Script.currentPosition = nil --Define self.currentPosition
    Script.oldMass = nil --Define self.oldMass
    Script.window = Window:GetCurrent() --Define self.window
    Script.move = Vec3(0,0,0) --Define self.move
    Script.rotation = "" --Define self.rotation
    Script.ry = 0 --Define self.ry
    Script.speed = "" --Define self.speed
    function Script:Start()
    self.originPosition = self.entity:GetPosition() --Get position of object
    self.oldMass = self.entity:GetMass() --Get mass of object
    if self.entity:GetShadowMode()>0 then
    self.entity:SetShadowMode(2)--Light.Dynamic
    end
    
    if self.enabled then
    if self.entity:GetMass() == 0 then --Get mass and check if bigger then 0
    Debug:Error("Entity mass must be greater than zero.")
    end
    else
    self.entity:SetMass(0)
    end
    self.entity:SetGravityMode(self.gravity) --Set gravity to false
    self.entity:SetFriction(0,1) --Set Friction
    self.move = Vec3(0,0,0) --Set self.move to vector
    end
    function Script:UpdatePhysics() --Loop to update Physics
    self.move = Vec3(0,0,0)
    local movespeed = self.movespeed --Set movespeed to self.movespeed
    self.rotation = self.entity:GetRotation():ToString() --Set self.rotation and make it a string (else it is userdata and will not work)
    self.ry = string.sub(self.rotation,11,15) --Set self.ry with y of rotation (if cuts of x and z)
    self.ry = tonumber(self.ry) --Set self.ry to be a number
    self.ry = math.ceil(self.ry) --Set self.ry to be a round number
    local inRadians = math.rad(self.ry) --Convert degrees to radians
    
    if (self.window:KeyDown(Key.Up)) then self.move.x = -1 * movespeed * math.cos(inRadians) * Time:GetSpeed() end --Look if upper arrow key is pressed and Set value in selfmove.x (x-axis)
    if (self.window:KeyDown(Key.Up)) then self.move.z = movespeed * math.sin(inRadians) * Time:GetSpeed() end --Look if upper arrow key is pressed and Set value in selfmove.z (z-axis)
    if (self.window:KeyDown(Key.Down)) then self.move.x = movespeed * math.cos(inRadians) * Time:GetSpeed() end --Look if lower arrow key is pressed and Set value in selfmove.x (x-axis)
    if (self.window:KeyDown(Key.Down)) then self.move.z = -1 * movespeed * math.sin(inRadians) * Time:GetSpeed() end --Look if lower arrow key is pressed and Set value in selfmove.z (z-axis)
    if (self.window:KeyDown(Key.Right)) then self.move.y= movespeed * Time:GetSpeed() end --Look if right arrow key is pressed and Set value in selfmove.y (y-axis rotation)
    		 if (self.window:KeyDown(Key.Left)) then self.move.y= -1 * movespeed * Time:GetSpeed() end --Look if left arrow key is pressed and Set value in selfmove.y (y-axis rotation)
    
    self.entity:AddForce(self.move.x,0,0) --AddForce with the self.move.x value on x-axis
    self.entity:AddForce(0,0,self.move.z) --AddForce with the self.move.z value on z-axis
    self.entity:AddTorque(0,self.move.y*70,0) --AddTorque with the self.move.y value on y-axis (rotation)
    Time:Update() --Update Time value
    end
    
    function Script:PostRender() --Function to print on game screen
    local context=Context:GetCurrent()
    context:SetBlendMode(Blend.Alpha) --Set blend to alpha so only letters will show
    context:DrawText("Rotation :".. self.ry .."",5,130) --Set text and position of text
    --context:DrawText("Speed :".. self.speed .."",5,140) --Set text and position of text
    end
    

    • Upvote 1
  15. This is the example of how to do it but it is using a child box make in the script it self.

    I want to us the child box as a motor so need a box where a can put the motor script in.

    So how would I us a allready existing box in the Parenting script?

     

    self.entity = Model:Box()
    
        local child = Model:Box(1,1,1)
        child:SetParent(self.entity)
        child:SetColor(1.0,0.0,0.0)
        child:SetPosition(2,-2,0)
    
        child = Model:Box(1,1,1)
        child:SetParent(self.entity)
        child:SetColor(0.0,1.0,0.0)
        child:SetPosition(-2,-2,0)
    
        return true
    
    

  16. sorry don't know how newton engine works, I ment for you to make your own kind of "phisics engine" I also can't help much with scripts as I don't have tools.

    All I have is tools for Unity 3D and knowledge from there.

     

    I'm still waiting for 3.1 to be released, ...

     

    but anyway let say you make boat parent of motor.

     

    now motor is 45° turned

    and boat rotates in direction that motor is for 0.45° each frame.

     

    but because motor is child of boat the motor will stay at 45° and it will not turn.

     

    but boat will turn.

     

     

    well if you want to do with complete physics well good luck with that as people wanted to do it for normal walking and ended up using simulations - too much performance effective, ....

     

    Ok I will try to find out how to make parent and child in leadwerks.

    Thanks for the help so far.

  17. by proper parenting I mean making 2+ objects.

     

    if you rotate the motor you don't want to rotate the boat.

     

    BUT the boat should slowly want to rotate in direction of witch the motor is or is it inverse direction, not sure, ...

    how fast it would turn you have to adjust that numbers in script.

     

    I try to do that with a hinge in my first script but. I am not so good with the hinge command and dont see alot of examples.

    Also did not get alot of feedback on that script it is at top of this post. I would like it if you could tell me how to couple 2 boxes one to be motor and one the boat then the newton engine could do its work and it would be simple.

×
×
  • Create New...