blob: 9bd81265631cd62916c149f283a0817dda60352e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#ifndef CC_BLOCKPHYSICS_H
#define CC_BLOCKPHYSICS_H
#include "Core.h"
/* Implements simple block physics.
Copyright 2014-2023 ClassiCube | Licensed under BSD-3
*/
typedef void (*PhysicsHandler)(int index, BlockID block);
CC_VAR extern struct Physics_ {
/* Whether block physics are enabled at all. */
cc_bool Enabled;
/* Called when block is activated by a neighbouring block change. */
/* e.g. trigger sand falling, water flooding */
PhysicsHandler OnActivate[256];
/* Called when this block is randomly activated. */
/* e.g. grass eventually fading to dirt in darkness */
PhysicsHandler OnRandomTick[256];
/* Called when user manually places a block. */
PhysicsHandler OnPlace[256];
/* Called when user manually deletes a block. */
PhysicsHandler OnDelete[256];
} Physics;
void Physics_SetEnabled(cc_bool enabled);
void Physics_OnBlockChanged(int x, int y, int z, BlockID old, BlockID now);
void Physics_Init(void);
void Physics_Free(void);
void Physics_Tick(void);
#endif
|