Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
physics [2020/05/24 13:25] – [Callbacks] adminphysics [2020/05/24 13:28] – [Remote-Control] admin
Line 210: Line 210:
 procedure TUIMainWin.doOnBeginContact(const ABodyA, ABodyB : TQ3Body); procedure TUIMainWin.doOnBeginContact(const ABodyA, ABodyB : TQ3Body);
 begin begin
 +    if not Assigned(ABodyA.UserDataType) then
 +      Exit;
 +    if not Assigned(ABodyB.UserDataType) then
 +      Exit;      
 +      
     if TComponent(ABodyA.UserData).Name.Equals('Cube1') and TComponent(ABodyB.UserData).Name.Equals('Sphere2') then     if TComponent(ABodyA.UserData).Name.Equals('Cube1') and TComponent(ABodyB.UserData).Name.Equals('Sphere2') then
     begin     begin
       FMX.Types.Log.D('expected collision between %s <=> %s',        FMX.Types.Log.D('expected collision between %s <=> %s', 
         [TComponent(ABodyA.UserData).Name, TComponent(ABodyB.UserData).Name]);         [TComponent(ABodyA.UserData).Name, TComponent(ABodyB.UserData).Name]);
 +    end
 +    else
 +    begin
 +      FMX.Types.Log.D('<ERROR> unexpected collision between %s <=> %s', 
 +        [ABodyA.UserDataType^.Name, ABodyB.UserDataType^.Name]);
     end;     end;
  end;  end;
Line 230: Line 240:
  
 **__CAUTION:__ By this methods you can influence physical mechanics so heavily, that overstep bounds / limits, which may lead to unexpected behaviour.** **__CAUTION:__ By this methods you can influence physical mechanics so heavily, that overstep bounds / limits, which may lead to unexpected behaviour.**
 +
 +<file pascal>
 +GorillaPhysicsSystem1.RemoteBodyImpulse(GorillaCube1, Point3D(0, -1, 0));
 +</file>
  
 Next step: [[fmodaudio|FMOD Audio]] Next step: [[fmodaudio|FMOD Audio]]